JVM MCP Server
Um servidor para monitorar e analisar processos da Máquina Virtual Java (JVM) usando Arthas, com uma interface Python.
Documentação
JVM MCP Server
Uma implementação leve de servidor MCP (Protocolo de Comunicação Multiagente) para monitoramento e diagnóstico de JVM, baseada em ferramentas nativas do JDK. Fornece aos agentes de IA capacidades poderosas para monitorar e analisar aplicações Java sem exigir ferramentas de terceiros como Arthas.
Implantação hospedada
Uma implantação hospedada está disponível em Fronteir AI.
Recursos
- Zero Dependências: Usa apenas ferramentas nativas do JDK (jps, jstack, jmap, etc.)
- Leve: Consumo mínimo de recursos em comparação com soluções baseadas em agentes
- Alta Compatibilidade: Funciona com todas as versões e plataformas Java
- Não Intrusivo: Nenhuma modificação necessária nas aplicações alvo
- Seguro: Usa apenas ferramentas e comandos certificados pelo JDK
- Monitoramento Remoto: Suporte para monitoramento de JVM local e remoto via SSH
Capacidades Principais
Monitoramento Básico
- Listagem e identificação de processos Java
- Recuperação de informações básicas da JVM
- Monitoramento de uso de memória
- Informações de threads e análise de stack trace
- Estatísticas de carregamento de classes
- Informações detalhadas da estrutura de classes
Recursos Avançados
- Análise de caminho de chamada de métodos
- Decompilação de classes
- Pesquisa e inspeção de métodos
- Monitoramento de invocação de métodos
- Gerenciamento de níveis de logger
- Painel de recursos do sistema
Requisitos de Sistema
- Python 3.6+
- JDK 8+
- SO Linux/Unix/Windows
- Acesso SSH (para monitoramento remoto)
Instalação
Usando uv (Recomendado)
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh # Linux/macOS
# or
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows
# Install the package
uv pip install jvm-mcp-server
Usando pip
pip install jvm-mcp-server
A partir do código-fonte
# Clone the repository
git clone https://github.com/your-repo/jvm-mcp-server.git
cd jvm-mcp-server
# Using uv (recommended)
uv venv # Create virtual environment
uv sync # Install dependencies
# Or install in development mode
uv pip install -e .
Início Rápido
Iniciando o Servidor
Usando uv (Recomendado)
# Local mode
uv run jvm-mcp-server
# Using environment variables file for remote mode
uv run --env-file .env jvm-mcp-server
# In specific directory
uv --directory /path/to/project run --env-file .env jvm-mcp-server
Usando uvx
# Local mode
uvx run jvm-mcp-server
# With environment variables
uvx run --env-file .env jvm-mcp-server
Usando Python diretamente
from jvm_mcp_server import JvmMcpServer
# Local mode
server = JvmMcpServer()
server.run()
# Remote mode (via environment variables)
# Set SSH_HOST, SSH_PORT, SSH_USER, SSH_PASSWORD or SSH_KEY
import os
os.environ['SSH_HOST'] = 'user@remote-host'
os.environ['SSH_PORT'] = '22'
server = JvmMcpServer()
server.run()
Usando com Configuração MCP
{
"mcpServers": {
"jvm-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/jvm-mcp-server",
"run",
"--env-file",
"/path/to/jvm-mcp-server/.env",
"jvm-mcp-server"
]
}
}
}
Ferramentas Disponíveis
O JVM-MCP-Server fornece um conjunto abrangente de ferramentas para monitoramento e diagnóstico de JVM:
list_java_processes: Listar todos os processos Javaget_thread_info: Obter informações de threads para um processo específicoget_jvm_info: Obter informações básicas da JVMget_memory_info: Obter informações de uso de memóriaget_stack_trace: Obter informações de stack trace de threadsget_class_info: Obter informações detalhadas de classe, incluindo estruturaget_stack_trace_by_method: Obter caminho de chamada de métododecompile_class: Decompilar código-fonte de classesearch_method: Pesquisar métodos em classeswatch_method: Monitorar invocações de métodosget_logger_info: Obter informações de loggerset_logger_level: Definir níveis de loggerget_dashboard: Obter painel de recursos do sistemaget_jcmd_output: Executar comandos jcmd do JDKget_jstat_output: Executar comandos jstat do JDK
Para documentação detalhada de cada ferramenta, consulte Ferramentas Disponíveis.
Arquitetura
O JVM-MCP-Server é construído sobre uma arquitetura modular:
- Camada de Comando: Encapsula comandos nativos do JDK
- Camada de Execução: Lida com execução de comandos locais e remotos
- Camada de Formatação: Processa e formata a saída dos comandos
- Interface MCP: Expõe funcionalidades através do protocolo FastMCP
Componentes Principais
BaseCommand: Classe base abstrata para todos os comandosCommandExecutor: Interface para execução de comandos (local e remoto)OutputFormatter: Interface para formatação de saída de comandosJvmMcpServer: Classe principal do servidor que registra todas as ferramentas
Status de Desenvolvimento
O projeto está em desenvolvimento ativo. Consulte Native_TODO.md para o progresso atual.
Concluído
- Arquitetura central e estrutura de comandos
- Implementação de comandos básicos (jps, jstack, jmap, jinfo, jcmd, jstat)
- Sistema de recuperação de informações de classes
- Correções de compatibilidade de tipos de parâmetros de ferramentas MCP
Em Andamento
- Mecanismo de cache
- Rastreamento de métodos
- Monitoramento de desempenho
- Melhorias no tratamento de erros
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
- Faça um fork do repositório
- Crie sua branch de recurso (
git checkout -b feature/amazing-feature) - Faça commit das suas alterações (
git commit -m 'Add some amazing feature') - Envie para a branch (
git push origin feature/amazing-feature) - Abra um Pull Request
Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
NP|## Agradecimentos
#MH|
#TK|- Documentação das ferramentas JDK
#WY|- Especificação do protocolo FastMCP
#JK|- Contribuidores e testadores
#BP|
#KG|## Requisitos de Permissão
#YM|
#KB|Alguns comandos de diagnóstico da JVM (jstack, jmap, jinfo, jcmd, etc.) exigem permissões suficientes para anexar ao processo JVM alvo. Se você encontrar erros de permissão, tente as seguintes soluções:
#YB|
#KB|### Erros Comuns
#RR|
#KB|- Permission denied: Permissões insuficientes
#YZ|- Unable to open socket file: Não é possível conectar ao processo JVM
#KD|- No such process: O processo não existe ou foi encerrado
#MH|
#KB|### Soluções
#BR|
#KB|1. Execute com sudo (recomendado): sudo uv run jvm-mcp-server
#XZ|2. Execute como o mesmo usuário do processo Java alvo: Verifique o ID do usuário do processo Java e execute como esse usuário
#HM|3. Adicione permissão de anexação experimental ao JDK: Adicione aos argumentos de inicialização da JVM:
```
-XX:+AllowRedefinitionToAddDeleteMethods
```
#XQ|4. No Docker: Garanta que o contêiner tenha permissões suficientes (--privileged ou monte /proc)
#KB|
#KB|Nota: list_java_processes usa o comando jps e não requer permissões especiais. Outros comandos podem precisar ser configurados de acordo com as soluções acima.
- Documentação das ferramentas JDK
- Especificação do protocolo FastMCP
- Contribuidores e testadores
