MCP System Information Server
Um servidor MCP que fornece informações do sistema, como uso de CPU e memória.
Documentação
MCP System Information Server
Servidor Model Context Protocol (MCP) para obter informações do sistema (CPU e memória).
Especificação
https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http
Reference
https://levelup.gitconnected.com/mcp-server-and-client-with-sse-the-new-streamable-http-d860850d9d9d
Recursos do servidor
- Obtenção de informações da CPU (número de núcleos, modelo, carga)
- Obtenção de informações de memória (total, disponível, usada)
- Registro estruturado com zerolog
- Suporte a dois modos de operação:
- stdio - para integração com Cursor no modo stdio e outros clientes MCP locais
- Streamable HTTP - novo protocolo conforme especificação 2025-03-26 na rota raiz
/ - Legacy HTTP/SSE - para compatibilidade reversa na rota
/sse
Configuração de registro
O servidor usa registro estruturado com zerolog com suporte às seguintes variáveis de ambiente:
Variáveis de ambiente
LOG_LEVEL- nível de registro:trace,debug,info,warn,error,fatal,panic,disabled(padrão:info)ENVIRONMENTouENV- modo de ambiente:development/devouproduction/prod(padrão:development)
Modos de registro
Modo de desenvolvimento (development)
ENVIRONMENT=development LOG_LEVEL=debug ./system-info-server
- Saída colorida e legível no console
- Carimbos de data/hora legíveis (HH:MM:SS)
- Informações detalhadas sobre arquivos e linhas de código
Modo de produção (production)
ENVIRONMENT=production LOG_LEVEL=info ./system-info-server
- Formato JSON para análise por agregadores de logs
- Carimbos de data/hora RFC3339
- Otimizado para desempenho
Exemplos de configuração
# Минимальное логгирование для продакшена
ENVIRONMENT=production LOG_LEVEL=error PORT=8080 ./system-info-server
# Максимальная детализация для отладки
ENVIRONMENT=development LOG_LEVEL=trace ./system-info-server
# Стандартная конфигурация для разработки
LOG_LEVEL=debug ./system-info-server
Estrutura de logs
Cada evento registrado contém campos contextuais:
component- componente do sistema (main, http, session, mcp, tools, sysinfo, sse, streamable)session_id- identificador de sessão para rastreamento de requisiçõesmethod- método HTTP ou método RPCduration- tempo de execução das operaçõesstatus- código de status HTTPerror- detalhes de erros com contexto
Exemplo de log no modo de desenvolvimento:
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
Exemplo de log em formato JSON (produção):
{"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"}
Instalação e execução
Compilação a partir do código-fonte
go build -o system-info-server .
Execução no modo stdio (para Cursor e outros clientes MCP locais)
./system-info-server
Execução no modo servidor HTTP
PORT=8080 ./system-info-server
Integração com Cursor
Adicione ao arquivo ~/.cursor/mcp.json:
Opção 1: Servidor stdio local
{
"mcpServers": {
"system-info-local": {
"command": "/path/to/system-info-server",
"args": []
}
}
}
Opção 2: Streamable HTTP remoto (nova especificação 2025-03-26)
{
"mcpServers": {
"system-info-remote": {
"url": "https://your-domain.com/"
}
}
}
Opção 3: Legacy HTTP+SSE (para compatibilidade reversa)
{
"mcpServers": {
"system-info-legacy": {
"url": "https://your-domain.com/sse"
}
}
}
Integração com n8n
Novo formato (Streamable HTTP)
Ao adicionar o servidor MCP no n8n, especifique:
- MCP Endpoint:
https://your-domain.com/
Formato Legacy (para compatibilidade reversa)
Ao adicionar o servidor MCP no n8n, especifique:
- SSE Endpoint:
https://your-domain.com/sse
Streamable HTTP API (nova especificação 2025-03-26)
Inicialização
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"
}
}
}
A resposta contém o cabeçalho Mcp-Session-Id, que deve ser usado em todas as requisições subsequentes.
Obtenção da lista de ferramentas
POST /
Content-Type: application/json
Accept: application/json
Mcp-Session-Id: <session-id>
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
Chamada de ferramenta
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": {}
}
}
Fluxo SSE (Streamable HTTP)
GET /
Accept: text/event-stream
Mcp-Session-Id: <session-id>
POST com resposta 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": {}
}
}
Encerramento da sessão
DELETE /
Mcp-Session-Id: <session-id>
Legacy HTTP API (para compatibilidade reversa)
Inicialização
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"
}
}
}
Conexão SSE (Legacy)
GET /sse?sessionId=<session-id>
Accept: text/event-stream
Docker
Compilação da imagem
docker build -t mcp-system-info .
Execução do contêiner
# 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
Implantação no servidor
Ao implantar atrás do nginx, adicione à configuração:
# Для нового 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;
}
Mudanças de protocolo
Streamable HTTP (2025-03-26) vs Legacy HTTP+SSE (2024-11-05)
Nova especificação (/):
- Endpoint único para todas as operações
- Métodos POST e GET na mesma rota
- Suporte a
Accept: application/json, text/event-stream - Gerenciamento de sessão via cabeçalho
Mcp-Session-Id - Fluxos retomáveis com
Last-Event-Id - DELETE para encerramento explícito da sessão
Especificação Legacy (/sse):
- Endpoints separados para POST e SSE
- Evento
endpointao conectar ao SSE - Parâmetro
sessionIdna query string - Formato antigo de eventos SSE
Licença
MIT