GhidraMCP

Um servidor MCP embutido para Ghidra, expondo dados de programa e funcionalidades de engenharia reversa.

Documentação

GitHub release (latest by date) Build Status Tested Ghidra Version License GitHub stars GitHub forks

Install MCP Server

Se o seu navegador/GitHub bloquear manipuladores de URI personalizados, use o fallback web: Fallback de instalação do Cursor

GhidraMCP

Conecte o Ghidra a clientes compatíveis com MCP

Projeto relacionado: WinDbg MCP Server


✨ Recursos

  • 14 ferramentas MCP cobrindo análise, inspeção, edição, fluxos de trabalho de projeto e Version Tracking
  • Recursos MCP para visualizações comuns de programas, como informações do programa, listagem, importações/exportações, strings, RTTI e descompilação
  • Prompts MCP integrados e complementos de argumentos para fluxos de trabalho comuns de engenharia reversa
  • Respostas estruturadas com limites explícitos por chamada e cursores opacos para grandes conjuntos de dados
  • Saídas grandes são limitadas por argumentos de ferramenta como page_size, max_lines ou max_results; passe os valores de next_cursor retornados de volta como cursor para continuar
  • Suporte a depurador para Trace RMI connect/accept/launch, ciclo de vida do alvo, descoberta de trace/thread/stack/object, operações de memória/registrador/watch ao vivo, mapeamentos estáticos, métodos remotos e emulação
  • Mapeamento de memória tipado aplica um tipo de dados e retorna linhas limitadas de byte para campo para memória do programa ou o trace ativo do depurador
  • Fluxos de trabalho de projeto podem rebasear as bases de imagem do programa explicitamente ou a partir do ImageBase declarado de um binário PE
  • Operações focadas do CodeBrowser e do Debugger navegam automaticamente a interface do Ghidra ativa do usuário para a função ou endereço relevante

Comandos de Ferramentas

  • Análise e inspeção: analyze, inspect, script_guidance
  • Alterações no programa: annotate, functions, symbols, data_types, memory, delete
  • Depuração: debugger
  • Fluxos de trabalho de projeto: project, batch_operations
  • Version tracking: vt_sessions, vt_operations

Modelos de Recursos

  • Visão geral do projeto: ghidra://programs
  • Visualizações do programa: ghidra://program/{name}/info, ghidra://program/{name}/functions, ghidra://program/{name}/symbols, ghidra://program/{name}/datatypes, ghidra://program/{name}/memory
  • Visualizações de triagem: ghidra://program/{name}/imports, ghidra://program/{name}/exports, ghidra://program/{name}/strings, ghidra://program/{name}/rtti
  • Visualizações de código: ghidra://program/{name}/listing/{address}, ghidra://program/{name}/function/{address}/decompile

Prompts

  • analyze_function
  • analyze_vtable
  • compare_binaries
  • find_vulnerabilities
  • map_data_structures
  • rename_analysis
  • triage_binary

🚀 Instalação

Requer Ghidra 12.1.

  1. Baixe o arquivo zip da versão mais recente na página Releases.
  2. No Ghidra, vá para File -> Install Extensions....
  3. Clique no botão + (Adicionar extensão) no canto superior direito.
  4. Navegue até o arquivo zip baixado e selecione-o.
  5. Certifique-se de que a extensão GhidraMCP esteja marcada na lista e clique em OK.
  6. Reinicie o Ghidra.

▶️ Uso

  1. Inicie o Ghidra com a extensão GhidraMCP habilitada.
  2. Confirme a porta do servidor em Configuration.
  3. Aponte seu cliente MCP para http://127.0.0.1:8080/mcp (ou sua porta personalizada).

[!WARNING] Diálogos de Erro de Script: Algumas operações orientadas por script podem abrir um diálogo de erro do Ghidra. Feche o diálogo antes de continuar, ou as solicitações podem parecer travadas.

[!TIP] Encontrando nomes de programas: Use o recurso ghidra://programs para ver os nomes exatos dos programas disponíveis no projeto atual.

⚙️ Configuração

O servidor GhidraMCP pode ser configurado por meio das configurações de nível de aplicativo do Ghidra:

  1. No Ghidra, vá para BrowserEditTool Options.
  2. No painel esquerdo, expanda Miscellaneous e selecione GhidraMCP HTTP Server.
  3. Configure as seguintes opções:
    • Server Port: O número da porta para o servidor MCP (padrão: 8080)
    • Auto-start Server: Se o servidor deve iniciar automaticamente quando o Ghidra for iniciado
    • Request Timeout (seconds): Tempo máximo permitido para uma solicitação MCP antes do timeout (padrão: 600)
  4. Clique em OK para salvar suas configurações.

🛠️ Compilando a partir do Código Fonte

Se você está instalando a partir de um zip de release do GitHub, pode pular esta seção. As etapas abaixo são apenas para compilar a partir do código fonte.

  1. Clone o repositório:

    git clone https://github.com/themixednuts/GhidraMCP.git
    
  2. Certifique-se de ter o JDK 21 ou posterior instalado.

  3. Compile o projeto com just:

    just package
    

    Para executar as mesmas verificações usadas pelo CI principal de build:

    just ci
    

    Ou use o wrapper do Gradle diretamente:

    bash ./gradlew package
    

    No Windows PowerShell, use:

    .\gradlew.bat package
    

    Os jars do Ghidra são baixados automaticamente do zip de release oficial na primeira execução.

    Pontos de entrada úteis para desenvolvimento:

    • just test executa a suíte de testes unitários
    • just test-e2e executa a suíte de testes de ponta a ponta
    • just update-verification-metadata atualiza as somas de verificação de verificação de dependências do Gradle após alterações manuais de dependências
    • O fluxo de trabalho manual "Dependency Maintenance" do GitHub valida candidatos de atualização de dependências e do Ghidra sem abrir PRs de bot
  4. O arquivo zip instalável é gravado em target/ (por exemplo, target/GhidraMCP-0.8.0.zip). Instale-o usando as etapas acima.

Opcional: Instalar Verificações Locais de Pre-commit

Para executar verificações de formatação e testes de integração completos antes de cada commit:

just install-hooks

O hook de pre-commit instalado executa:

  • just fmt-check
  • just test
  • just test-e2e

🔌 Configurando um Cliente MCP

Use esta URL do servidor no seu cliente:

  • http://127.0.0.1:8080/mcp (ou sua porta personalizada)

A maioria dos clientes usa uma configuração como:

{
  "mcpServers": {
    "ghidra": {
      "url": "http://127.0.0.1:8080/mcp"
    }
  }
}

Instruções de Configuração do Cliente

Claude Claude Desktop

Caminho do config:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Adicione a configuração JSON acima e reinicie o Claude Desktop.

Claude Claude Code (CLI)
claude mcp add ghidra "http://127.0.0.1:8080/mcp" --transport http
Cursor Cursor

Caminho do config manual: ~/.cursor/mcp_settings.json

OpenCode OpenCode

Use ~/.config/opencode/opencode.json (ou opencode.json no nível do projeto):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ghidra": {
      "type": "remote",
      "url": "http://127.0.0.1:8080/mcp",
      "enabled": true
    }
  }
}
Codex Codex CLI
codex mcp add ghidra --url http://127.0.0.1:8080/mcp

Ou adicione isso a ~/.codex/config.toml:

[mcp_servers.ghidra]
url = "http://127.0.0.1:8080/mcp"

[!IMPORTANT] A porta padrão é 8080 (configurável no Ghidra: BrowserEditTool OptionsMiscellaneousGhidraMCP HTTP Server). Se você alterar a porta, atualize a configuração do seu cliente de acordo. O Ghidra deve estar em execução com a extensão habilitada para que o cliente possa se conectar.

[!NOTE] Problemas de Timeout: Se você encontrar problemas de timeout, consulte o guia de configuração de timeout do Ghidra.

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar pull requests ou abrir issues.


Agradecimentos

Este projeto é fortemente inspirado e baseado no trabalho de LaurieWired. Em vez de usar uma ponte, este plugin incorpora diretamente o servidor no plugin.