MCP System Monitor Server
Un servidor multiplataforma para la monitorización en tiempo real de información de CPU, GPU, memoria, disco, red y procesos.
Documentación
MCP System Monitor Server
Un servidor MCP (Model Context Protocol) multiplataforma que proporciona capacidades integrales de monitoreo del sistema en tiempo real para LLMs. Construido con FastMCP para una fácil integración con Claude Desktop y otros clientes compatibles con MCP.
Características
Monitoreo del Sistema
Monitoreo Básico del Sistema:
- Monitoreo de CPU: Uso en tiempo real, estadísticas por núcleo, frecuencia, temperatura, información detallada del procesador (modelo, fabricante, arquitectura, tamaños de caché)
- Monitoreo de GPU: Soporte multi-fabricante de GPU (NVIDIA con métricas completas, Apple Silicon con soporte integral que incluye memoria unificada y número de núcleos, AMD/Intel con información básica)
- Monitoreo de Memoria: Uso de RAM y swap, estadísticas de disponibilidad
- Monitoreo de Disco: Uso de espacio, información del sistema de archivos para todas las unidades montadas
- Estadísticas de Red: Tráfico a nivel de interfaz y contadores de errores
- Monitoreo de Procesos: Procesos principales por uso de CPU/memoria
- Información del Sistema: Detalles del SO, nombre de host, tiempo de actividad, arquitectura
Monitoreo de Rendimiento Fase 1:
- Rendimiento de E/S: Métricas detalladas de E/S de disco, tasas de lectura/escritura, estadísticas por disco, análisis de tiempo de ocupación
- Carga del Sistema: Promedios de carga (1m, 5m, 15m), cambios de contexto, interrupciones, procesos en ejecución/bloqueados
- Memoria Mejorada: Estadísticas detalladas de memoria que incluyen buffers, caché, memoria activa/inactiva, fallos de página, actividad de swap
- Red Mejorada: Métricas de rendimiento de red con tasas de transferencia, errores, descartes, velocidad de interfaz y MTU
Herramientas MCP Disponibles
Monitoreo Básico del Sistema (9 herramientas):
get_current_datetime: Obtener la fecha y hora local actual en formato ISOget_cpu_info: Obtener el uso y las estadísticas actuales de CPUget_gpu_info: Obtener información de GPU para todas las GPU detectadasget_memory_info: Obtener el uso de RAM y swapget_disk_info: Obtener el uso de disco para todas las unidades montadasget_system_snapshot: Obtener el estado completo del sistema en una sola llamadamonitor_cpu_usage: Monitorear el uso de CPU durante una duración especificadaget_top_processes: Obtener los procesos principales por uso de CPU o memoriaget_network_stats: Obtener estadísticas de interfaz de red
Monitoreo de Rendimiento Fase 1 (6 herramientas):
get_io_performance: Obtener métricas y tasas detalladas de rendimiento de E/Sget_system_load: Obtener promedios de carga del sistema y estadísticas de procesosget_enhanced_memory_info: Obtener estadísticas detalladas de memoria con cachés/buffersget_enhanced_network_stats: Obtener métricas mejoradas de rendimiento de redget_performance_snapshot: Obtener una instantánea completa de monitoreo de rendimientomonitor_io_performance: Monitorear el rendimiento de E/S durante una duración especificada con análisis de tendencias
Recursos MCP
Recursos Básicos del Sistema (3 recursos):
system://live/cpu: Datos de uso de CPU en vivosystem://live/memory: Datos de uso de memoria en vivosystem://config: Configuración del sistema e información de hardware
Recursos de Rendimiento Fase 1 (3 recursos):
system://performance/io: Datos de rendimiento de E/S en vivosystem://performance/load: Datos de carga del sistema en vivosystem://performance/network: Datos de rendimiento de red en vivo
Detalles de Soporte de GPU
GPUs NVIDIA:
- Métricas completas: porcentaje de uso, memoria (usada/total), temperatura, consumo de energía
- Soporta múltiples GPUs NVIDIA
- Requiere controladores NVIDIA y bibliotecas NVML
GPUs Apple Silicon:
- Soporte integral para chips M1, M2 y M3
- Detección del número de núcleos de GPU
- Informe de memoria unificada (comparte la RAM del sistema)
- Detección de soporte de la API Metal
- Monitoreo de temperatura (cuando esté disponible)
GPUs AMD/Intel:
- Detección e identificación básica
- Métricas limitadas según la plataforma y los controladores
Requisitos
- Python 3.10+
- Windows, macOS o Linux
- GPU (opcional): GPUs NVIDIA para métricas completas, GPUs Apple Silicon totalmente compatibles en macOS
Instalación
Desde GitHub
-
Clonar el repositorio:
git clone https://github.com/huhabla/mcp-system-monitor.git cd mcp-system-monitor -
Instalar las dependencias usando uv (recomendado):
uv pip install -e .O usando pip:
pip install -e .
Dependencias Opcionales
Para características específicas de Windows:
pip install mcp-system-monitor[win32]
Uso
Modo de Desarrollo
Probar el servidor con el MCP Inspector:
uv run mcp dev mcp_system_monitor_server.py
Integración con Claude Desktop
Instalar el servidor en Claude Desktop:
uv run mcp install mcp_system_monitor_server.py --name "System Monitor"
Ejecución Directa
Ejecutar el servidor directamente:
python mcp_system_monitor_server.py
Configuración JSON de Servidores MCP
Modifique la siguiente plantilla JSON para establecer la ruta al servidor MCP en su cliente MCP para Windows:
{
"mcpServers": {
"mpc-system-monitor": {
"command": "cmd",
"args": [
"/c",
"C:/Users/Sören Gebbert/Documents/GitHub/mcp-system-monitor/start_mpc_system_monitor.bat"
]
}
}
}
Modifique la siguiente plantilla JSON para establecer la ruta al servidor MCP en su cliente MCP para MacOS:
{
"mcpServers": {
"mpc-system-monitor": {
"command": "/bin/zsh",
"args": [
"/Users/holistech/Documents/GitHub/mcp-system-monitor/start_mcp_system_monitor.sh"
]
}
}
}
Ejemplo de Uso de Herramientas
Una vez conectado a Claude Desktop u otro cliente MCP, puede usar lenguaje natural para interactuar con el monitor del sistema:
Monitoreo Básico del Sistema:
- "Muéstrame el uso actual de CPU"
- "¿Cuál es la temperatura de mi GPU?"
- "¿Cuántos núcleos de GPU tiene mi Apple M1 Max?"
- "Muéstrame el uso de memoria de la GPU y si es memoria unificada"
- "¿Cuánto espacio de disco está disponible?"
- "Monitorea el uso de CPU durante los próximos 10 segundos"
- "Muéstrame los 5 procesos principales por uso de memoria"
- "Obtén una instantánea completa del sistema"
Monitoreo de Rendimiento Fase 1:
- "Muéstrame métricas detalladas de rendimiento de E/S"
- "¿Cuál es el promedio de carga actual del sistema?"
- "Monitorea el rendimiento de E/S durante los próximos 30 segundos"
- "Muéstrame estadísticas de memoria mejoradas con información de caché"
- "Obtén métricas detalladas de rendimiento de red"
- "Dame una instantánea completa del rendimiento"
Arquitectura
El servidor utiliza una arquitectura modular basada en coleccionistas:
- BaseCollector: Clase base abstracta que proporciona almacenamiento en caché y recopilación de datos asíncrona
- Coleccionistas Especializados: Coleccionistas de CPU, GPU, Memoria, Disco, Red, Procesos y Sistema
- Coleccionistas de Rendimiento Fase 1: Coleccionistas IOPerformance, SystemLoad, EnhancedMemory y EnhancedNetwork
- Modelos Pydantic: Modelos de datos con seguridad de tipos para toda la información del sistema
- Integración FastMCP: Decoradores simples para exponer herramientas y recursos
Estrategia de Caché
Todos los coleccionistas implementan caché inteligente para:
- Reducir la sobrecarga del sistema por sondeos frecuentes
- Proporcionar datos consistentes dentro de ventanas de tiempo
- Permitir una expiración de caché configurable
Pruebas
Suite de Pruebas Integral
El proyecto incluye una suite de pruebas integral con 100% de cobertura de todas las herramientas MCP, recursos y coleccionistas:
Organización de Pruebas:
test_mcp_system_monitor_server.py- Pruebas originales de coleccionistas básicostest_mcp_system_monitor_server_comprehensive.py- Pruebas integrales de herramientas/recursos MCPtest_mcp_server_integration.py- Pruebas de integración para el cumplimiento del protocolo del servidor MCPtest_architecture_agnostic.py- Pruebas multiplataforma centradas en contratos de datosconftest.py- Configuración de pruebas, fixtures y utilidades de simulación
Ejecución de Pruebas
Ejecutar todas las pruebas:
pytest
Ejecutar pruebas por categoría:
pytest -m unit # Fast unit tests only
pytest -m integration # Integration tests only
pytest -m agnostic # Architecture/OS agnostic tests
pytest -m "not slow" # Exclude slow tests
pytest -m "unit and not slow" # Fast unit tests for CI
Ejecutar suites de pruebas específicas:
pytest tests/test_mcp_system_monitor_server_comprehensive.py # All MCP endpoints
pytest tests/test_mcp_server_integration.py # Integration tests
pytest tests/test_architecture_agnostic.py # Cross-platform tests
Ejecutar con cobertura:
pytest --cov=mcp_system_monitor_server --cov-report=html
Cobertura de Pruebas
Cobertura Completa:
- 15 Herramientas MCP (9 básicas + 6 de rendimiento Fase 1)
- 6 Recursos MCP (3 básicos + 3 de rendimiento Fase 1)
- 11 Coleccionistas (7 básicos + 4 de rendimiento Fase 1)
- Pruebas de compatibilidad multiplataforma
- Evaluación comparativa de rendimiento y pruebas de estrés
- Manejo de errores y validación de casos límite
Evaluaciones Comparativas de Rendimiento:
- Recopilación de instantánea del sistema: < 5 segundos
- Llamadas de herramientas individuales: < 1 segundo cada una
- Operaciones concurrentes: 20 llamadas paralelas < 10 segundos
Soporte de Plataformas
| Característica | Windows | macOS | Linux |
|---|---|---|---|
| Monitoreo de CPU | ✅ | ✅ | ✅ |
| Monitoreo de GPU (NVIDIA) | ✅ | ✅ | ✅ |
| Monitoreo de GPU (AMD) | ⚠️ | ❌ | ⚠️ |
| Monitoreo de GPU (Intel) | ⚠️ | ❌ | ⚠️ |
| Monitoreo de GPU (Apple) | ❌ | ✅ | ❌ |
| Monitoreo de Memoria | ✅ | ✅ | ✅ |
| Monitoreo de Disco | ✅ | ✅ | ✅ |
| Estadísticas de Red | ✅ | ✅ | ✅ |
| Monitoreo de Procesos | ✅ | ✅ | ✅ |
| Temperatura de CPU | ⚠️ | ⚠️ | ✅ |
⚠️ = Soporte limitado, depende del hardware/controladores
Solución de Problemas
El Monitoreo de GPU No Funciona
GPUs NVIDIA:
- Asegúrese de que los controladores NVIDIA estén instalados
- Verifique si el comando
nvidia-smifunciona - El servidor manejará correctamente la ausencia de bibliotecas de GPU
GPUs Apple Silicon:
- Compatible con macOS con chips M1, M2 y M3
- Proporciona información integral que incluye memoria unificada y número de núcleos de GPU
- Utiliza el comando
system_profiler(disponible por defecto en macOS)
Errores de Permisos
- Alguna información del sistema puede requerir privilegios elevados
- El servidor maneja los errores de permisos correctamente y omite los recursos inaccesibles
Alto Uso de CPU
- Ajuste la frecuencia de monitoreo modificando los intervalos de actualización del coleccionista
- Use métodos de datos en caché para reducir las llamadas al sistema
- La expiración de caché predeterminada es de 2 segundos para la mayoría de los coleccionistas
- Considere aumentar el parámetro
max_ageen las llamadas aget_cached_data()para actualizaciones menos frecuentes
Consideraciones de Rendimiento
- El servidor utiliza caché inteligente para minimizar las llamadas al sistema
- Cada coleccionista mantiene su propia caché con expiración configurable
- Las herramientas de monitoreo continuo (como
monitor_cpu_usage) omiten la caché para datos en tiempo real - Para sondeos de alta frecuencia, considere usar los endpoints de recursos que aprovechan la caché
Contribuciones
¡Las contribuciones son bienvenidas! No dude en enviar un Pull Request.
Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulte el archivo LICENSE para más detalles.
Agradecimientos
- Construido con FastMCP
- Monitoreo del sistema mediante psutil
- Soporte de GPU NVIDIA mediante nvidia-ml-py