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 gestión del almacenamiento local ha sido tradicionalmente un proceso tedioso y manual —la consulta de las métricas del sistema, la supervisión del rendimiento y la ejecución de acciones a menudo requieren scripts complejos o herramientas especializadas. Pero ¿y si pudiera simplemente pedir la información que necesita en un lenguaje sencillo y obtener información inmediata y procesable?
Ahí es donde entra en juego el Protocolo de Contexto 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 proporciona funcionalidades de lenguaje natural a la gestión del almacenamiento. En este blog, le mostraremos cómo crear un servidor MCP que se integre con FlashBlade® de Pure Storage®, lo que le permitirá consultar los datos del sistema e incluso tomar medidas directas, todo ello a través de una interfaz intuitiva y basada en la IA.
Al modularizar nuestro enfoque, estamos desbloqueando una nueva frontera en la gestión del almacenamiento agente, en la que la automatización no solo es eficiente, sino también conversacional y adaptativa. Profundicemos.
Nuestro objetivo para estas acciones es una cabina de Pure Storage, específicamente un sistema FlashBlade, pero los principios también son aplicables a los sistemas FlashArray™. Usando la aplicación de escritorio Claude, nuestras consultas utilizarán las herramientas proporcionadas por el servidor MCP para interactuar con la cabina 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 ver las instrucciones de instalación, consulte la guía oficial.
A continuación, tenemos que crear la estructura de servidor MCP. Para ello, utilizaremos las herramientas proporcionadas en el 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 |
Proceda con los pasos finales indicados para instalar las dependencias y nuestro servidor MCP de esqueleto estará listo. El código fuente que tenemos que modificar se encuentra debajo de pure-mcp-server/src/pure-mcp-server. En este punto, el código es para una herramienta de notas adicionales de plantilla. Lo modificaremos para interactuar con una cabina FlashBlade de Pure Storage local.
Desde la carpeta del proyecto, entramos en el entorno virtual de Python 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, añadimos el código pertinente para crear dos herramientas MCP para ejecutar consultas en los puntos de conexión de una cabina FlashBlade determinada:
- get_arrays
- get_arrays y get_arrays_performance
El servidor MCP se añadió automáticamente al escritorio de Claude durante la fase de inicialización. Para verificarlo, abra el siguiente archivo y compruebe que la entrada es 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 MCP, utilizamos el siguiente script 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 de servidor MCP. También se conecta a la cabina 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 usando las herramientas de servidor MCP en un FlashBlade de Pure Storage concreto:
Y con la herramienta get-array-full, pregunte por el espacio de almacenamiento:
Tenga en cuenta que esta es una cabina de laboratorio bastante inactiva, pero se pueden hacer preguntas de seguimiento, como:
“Cree un gráfico para mostrar el rendimiento de los últimos 7 días basándose en el valor de tiempo de época por métrica. Convierta los resultados de rendimiento de época y de grupo al día”.
Ejecución de una herramienta MCP modular
El código hasta ahora proporciona una integración básica para las llamadas codificadas según la definición de la herramienta del servidor MCP, pero es posible que deseemos enviar acciones y recuperar información. Disponer de una herramienta MCP por solicitud no es un enfoque deseable —debemos pasar de una llamada API REST codificada 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 pure-fb para usar en cualquier punto final.
El código completo puede encontrarse en este repositorio de GitHub.
Uso
Con nuestro nuevo servidor MCP instalado, podemos ejecutar consultas informativas, como:
«Utilice pure-fb en el host: 1.2.3.4 con token api: T-7c7a*****f23e para ejecutar el comando: get_file_systems y luego el comando: get_buckets. Ordene los elementos por tamaño usado 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 clasificar correctamente por orden descendente en función del tamaño utilizado y enumere los 5 primeros por espacio utilizado”.
Esto da como resultado 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 terminal (conseguir cabinas, cubos, sistemas de archivos, etc.) para recuperar información y tomar medidas en la cabina. Por ejemplo, ejecutaremos un comando sencillo de creación de cubo usando la siguiente consulta:
«Utilice pure-fb en el host: 1.2.3.4 con token api: T-7c7a*****f23e y el comando post_buckets con los parámetros: names=[“jbtmcptest”], bucket=BucketPost(account=Reference(name=’jbt’)) ”
En la cabina FlashBlade de Pure Storage, podemos ver que el cubo correspondiente está ahora presente:
Y con esta consulta, creamos un sistema de archivos. Tenga en cuenta que en este ejemplo, no damos el punto final específico. Lo dejamos al LLM para que averigüe:
“Cree un sistema de archivos usando los siguientes parámetros: names=[“jbt-myfs”], file_system=FileSystemPost(provisioned=5000, hard_limit_enabled=True, nfs=Nfs(v4_1_enabled=True), smb=Smb(enabled=True), multi_protocol=MultiProtocolPost(access_control_style=”nfs”))”
Podemos ver que ClaudeAI ha podido proporcionar el comando correcto post_file_system para ejecutar esta solicitud.
Cómo establecer la decisión de actuar como agente
Ahora añadiremos algo de contexto al chat y definiremos el comportamiento y las capacidades de un agente de almacenamiento que tiene dos cabinas para controlar:
«Usted es un agente de gestión del almacenamiento inteligente que, a través de la herramienta pure-fb, puede gestionar las dos cabinas siguientes:
array01 en host: 1.2.3.4 con token api: T-7c7a*****f23e
array02 en host: 1.2.3.5 con token api: T-f2e0*****3b8d”
Con este agente de almacenamiento definido, podemos ejecutar consultas en ambas cabinas, como:
«Obtenga todos los cubos de ambas cabinas, extraiga el nombre, el total_used espacio bruto y la cabina de origen en una única lista. Clasifique estrictamente en función de los total_used valores brutos sin ninguna conversión. Proporcione los 15 primeros de la lista y convierta el espacio usado en unidades adecuadas para su visualización”.
Nuestro agente empieza recopilando los datos relevantes usando get_buckets y get_file_systems comparándolos con las dos cabinas:
El agente procede a ordenar los cubos por espacio usado según lo solicitado. Tenga en cuenta que se necesitaron varios intentos para que la ordenación fuera correcta.
De la gestión del almacenamiento basada en CLI a la asistida por IA
Con un servidor MCP, hemos transformado la gestión del almacenamiento local de un proceso rígido basado en una línea de comandos a una experiencia de lenguaje natural asistida por IA. Al unir los LLM con el almacenamiento empresarial, ya no solo recuperamos datos, sino que estamos dirigiendo nuestra infraestructura dinámicamente, reduciendo las complejidades y abriendo las puertas a unos flujos de trabajo más inteligentes y eficientes.
Pero esto es solo el principio. La automatización agente está remodelando la tecnología empresarial y el almacenamiento no es una excepción. A medida que estas capacidades evolucionan, avanzamos hacia un futuro en el que la gestión del almacenamiento impulsada por la IA no es solo una comodidad, sino una ventaja competitiva. La pregunta no es si esto se convertirá en el nuevo estándar, es lo pronto que será.
¿Está preparado para dar el siguiente paso?
Free Test Drive
Explore FlashBlade in our virtual lab.