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 promedio
  • get_memory_info - Obtener estadísticas de memoria virtual y de intercambio
  • get_disk_info - Información de uso de disco para todos los montajes o rutas específicas
  • get_network_info - Información de interfaz de red y estadísticas de E/S
  • get_process_list - Procesos en ejecución con opciones de ordenamiento y filtrado
  • get_system_uptime - Información de tiempo de arranque y tiempo de actividad del sistema
  • get_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étricas
  • system://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:

  1. Clonar el repositorio:

    git clone <repository-url>
    cd mcp-system-info
    
  2. Instalar dependencias:

    uv sync
    
  3. 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

  1. Instalar dependencias de desarrollo:

    uv sync --dev
    
  2. Ejecutar pruebas:

    uv run pytest
    
  3. Ejecutar pruebas con cobertura:

    uv run pytest --cov=system_info_mcp --cov-report=term-missing
    
  4. Formatear código:

    uv run black src/ tests/
    
  5. Verificar estilo del código (lint):

    uv run ruff check src/ tests/
    
  6. 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:

  1. Crear una cuenta de PyPI en https://pypi.org
  2. Generar un token de API en la configuración de tu cuenta
  3. 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, o streamable-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

  1. 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
  2. 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"
      }
    }
  }
}
  1. 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ón
  • tests/test_tools.py - Pruebas de implementación de herramientas
  • tests/test_resources.py - Pruebas de manejadores de recursos
  • tests/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

  1. Errores de permisos: Alguna información del sistema puede requerir privilegios elevados
  2. Sensores faltantes: La disponibilidad de datos de temperatura/ventilador varía según el hardware
  3. 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

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios con pruebas
  4. Ejecuta la suite completa de pruebas
  5. 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]