Resumen
Using an MCP server that integrates with FlashBlade allows you to query system data and even take direct actions, unlocking a new frontier in agentic storage management.
La administración del almacenamiento en las instalaciones ha sido tradicionalmente un proceso tedioso y manual: consultar las métricas del sistema, monitorear el rendimiento y ejecutar acciones a menudo requiere scripts complejos o herramientas especializadas. Pero, ¿qué sucedería si simplemente pudiera pedir la información que necesita en inglés simple y obtener información inmediata y procesable?
Allí es donde entra en juego el Protocolo de contexto del modelo (MCP). MCP es un protocolo abierto que permite que los modelos de lenguaje grande (LLM) interactúen de manera inteligente con las aplicaciones, lo que aporta capacidades de lenguaje natural a la administración del almacenamiento. En este blog, le mostraremos cómo crear un servidor MCP que se integre con Pure Storage® FlashBlade®, lo que le permitirá consultar datos del sistema e incluso tomar medidas directas, todo a través de una interfaz intuitiva impulsada por AI.
Al modular nuestro enfoque, estamos desbloqueando una nueva frontera en la administración del almacenamiento agente, donde la automatización no solo es eficiente, sino también conversacional y adaptativa. Profundicemos.
Nuestro objetivo para estas acciones es una matriz de Pure Storage, específicamente un sistema FlashBlade, pero los principios también se aplican a los sistemas FlashArray™. Al usar la aplicación de escritorio Claude, nuestras consultas usarán las herramientas proporcionadas por el servidor MCP para interactuar con la matriz designada de Pure Storage según esta captura de pantalla:
Creación de un servidor MCP
El primer paso es instalar el administrador de paquetes uv Python. Para obtener instrucciones de instalación, consulte la guía oficial.
A continuación, debemos crear la estructura del servidor MCP. Para esto, utilizaremos las herramientas proporcionadas dentro del paquete uv:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
% uvx create–mcp–server Creating a new MCP server project using uv. This will set up a Python project with MCP dependency. Let‘s begin! Project name (required): pure–mcp–server Project description [A MCP server project]: A MCP server to retrieve realtime information from a Pure Storage FlashBlade Project version [0.1.0]: Project will be created at: /Users/jthomas/mcp/pure–mcp–server Is this correct? [Y/n]: Y .... Claude.app detected. Would you like to install the server into Claude.app now? [Y/n]: Y ✅ Added pure–mcp–server to Claude.app configuration Settings file location: /Users/jthomas/Library/Application Support/Claude/claude_desktop_config.json ✅ Created project pure–mcp–server in pure–mcp–server ℹ️ To install dependencies run: cd pure–mcp–server uv sync —dev —all–extras |
Continúe con los pasos finales indicados para instalar las dependencias y nuestro servidor MCP de esqueleto estará listo. El código fuente que debemos modificar se encuentra en pure-mcp-server/src/pure-mcp-server. En este punto, el código es para una herramienta de notas adicionales de plantilla. Modificaremos esto para interactuar con una matriz FlashBlade de Pure Storage en las instalaciones.
Desde la carpeta del proyecto, ingresamos en el entorno virtual de Python que fue creado automáticamente por uv e instalamos el SDK de Python de Pure Storage, ya que lo aprovecharemos para interactuar con la API REST de FlashBlade.
1 2 |
% source .venv/bin/activate (pure–mcp–server) % uv pip install py–pure–client |
Luego, agregamos el código relevante para crear dos herramientas de MCP para ejecutar consultas contra los puntos finales de una matriz FlashBlade determinada:
- get_arrays
- get_arrays y get_arrays_performance
El servidor MCP se agregó automáticamente al escritorio de Claude durante la fase de inicialización. Para verificar, abra el siguiente archivo y verifique que la entrada sea correcta:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
cat /Users/jthomas/Library/Application\ Support/Claude/claude_desktop_config.json { “mcpServers”: { “pure-mcp-server”: { “command”: “uv”, “args”: [ “–directory”, “/path/to/folder/pure-mcp-server”, “run”, “pure-mcp-server” ] } } } |
Además del inspector de MCP, utilizamos el siguiente guión para validar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import asyncio from mcp.client.session import ClientSession from mcp.client.stdio import StdioServerParameters, stdio_client async def main(): async with stdio_client( StdioServerParameters(command=“uv”, args=[“–directory”, “/Users/jthomas/mcp/pure-mcp-server”, “run”, “pure-mcp-server”]) ) as (read, write): async with ClientSession(read, write) as session: await session.initialize() # List available tools tools = await session.list_tools() print(tools) # Call the fetch tool result = await session.call_tool(“get-array”, {“host”: “1.2.3.4”, “api_token”: “T-da03****1a98”}) print(result) asyncio.run(main()) |
Este código enumera correctamente mis herramientas del servidor MCP. También se conecta a la matriz remota, realiza la llamada API necesaria y devuelve la cadena JSON relevante.
Ahora, a través de la aplicación de escritorio Claude, podemos ejecutar consultas utilizando las herramientas del servidor MCP contra Pure Storage FlashBlade:
Y con la herramienta de armado completo, pregunte sobre el espacio de almacenamiento:
Tenga en cuenta que esta es una matriz de laboratorio bastante inactiva, pero se pueden hacer preguntas de seguimiento, como las siguientes:
“Cree un gráfico para mostrar el rendimiento de los últimos 7 días en función del valor de tiempo por período métrico. Convierta los resultados de rendimiento del período y del grupo por día”.
Ejecución de una herramienta de MCP modular
El código hasta el momento proporciona una integración básica para las llamadas con codificación fija según la definición de la herramienta del servidor MCP, pero es posible que deseemos enviar acciones y recuperar información. Tener una herramienta de MCP por solicitud no es un enfoque deseable; debemos cambiar de una llamada de API de REST con código duro como get_arrays a un enfoque modular en el que acepte cualquier llamada de punto final como parámetro a través de una única herramienta de pure-fb para usar para cualquier punto final.
El código completo se puede encontrar en este repositorio de GitHub.
Uso
Con nuestro nuevo servidor MCP, podemos ejecutar consultas informativas, como las siguientes:
“Use pure-fb en el host: 1.2.3.4 con token de API: T-7c7a*****f23e para ejecutar el comando: get_file_systems y luego el comando: get_buckets. Ordene los elementos por tamaño utilizado e indique para cada uno si es un cubo etiquetando el elemento como “s3” o un sistema de archivos etiquetando el elemento como “fs”. Asegúrese de ordenar correctamente por orden descendente según el tamaño usado y enumere los 5 primeros por espacio usado”.
Esto genera el siguiente resultado:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
I‘ll help you retrieve and analyze the file systems and buckets information from your FlashBlade. View result from pure–fb from pureflashblade (local){} View result from pure–fb from pureflashblade (local){} Here are the top 5 storage items (combining both file systems and buckets) sorted by used space in descending order: lbo–outscale–perfs [fs]: 7,240,575,042,227 bytes (7.24 TB) lbo–vertica [fs]: 3,311,892,804,361 bytes (3.31 TB) dm [fs]: 2,213,617,471,583 bytes (2.21 TB) lbo–hdf5 [fs]: 1,643,315,388,928 bytes (1.64 TB) eg–px–share01 [fs]: 869,598,847,641 bytes (869.6 GB) As we can see, the top 5 spots are all occupied by file systems, with the largest being lbo–outscale–perfs at 7.24 TB. For reference, the largest bucket (cvlt–uklab–object–lock at 265.1 GB) would rank much lower in this combined list. |
Con este enfoque modular, podemos consultar cualquier punto final (obtener matrices, cubos, sistemas de archivos, etc.) para recuperar información y tomar medidas en la matriz. Por ejemplo, ejecutaremos un simple comando de creación de bucket usando la siguiente consulta:
“Use pure-fb en el host: 1.2.3.4 con token de API: T-7c7a*****f23e y el comando post_buckets con los parámetros: names=[“jbtmcptest”], bucket=BucketPost(account=Reference(name=’jbt’)) ”
En la matriz FlashBlade de Pure Storage, podemos ver que el grupo relevante ahora está presente:
Y con esta consulta, creamos un sistema de archivos. Tenga en cuenta que en este ejemplo, no proporcionamos el punto final específico. Dejamos esto en manos de LLM para averiguar:
“Cree un sistema de archivos utilizando los siguientes parámetros: nombres=[“jbt-myfs”], file_system=FileSystemPost(provisioned=5000, hard_limit_enabled=True, nfs=Nfs(v4_1_enabled=True), smb=Smb(habilitado=Verdadero), multi_protocol=MultiProtocolPost(access_control_style=”nfs”))”
Podemos ver que ClaudeAI pudo proporcionar el comando correcto post_file_system para ejecutar esta solicitud.
Cómo establecer la indicación para actuar como agente
Ahora agregaremos algo de contexto al chat y definiremos el comportamiento y las capacidades de un agente de almacenamiento que tiene dos matrices que controlar:
“Usted es un agente de administración de almacenamiento inteligente que, a través de la herramienta de fb pura, puede administrar las siguientes dos matrices:
array01 en host: 1.2.3.4 con token de API: T-7c7a*****f23e
array02 en host: 1.2.3.5 con token de API: T-f2e0*****3b8d”
Con este agente de almacenamiento definido, podemos ejecutar consultas contra ambas matrices, como:
“Obtenga todos los cubos de ambas matrices, nombre de extracto, total_used espacio sin procesar y matriz de origen en una sola lista. Ordene estrictamente según los total_used valores brutos sin conversiones. Proporcione los 15 primeros de la lista y convierta el espacio usado en unidades adecuadas para su visualización”.
Nuestro agente comienza por recopilar los datos relevantes usando get_buckets y get_file_systems contra las dos matrices:
El agente procede a ordenar los cubos por espacio utilizado según lo solicitado. Tenga en cuenta que se necesitaron varios intentos para obtener la indicación de que la clasificación fuera correcta.
Desde la administración del almacenamiento impulsada por CLI hasta AI la AI
Con un servidor MCP, hemos transformado la administración del almacenamiento en las instalaciones de un proceso rígido impulsado por la línea de comandos a una experiencia de lenguaje natural asistida por AI. Al unir los LLM con el almacenamiento empresarial, ya no solo recuperamos datos, sino que estamos comandando nuestra infraestructura de forma dinámica, reduciendo la complejidad y abriendo la puerta a flujos de trabajo más inteligentes y eficientes.
Pero esto es solo el comienzo. La automatización de agentes está remodelando la tecnología empresarial y el almacenamiento no es la excepción. A medida que estas capacidades evolucionan, avanzamos hacia un futuro en el que la administración del almacenamiento impulsada por AI no solo sea una conveniencia, sino una ventaja competitiva. La pregunta no es si este se convertirá en el nuevo estándar, es lo pronto.
¿Está listo para dar el siguiente paso?
Free Test Drive
Explore FlashBlade in our virtual lab.