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

Python Version JDK Version License

Inglês | 中文

MseeP.ai Security Assessment Badge

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.

JVM Server MCP server

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 Java
  • get_thread_info: Obter informações de threads para um processo específico
  • get_jvm_info: Obter informações básicas da JVM
  • get_memory_info: Obter informações de uso de memória
  • get_stack_trace: Obter informações de stack trace de threads
  • get_class_info: Obter informações detalhadas de classe, incluindo estrutura
  • get_stack_trace_by_method: Obter caminho de chamada de método
  • decompile_class: Decompilar código-fonte de classe
  • search_method: Pesquisar métodos em classes
  • watch_method: Monitorar invocações de métodos
  • get_logger_info: Obter informações de logger
  • set_logger_level: Definir níveis de logger
  • get_dashboard: Obter painel de recursos do sistema
  • get_jcmd_output: Executar comandos jcmd do JDK
  • get_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:

  1. Camada de Comando: Encapsula comandos nativos do JDK
  2. Camada de Execução: Lida com execução de comandos locais e remotos
  3. Camada de Formatação: Processa e formata a saída dos comandos
  4. Interface MCP: Expõe funcionalidades através do protocolo FastMCP

Componentes Principais

  • BaseCommand: Classe base abstrata para todos os comandos
  • CommandExecutor: Interface para execução de comandos (local e remoto)
  • OutputFormatter: Interface para formatação de saída de comandos
  • JvmMcpServer: 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.

  1. Faça um fork do repositório
  2. Crie sua branch de recurso (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. 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