System Information MCP Server
Proporciona información y métricas del sistema en tiempo real, incluyendo CPU, memoria, disco, red y estado de procesos.
Documentación
System Information MCP Server
Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona información y métricas del sistema en tiempo real. Este servidor expone el uso de CPU, estadísticas de memoria, información de disco, estado de red y procesos en ejecución a través de una interfaz MCP estandarizada.
Características
🛠️ Herramientas Disponibles
get_cpu_info- Obtener uso de CPU, número de núcleos, frecuencia y carga promedioget_memory_info- Obtener estadísticas de memoria virtual y de intercambioget_disk_info- Información de uso de disco para todos los montajes o rutas específicasget_network_info- Información de interfaz de red y estadísticas de E/Sget_process_list- Procesos en ejecución con opciones de ordenamiento y filtradoget_system_uptime- Información de tiempo de arranque y tiempo de actividad del sistemaget_temperature_info- Sensores de temperatura y velocidades de ventilador (cuando estén disponibles)
📚 Recursos Disponibles
system://overview- Resumen completo del sistema con todas las métricassystem://processes- Recurso de lista de procesos actual
⭐ Características Clave
- Métricas en tiempo real con caché configurable
- Soporte multiplataforma (Windows, macOS, Linux)
- Enfocado en seguridad con filtrado de datos sensibles
- Rendimiento optimizado con caché inteligente
- Manejo integral de errores
- Configuración mediante variables de entorno
Instalación
Usando uvx (Recomendado)
La forma más fácil de instalar y usar este servidor MCP es con uvx:
uvx install mcp-system-info
Luego configúralo en tu cliente MCP (como Claude Desktop):
{
"mcpServers": {
"system-info": {
"command": "uvx",
"args": ["mcp-system-info"]
}
}
}
Instalación para Desarrollo
Para desarrollo local:
-
Clonar el repositorio:
git clone <repository-url> cd mcp-system-info -
Instalar dependencias:
uv sync -
Ejecutar el servidor:
uv run mcp-system-info
Desarrollo
Estructura del Proyecto
mcp-system-info/
├── src/
│ └── system_info_mcp/
│ ├── __init__.py
│ ├── server.py # Main FastMCP server
│ ├── tools.py # Tool implementations
│ ├── resources.py # Resource handlers
│ ├── config.py # Configuration management
│ └── utils.py # Utility functions
├── tests/ # Comprehensive test suite
├── pyproject.toml # Project configuration
└── README.md
Configuración de Desarrollo
-
Instalar dependencias de desarrollo:
uv sync --dev -
Ejecutar pruebas:
uv run pytest -
Ejecutar pruebas con cobertura:
uv run pytest --cov=system_info_mcp --cov-report=term-missing -
Formatear código:
uv run black src/ tests/ -
Verificar estilo del código (lint):
uv run ruff check src/ tests/ -
Verificación de tipos:
uv run mypy src/
Construcción y Publicación
Construir el Paquete
# Build distribution files
uv build
Esto crea archivos de distribución en el directorio dist/:
mcp_system_info-*.whl(archivo wheel)mcp_system_info-*.tar.gz(distribución de código fuente)
Pruebas Locales con uvx
Prueba el paquete localmente antes de publicarlo:
# Test running the command directly from wheel file
uvx --from ./dist/mcp_system_info-*.whl mcp-system-info
# Test with environment variables
SYSINFO_LOG_LEVEL=DEBUG uvx --from ./dist/mcp_system_info-*.whl mcp-system-info
Publicación en PyPI
# Publish to PyPI (requires PyPI account and token)
uv publish
# Or publish to TestPyPI first
uv publish --repository testpypi
Nota: Necesitarás:
- Crear una cuenta de PyPI en https://pypi.org
- Generar un token de API en la configuración de tu cuenta
- Configurar uv con tus credenciales o usar variables de entorno
Configuración de Entorno
El servidor admite configuración mediante variables de entorno:
Configuración Principal
SYSINFO_CACHE_TTL- Tiempo de vida de la caché en segundos (predeterminado: 5)SYSINFO_MAX_PROCESSES- Máximo de procesos a devolver (predeterminado: 100)SYSINFO_ENABLE_TEMP- Habilitar sensores de temperatura (predeterminado: true)SYSINFO_LOG_LEVEL- Nivel de registro (predeterminado: INFO)
Configuración de Transporte
SYSINFO_TRANSPORT- Protocolo de transporte:stdio,sse, ostreamable-http(predeterminado: stdio)SYSINFO_HOST- Host al que vincularse para transportes HTTP (predeterminado: localhost)SYSINFO_PORT- Puerto al que vincularse para transportes HTTP (predeterminado: 8001)SYSINFO_MOUNT_PATH- Ruta de montaje para transporte SSE (predeterminado: /mcp)
Modos de Transporte
1. STDIO (Predeterminado)
# Uses standard input/output - no network port
uv run mcp-system-info
2. SSE (Eventos enviados por el servidor)
# HTTP server with real-time streaming
SYSINFO_TRANSPORT=sse SYSINFO_PORT=8001 uv run mcp-system-info
# Server will be available at http://localhost:8001/mcp
3. HTTP Transmisible (Streamable HTTP)
# HTTP server with request/response
SYSINFO_TRANSPORT=streamable-http SYSINFO_PORT=9000 uv run mcp-system-info
Ejemplo Completo:
SYSINFO_TRANSPORT=sse \
SYSINFO_HOST=0.0.0.0 \
SYSINFO_PORT=8001 \
SYSINFO_CACHE_TTL=10 \
SYSINFO_LOG_LEVEL=DEBUG \
uv run mcp-system-info
Ejemplos de Uso
Uso de Herramientas
Obtener Información de CPU
# Basic CPU info
{
"name": "get_cpu_info_tool",
"arguments": {
"interval": 1.0,
"per_cpu": false
}
}
Obtener Lista de Procesos
# Top 10 processes by memory usage
{
"name": "get_process_list_tool",
"arguments": {
"limit": 10,
"sort_by": "memory",
"filter_name": "python"
}
}
Obtener Información de Disco
# All disk usage
{
"name": "get_disk_info_tool",
"arguments": {}
}
# Specific path
{
"name": "get_disk_info_tool",
"arguments": {
"path": "/home"
}
}
Uso de Recursos
Resumen del Sistema
# Request comprehensive system overview
{
"uri": "system://overview"
}
Recurso de Lista de Procesos
# Get top processes resource
{
"uri": "system://processes"
}
Integración con Claude Desktop
Agregar a Claude Desktop
-
Localiza el archivo de configuración de Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Agrega la configuración del servidor MCP:
Usando uvx (Recomendado)
{
"mcpServers": {
"system-info": {
"command": "uvx",
"args": ["mcp-system-info"],
"env": {
"SYSINFO_CACHE_TTL": "10",
"SYSINFO_LOG_LEVEL": "INFO"
}
}
}
}
Para Desarrollo Local
{
"mcpServers": {
"system-info": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-system-info",
"run",
"mcp-system-info"
],
"env": {
"SYSINFO_TRANSPORT": "stdio",
"SYSINFO_CACHE_TTL": "10",
"SYSINFO_LOG_LEVEL": "INFO"
}
}
}
}
Para Transporte HTTP (SSE)
{
"mcpServers": {
"system-info-http": {
"command": "uvx",
"args": ["mcp-system-info"],
"env": {
"SYSINFO_TRANSPORT": "sse",
"SYSINFO_HOST": "localhost",
"SYSINFO_PORT": "8001",
"SYSINFO_MOUNT_PATH": "/mcp"
}
}
}
}
- Reinicia Claude Desktop para cargar el nuevo servidor.
Uso con Claude
Una vez configurado, puedes pedirle a Claude:
- "¿Cuál es mi uso actual de CPU?"
- "Muéstrame los 10 procesos que más memoria usan"
- "¿Cuánto espacio en disco está disponible?"
- "¿Cuál es el tiempo de actividad de mi sistema?"
- "Dame un resumen completo del sistema"
Pruebas
Ejecutar Pruebas
# Run all tests
uv run pytest
# Run with verbose output
uv run pytest -v
# Run specific test file
uv run pytest tests/test_tools.py
# Run with coverage report
uv run pytest --cov=system_info_mcp --cov-report=html
Estructura de Pruebas
tests/test_config.py- Pruebas de validación de configuracióntests/test_tools.py- Pruebas de implementación de herramientastests/test_resources.py- Pruebas de manejadores de recursostests/test_utils.py- Pruebas de funciones de utilidad
Todas las pruebas usan dependencias simuladas para una ejecución consistente y rápida en diferentes entornos.
Consideraciones de Rendimiento
- Caché: La caché inteligente reduce las llamadas al sistema y mejora los tiempos de respuesta
- Intervalos configurables: Ajusta el TTL de la caché según tus necesidades
- Carga diferida: Los sensores de temperatura y otras características opcionales se cargan solo cuando es necesario
- Soporte asíncrono: Construido sobre FastMCP para operaciones asíncronas eficientes
Características de Seguridad
- Operaciones de solo lectura: Sin capacidades de modificación del sistema
- Filtrado de datos sensibles: Los argumentos de línea de comandos se filtran para contraseñas, tokens, etc.
- Validación de entrada: Todos los parámetros se validan antes de procesarse
- Aislamiento de errores: Los fallos en una herramienta no afectan a otras
Soporte de Plataformas
- macOS - Soporte completo, incluidos sensores de temperatura en hardware compatible
- Linux - Soporte completo con disponibilidad de sensores dependiente del hardware
- Windows - Soporte completo con optimizaciones específicas de la plataforma
Solución de Problemas
Problemas Comunes
- Errores de permisos: Alguna información del sistema puede requerir privilegios elevados
- Sensores faltantes: La disponibilidad de datos de temperatura/ventilador varía según el hardware
- Impacto en el rendimiento: Reduce el TTL de la caché o limita el número de procesos para un mejor rendimiento
Modo de Depuración
Habilita el registro de depuración para solucionar problemas:
SYSINFO_LOG_LEVEL=DEBUG uv run mcp-system-info
Verificación de la Instalación
Prueba que las herramientas funcionen correctamente:
uv run python -c "from system_info_mcp.tools import get_cpu_info; print(get_cpu_info())"
Contribuciones
- Haz un fork del repositorio
- Crea una rama de características
- Realiza tus cambios con pruebas
- Ejecuta la suite completa de pruebas
- Envía una solicitud de extracción (pull request)
Estándares de Código
- Sigue las guías de estilo PEP 8
- Agrega indicaciones de tipo a todas las funciones
- Escribe pruebas para la nueva funcionalidad
- Actualiza la documentación según sea necesario
Licencia
[Agrega aquí la información de tu licencia]
Soporte
[Agrega aquí la información de soporte]