GhidraMCP
Um servidor MCP embutido para Ghidra, expondo dados de programa e funcionalidades de engenharia reversa.
Documentação
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_linesoumax_results; passe os valores denext_cursorretornados de volta comocursorpara 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_functionanalyze_vtablecompare_binariesfind_vulnerabilitiesmap_data_structuresrename_analysistriage_binary
🚀 Instalação
Requer Ghidra 12.1.
- Baixe o arquivo
zipda versão mais recente na página Releases. - No Ghidra, vá para
File->Install Extensions.... - Clique no botão
+(Adicionar extensão) no canto superior direito. - Navegue até o arquivo
zipbaixado e selecione-o. - Certifique-se de que a extensão
GhidraMCPesteja marcada na lista e clique emOK. - Reinicie o Ghidra.
▶️ Uso
- Inicie o Ghidra com a extensão GhidraMCP habilitada.
- Confirme a porta do servidor em Configuration.
- 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://programspara 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:
- No Ghidra, vá para Browser → Edit → Tool Options.
- No painel esquerdo, expanda Miscellaneous e selecione GhidraMCP HTTP Server.
- 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)
- 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.
-
Clone o repositório:
git clone https://github.com/themixednuts/GhidraMCP.git -
Certifique-se de ter o JDK 21 ou posterior instalado.
-
Compile o projeto com
just:just packagePara executar as mesmas verificações usadas pelo CI principal de build:
just ciOu use o wrapper do Gradle diretamente:
bash ./gradlew packageNo Windows PowerShell, use:
.\gradlew.bat packageOs jars do Ghidra são baixados automaticamente do zip de release oficial na primeira execução.
Pontos de entrada úteis para desenvolvimento:
just testexecuta a suíte de testes unitáriosjust test-e2eexecuta a suíte de testes de ponta a pontajust update-verification-metadataatualiza 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
-
O arquivo
zipinstalável é gravado emtarget/(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-checkjust testjust 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 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 Code (CLI)
claude mcp add ghidra "http://127.0.0.1:8080/mcp" --transport http
Cursor
Caminho do config manual: ~/.cursor/mcp_settings.json
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 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: Browser → Edit → Tool Options → Miscellaneous → GhidraMCP 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.