MCP System Monitor Server
Um servidor multiplataforma para monitoramento em tempo real de informações de CPU, GPU, memória, disco, rede e processos.
Documentação
MCP System Monitor Server
Um servidor MCP (Model Context Protocol) multiplataforma que fornece recursos abrangentes de monitoramento de sistema em tempo real para LLMs. Construído com FastMCP para fácil integração com o Claude Desktop e outros clientes compatíveis com MCP.
Recursos
Monitoramento do Sistema
Monitoramento Básico do Sistema:
- Monitoramento de CPU: Uso em tempo real, estatísticas por núcleo, frequência, temperatura, informações detalhadas do processador (modelo, fabricante, arquitetura, tamanhos de cache)
- Monitoramento de GPU: Suporte a GPUs de múltiplos fabricantes (NVIDIA com métricas completas, Apple Silicon com suporte abrangente incluindo memória unificada e contagem de núcleos, AMD/Intel com informações básicas)
- Monitoramento de Memória: Uso de RAM e swap, estatísticas de disponibilidade
- Monitoramento de Disco: Uso de espaço, informações do sistema de arquivos para todas as unidades montadas
- Estatísticas de Rede: Tráfego em nível de interface e contadores de erros
- Monitoramento de Processos: Principais processos por uso de CPU/memória
- Informações do Sistema: Detalhes do SO, nome do host, tempo de atividade, arquitetura
Monitoramento de Desempenho da Fase 1:
- Desempenho de I/O: Métricas detalhadas de I/O de disco, taxas de leitura/escrita, estatísticas por disco, análise de tempo ocupado
- Carga do Sistema: Médias de carga (1m, 5m, 15m), trocas de contexto, interrupções, processos em execução/bloqueados
- Memória Aprimorada: Estatísticas detalhadas de memória incluindo buffers, cache, memória ativa/inativa, falhas de página, atividade de swap
- Rede Aprimorada: Métricas de desempenho de rede com taxas de transferência, erros, descartes, velocidade da interface e MTU
Ferramentas MCP Disponíveis
Monitoramento Básico do Sistema (9 ferramentas):
get_current_datetime: Obter a data/hora local atual no formato ISOget_cpu_info: Obter uso e estatísticas atuais da CPUget_gpu_info: Obter informações de GPU para todas as GPUs detectadasget_memory_info: Obter uso de RAM e swapget_disk_info: Obter uso de disco para todas as unidades montadasget_system_snapshot: Obter o estado completo do sistema em uma única chamadamonitor_cpu_usage: Monitorar o uso da CPU por uma duração especificadaget_top_processes: Obter os principais processos por uso de CPU ou memóriaget_network_stats: Obter estatísticas de interface de rede
Monitoramento de Desempenho da Fase 1 (6 ferramentas):
get_io_performance: Obter métricas e taxas detalhadas de desempenho de I/Oget_system_load: Obter médias de carga do sistema e estatísticas de processosget_enhanced_memory_info: Obter estatísticas detalhadas de memória com caches/buffersget_enhanced_network_stats: Obter métricas aprimoradas de desempenho de redeget_performance_snapshot: Obter um instantâneo completo do monitoramento de desempenhomonitor_io_performance: Monitorar o desempenho de I/O por duração especificada com análise de tendências
Recursos MCP
Recursos Básicos do Sistema (3 recursos):
system://live/cpu: Dados de uso da CPU em tempo realsystem://live/memory: Dados de uso de memória em tempo realsystem://config: Configuração do sistema e informações de hardware
Recursos de Desempenho da Fase 1 (3 recursos):
system://performance/io: Dados de desempenho de I/O em tempo realsystem://performance/load: Dados de carga do sistema em tempo realsystem://performance/network: Dados de desempenho de rede em tempo real
Detalhes de Suporte a GPU
GPUs NVIDIA:
- Métricas completas: porcentagem de uso, memória (usada/total), temperatura, consumo de energia
- Suporta múltiplas GPUs NVIDIA
- Requer drivers NVIDIA e bibliotecas NVML
GPUs Apple Silicon:
- Suporte abrangente para chips M1, M2 e M3
- Detecção da contagem de núcleos da GPU
- Relatório de memória unificada (compartilha a RAM do sistema)
- Detecção de suporte à API Metal
- Monitoramento de temperatura (quando disponível)
GPUs AMD/Intel:
- Detecção e identificação básicas
- Métricas limitadas dependendo da plataforma e dos drivers
Requisitos
- Python 3.10+
- Windows, macOS ou Linux
- GPU (opcional): GPUs NVIDIA para métricas completas, GPUs Apple Silicon totalmente suportadas no macOS
Instalação
A partir do GitHub
-
Clone o repositório:
git clone https://github.com/huhabla/mcp-system-monitor.git cd mcp-system-monitor -
Instale as dependências usando uv (recomendado):
uv pip install -e .Ou usando pip:
pip install -e .
Dependências Opcionais
Para recursos específicos do Windows:
pip install mcp-system-monitor[win32]
Uso
Modo de Desenvolvimento
Teste o servidor com o MCP Inspector:
uv run mcp dev mcp_system_monitor_server.py
Integração com o Claude Desktop
Instale o servidor no Claude Desktop:
uv run mcp install mcp_system_monitor_server.py --name "System Monitor"
Execução Direta
Execute o servidor diretamente:
python mcp_system_monitor_server.py
Configuração JSON dos Servidores MCP
Modifique o seguinte modelo JSON para definir o caminho para o servidor MCP no seu 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 o seguinte modelo JSON para definir o caminho para o servidor MCP no seu cliente MCP para MacOS:
{
"mcpServers": {
"mpc-system-monitor": {
"command": "/bin/zsh",
"args": [
"/Users/holistech/Documents/GitHub/mcp-system-monitor/start_mcp_system_monitor.sh"
]
}
}
}
Exemplo de Uso das Ferramentas
Depois de conectado ao Claude Desktop ou a outro cliente MCP, você pode usar linguagem natural para interagir com o monitor de sistema:
Monitoramento Básico do Sistema:
- "Mostre-me o uso atual da CPU"
- "Qual é a temperatura da minha GPU?"
- "Quantos núcleos de GPU tem o meu Apple M1 Max?"
- "Mostre-me o uso de memória da GPU e se é memória unificada"
- "Quanto espaço em disco está disponível?"
- "Monitore o uso da CPU pelos próximos 10 segundos"
- "Mostre-me os 5 principais processos por uso de memória"
- "Obtenha um instantâneo completo do sistema"
Monitoramento de Desempenho da Fase 1:
- "Mostre-me métricas detalhadas de desempenho de I/O"
- "Qual é a média de carga atual do sistema?"
- "Monitore o desempenho de I/O pelos próximos 30 segundos"
- "Mostre-me estatísticas aprimoradas de memória com informações de cache"
- "Obtenha métricas detalhadas de desempenho de rede"
- "Forneça um instantâneo completo de desempenho"
Arquitetura
O servidor usa uma arquitetura modular baseada em coletores:
- BaseCollector: Classe base abstrata que fornece cache e coleta de dados assíncrona
- Coletores Especializados: Coletores de CPU, GPU, Memória, Disco, Rede, Processos e Sistema
- Coletores de Desempenho da Fase 1: Coletores IOPerformance, SystemLoad, EnhancedMemory e EnhancedNetwork
- Modelos Pydantic: Modelos de dados type-safe para todas as informações do sistema
- Integração FastMCP: Decoradores simples para expor ferramentas e recursos
Estratégia de Cache
Todos os coletores implementam cache inteligente para:
- Reduzir a sobrecarga do sistema com polling frequente
- Fornecer dados consistentes dentro de janelas de tempo
- Permitir expiração de cache configurável
Testes
Suíte de Testes Abrangente
O projeto inclui uma suíte de testes abrangente com 100% de cobertura de todas as ferramentas, recursos e coletores MCP:
Organização dos Testes:
test_mcp_system_monitor_server.py- Testes originais dos coletores básicostest_mcp_system_monitor_server_comprehensive.py- Testes abrangentes de ferramentas/recursos MCPtest_mcp_server_integration.py- Testes de integração para conformidade com o protocolo do servidor MCPtest_architecture_agnostic.py- Testes multiplataforma com foco em contratos de dadosconftest.py- Configuração de testes, fixtures e utilitários de mocking
Executando Testes
Execute todos os testes:
pytest
Execute testes por categoria:
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
Execute suítes de testes 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
Execute com cobertura:
pytest --cov=mcp_system_monitor_server --cov-report=html
Cobertura de Testes
Cobertura Completa:
- 15 Ferramentas MCP (9 básicas + 6 de desempenho da Fase 1)
- 6 Recursos MCP (3 básicos + 3 de desempenho da Fase 1)
- 11 Coletores (7 básicos + 4 de desempenho da Fase 1)
- Testes de compatibilidade multiplataforma
- Benchmarking de desempenho e testes de estresse
- Tratamento de erros e validação de casos extremos
Benchmarks de Desempenho:
- Coleta de instantâneo do sistema: < 5 segundos
- Chamadas individuais de ferramentas: < 1 segundo cada
- Operações concorrentes: 20 chamadas paralelas < 10 segundos
Suporte a Plataformas
| Recurso | Windows | macOS | Linux |
|---|---|---|---|
| Monitoramento de CPU | ✅ | ✅ | ✅ |
| Monitoramento de GPU (NVIDIA) | ✅ | ✅ | ✅ |
| Monitoramento de GPU (AMD) | ⚠️ | ❌ | ⚠️ |
| Monitoramento de GPU (Intel) | ⚠️ | ❌ | ⚠️ |
| Monitoramento de GPU (Apple) | ❌ | ✅ | ❌ |
| Monitoramento de Memória | ✅ | ✅ | ✅ |
| Monitoramento de Disco | ✅ | ✅ | ✅ |
| Estatísticas de Rede | ✅ | ✅ | ✅ |
| Monitoramento de Processos | ✅ | ✅ | ✅ |
| Temperatura da CPU | ⚠️ | ⚠️ | ✅ |
⚠️ = Suporte limitado, depende de hardware/drivers
Solução de Problemas
Monitoramento de GPU Não Funciona
GPUs NVIDIA:
- Certifique-se de que os drivers NVIDIA estejam instalados
- Verifique se o comando
nvidia-smifunciona - O servidor lidará graciosamente com bibliotecas de GPU ausentes
GPUs Apple Silicon:
- Suportadas no macOS com chips M1, M2 e M3
- Fornece informações abrangentes incluindo memória unificada e contagem de núcleos da GPU
- Usa o comando
system_profiler(disponível por padrão no macOS)
Erros de Permissão
- Algumas informações do sistema podem exigir privilégios elevados
- O servidor lida com erros de permissão graciosamente e ignora recursos inacessíveis
Alto Uso de CPU
- Ajuste a frequência de monitoramento modificando os intervalos de atualização dos coletores
- Use métodos de dados em cache para reduzir chamadas de sistema
- A expiração padrão do cache é de 2 segundos para a maioria dos coletores
- Considere aumentar o parâmetro
max_agenas chamadasget_cached_data()para atualizações menos frequentes
Considerações de Desempenho
- O servidor usa cache inteligente para minimizar chamadas de sistema
- Cada coletor mantém seu próprio cache com expiração configurável
- Ferramentas de monitoramento contínuo (como
monitor_cpu_usage) ignoram o cache para dados em tempo real - Para polling de alta frequência, considere usar os endpoints de recursos que aproveitam o cache
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.
Agradecimentos
- Construído com FastMCP
- Monitoramento de sistema via psutil
- Suporte a GPU NVIDIA via nvidia-ml-py