MCP System Information Server
Un servidor MCP que proporciona información del sistema, como el uso de CPU y memoria.
Documentación
MCP System Information Server
Servidor del Protocolo de Contexto de Modelo (MCP) para obtener información del sistema (CPU y memoria).
Especificación
https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http
Referencia
https://levelup.gitconnected.com/mcp-server-and-client-with-sse-the-new-streamable-http-d860850d9d9d
Funcionalidades del servidor
- Obtención de información de CPU (número de núcleos, modelo, carga)
- Obtención de información de memoria (total, disponible, usada)
- Registro estructurado con zerolog
- Soporte de dos modos de operación:
- stdio - para integración con Cursor en modo stdio y otros clientes MCP locales
- Streamable HTTP - nuevo protocolo según la especificación 2025-03-26 en la ruta raíz
/ - Legacy HTTP/SSE - para compatibilidad inversa en la ruta
/sse
Configuración de registro
El servidor utiliza registro estructurado con zerolog con soporte de las siguientes variables de entorno:
Variables de entorno
LOG_LEVEL- nivel de registro:trace,debug,info,warn,error,fatal,panic,disabled(por defecto:info)ENVIRONMENToENV- modo de entorno:development/devoproduction/prod(por defecto:development)
Modos de registro
Modo de desarrollo (development)
ENVIRONMENT=development LOG_LEVEL=debug ./system-info-server
- Salida de consola con colores legibles
- Marcas de tiempo legibles (HH:MM:SS)
- Información detallada sobre archivos y líneas de código
Modo de producción (production)
ENVIRONMENT=production LOG_LEVEL=info ./system-info-server
- Formato JSON para análisis por agregadores de registros
- Marcas de tiempo RFC3339
- Optimizado para rendimiento
Ejemplos de configuración
# Минимальное логгирование для продакшена
ENVIRONMENT=production LOG_LEVEL=error PORT=8080 ./system-info-server
# Максимальная детализация для отладки
ENVIRONMENT=development LOG_LEVEL=trace ./system-info-server
# Стандартная конфигурация для разработки
LOG_LEVEL=debug ./system-info-server
Estructura de registros
Cada evento registrado contiene campos contextuales:
component- componente del sistema (main, http, session, mcp, tools, sysinfo, sse, streamable)session_id- identificador de sesión para seguimiento de solicitudesmethod- método HTTP o método RPCduration- tiempo de ejecución de operacionesstatus- código de estado HTTPerror- detalles de errores con contexto
Ejemplo de registro en modo de desarrollo:
14:30:25 INF Starting Fiber server component=main port=8080 addr=:8080
14:30:30 INF Request started component=http method=POST path=/ session_id=session_20240614_143030_abc12345
14:30:30 DBG Processing JSON-RPC request component=mcp method=initialize session_id=session_20240614_143030_abc12345
Ejemplo de registro en formato JSON (producción):
{"level":"info","time":"2024-06-14T14:30:25+03:00","caller":"main.go:65","component":"main","port":"8080","addr":":8080","message":"Starting Fiber server"}
{"level":"info","time":"2024-06-14T14:30:30+03:00","caller":"middleware/logging.go:35","component":"http","method":"POST","path":"/","session_id":"session_20240614_143030_abc12345","message":"Request started"}
Instalación y ejecución
Compilación desde el código fuente
go build -o system-info-server .
Ejecución en modo stdio (para Cursor y otros clientes MCP locales)
./system-info-server
Ejecución en modo servidor HTTP
PORT=8080 ./system-info-server
Integración con Cursor
Agregue al archivo ~/.cursor/mcp.json:
Opción 1: Servidor stdio local
{
"mcpServers": {
"system-info-local": {
"command": "/path/to/system-info-server",
"args": []
}
}
}
Opción 2: Streamable HTTP remoto (nueva especificación 2025-03-26)
{
"mcpServers": {
"system-info-remote": {
"url": "https://your-domain.com/"
}
}
}
Opción 3: Legacy HTTP+SSE (para compatibilidad inversa)
{
"mcpServers": {
"system-info-legacy": {
"url": "https://your-domain.com/sse"
}
}
}
Integración con n8n
Nuevo formato (Streamable HTTP)
Al agregar un servidor MCP en n8n, especifique:
- MCP Endpoint:
https://your-domain.com/
Formato Legacy (para compatibilidad inversa)
Al agregar un servidor MCP en n8n, especifique:
- SSE Endpoint:
https://your-domain.com/sse
API Streamable HTTP (nueva especificación 2025-03-26)
Inicialización
POST /
Content-Type: application/json
Accept: application/json, text/event-stream
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": {},
"clientInfo": {
"name": "client-name",
"version": "1.0.0"
}
}
}
La respuesta contiene el encabezado Mcp-Session-Id, que debe usarse en todas las solicitudes posteriores.
Obtención de la lista de herramientas
POST /
Content-Type: application/json
Accept: application/json
Mcp-Session-Id: <session-id>
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
Llamada a herramienta
POST /
Content-Type: application/json
Accept: application/json
Mcp-Session-Id: <session-id>
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_system_info",
"arguments": {}
}
}
Flujo SSE (Streamable HTTP)
GET /
Accept: text/event-stream
Mcp-Session-Id: <session-id>
POST con respuesta SSE
POST /
Content-Type: application/json
Accept: text/event-stream
Mcp-Session-Id: <session-id>
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_system_info",
"arguments": {}
}
}
Finalización de sesión
DELETE /
Mcp-Session-Id: <session-id>
API HTTP Legacy (para compatibilidad inversa)
Inicialización
POST /sse
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "client-name",
"version": "1.0.0"
}
}
}
Conexión SSE (Legacy)
GET /sse?sessionId=<session-id>
Accept: text/event-stream
Docker
Compilación de la imagen
docker build -t mcp-system-info .
Ejecución del contenedor
# HTTP режим
docker run -p 8080:8080 -e PORT=8080 mcp-system-info
# stdio режим
docker run -it mcp-system-info
Docker Compose
docker-compose up -d
Despliegue en servidor
Al desplegar detrás de nginx, agregue a la configuración:
# Для нового Streamable HTTP endpoint
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_cache off;
proxy_set_header X-Accel-Buffering no;
proxy_read_timeout 86400;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Для Legacy SSE endpoint (обратная совместимость)
location /sse {
proxy_pass http://localhost:8080/sse;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_cache off;
proxy_set_header X-Accel-Buffering no;
proxy_read_timeout 86400;
}
Cambios de protocolo
Streamable HTTP (2025-03-26) vs Legacy HTTP+SSE (2024-11-05)
Nueva especificación (/):
- Endpoint único para todas las operaciones
- Métodos POST y GET en la misma ruta
- Soporte de
Accept: application/json, text/event-stream - Gestión de sesiones mediante el encabezado
Mcp-Session-Id - Flujos reanudables con
Last-Event-Id - DELETE para finalización explícita de sesión
Especificación Legacy (/sse):
- Endpoints separados para POST y SSE
- Evento
endpointal conectarse a SSE - Parámetro
sessionIden la cadena de consulta - Formato antiguo de eventos SSE
Licencia
MIT