Implementación del servidor MCP
Nombre: Esteban Nicolas ID de estudiante: A20593170
I. Capacidades MCP implementadas
1 Recursos de datos 1.1 Listado de archivos HDF5
- Enumera archivos HDF5 simulados en una estructura de directorio
- Parámetros:
path_pattern
(patrón de ruta de archivo opcional)
2 Herramientas 2.1 Envío de trabajos de Slurm
- Simula el envío de un trabajo a un programador Slurm
- Parámetros:
script_path
(obligatorio),cores
(opcional, valor predeterminado=1)
2.2 Informes de núcleos de CPU
- Informa el número de núcleos de CPU disponibles en el sistema
- No se requieren parámetros
2.3 Visualización CSV
- Traza dos columnas de un archivo CSV (el valor predeterminado son las dos primeras columnas)
- Parámetros:
csv_path
(obligatorio),column x
,column y
(ambas opcionales)
II. Instrucciones de configuración
- Crear entorno virtual
uv venv -p python3.10 .venv\Scripts\activate # En Unix: source .venv/bin/activate
- Instalar dependencias
sincronización UV bloqueo UV
- Configuración del entorno: El proyecto utiliza pyproject.toml para la gestión de dependencias. Las dependencias clave incluyen:
API rápida
Uvicornio
Pydantic
Pandas
Matplotlib
Pytest
Pytest-ascyncio
- Ejecución del servidor MCP
Iniciar el servidor cd src uvicorn server:app --reload
El servidor estará disponible en:
Punto final de la API: http://localhost:8000/mcp Comprobación del estado: http://localhost:8000/health
III Pruebas
- Ejecutar todas las pruebas:
pruebas de pytest/Ejecutar archivo de prueba específico:
pruebas de pytest/test_capabilities_plot_vis.py pruebas de pytest/test_capabilities_hdf5.py pruebas de pytest/test_capabilities_cpu_core.py pruebas de pytest/test_capabilities_slurm.py pruebas de pytest/test_mcp_handler.py
- Solicitudes de ejemplo 2.1 Lista de recursos disponibles
curl -X POST http://localhost:8000/mcp
-H "Tipo de contenido: aplicación/json"
-d '{"jsonrpc":"2.0","método":"mcp/listResources","id":1}'
2.2 Lista de archivos HDF5
curl -X POST http://localhost:8000/mcp
-H "Tipo de contenido: aplicación/json"
-d '{"jsonrpc":"2.0","método":"mcp/callTool","parámetros":{"herramienta":"lista_de_archivos_hdf5","patrón_de_ruta":"/data/sim_run_123"},"id":2}'
2.3 Enviar trabajo de Slurm
curl -X POST http://localhost:8000/mcp
-H "Tipo de contenido: aplicación/json"
-d '{"jsonrpc":"2.0","método":"mcp/callTool","parámetros":{"herramienta":"slurm_job_submission","ruta_de_script":"/jobs/analysis.sh","núcleos":4},"id":3}'
2.4 Trazar columnas CSV
curl -X POST http://localhost:8000/mcp
-H "Tipo de contenido: aplicación/json"
-d '{"jsonrpc":"2.0","método":"mcp/callTool","parámetros":{"herramienta":"plot_vis_columns","csv_path":"data.csv","columna x":"tiempo","columna y":"temperatura"},"id":4}'
IV Notas de implementación
- Implementaciones simuladas:
-El listado de archivos HDF5 utiliza una estructura de directorio simulada -El envío de trabajos de Slurm genera identificadores de trabajos simulados -Los informes de núcleos de CPU utilizan os.cpu_count()
- Visualización CSV:
-Crea gráficos en un directorio plots_results -El valor predeterminado son las dos primeras columnas si no se especifica ninguna -Devuelve la ruta al archivo PNG generado
- Manejo de errores:
-Respuestas de error JSON-RPC 2.0 adecuadas -Validación de entrada para todos los parámetros -Manejo elegante de archivos faltantes/rutas no válidas
This server cannot be installed
Una implementación de servidor JSON-RPC 2.0 basada en FastAPI que permite a los usuarios trabajar con archivos HDF5, enviar trabajos Slurm, recuperar información de la CPU y visualizar datos CSV a través de puntos finales de API estandarizados.