GhidraMCP
Un servidor MCP integrado para Ghidra, que expone datos de programas y funcionalidades de ingeniería inversa.
Documentación
Si tu navegador/GitHub bloquea los manejadores de URI personalizados, usa la alternativa web: Alternativa de instalación para Cursor
GhidraMCP
Conecta Ghidra a clientes compatibles con MCP
Proyecto relacionado: Servidor MCP de WinDbg
✨ Características
- 14 herramientas MCP que cubren análisis, inspección, edición, flujos de trabajo de proyectos y seguimiento de versiones
- Recursos MCP para vistas comunes de programas, como información del programa, listado, importaciones/exportaciones, cadenas, RTTI y descompilación
- Prompts MCP integrados y autocompletado de argumentos para flujos de trabajo comunes de ingeniería inversa
- Respuestas estructuradas con límites explícitos por llamada y cursores opacos para conjuntos de datos grandes
- Las salidas grandes están limitadas por argumentos de herramientas como
page_size,max_linesomax_results; pasa los valores denext_cursordevueltos comocursorpara continuar - Soporte de depurador para conectar/aceptar/iniciar Trace RMI, ciclo de vida del objetivo, descubrimiento de trazas/hilos/pilas/objetos, operaciones en vivo de memoria/registros/vigilancia, mapeos estáticos, métodos remotos y emulación
- El mapeo de memoria tipado aplica un tipo de datos y devuelve filas limitadas de byte a campo para la memoria del programa o la traza activa del depurador
- Los flujos de trabajo de proyectos pueden reubicar las bases de imagen del programa explícitamente o desde la ImageBase declarada de un binario PE
- Las operaciones enfocadas de CodeBrowser y Depurador navegan automáticamente la interfaz activa de Ghidra del usuario a la función o dirección relevante
Comandos de herramientas
- Análisis e inspección:
analyze,inspect,script_guidance - Cambios en el programa:
annotate,functions,symbols,data_types,memory,delete - Depuración:
debugger - Flujos de trabajo de proyectos:
project,batch_operations - Seguimiento de versiones:
vt_sessions,vt_operations
Plantillas de recursos
- Resumen del proyecto:
ghidra://programs - Vistas del programa:
ghidra://program/{name}/info,ghidra://program/{name}/functions,ghidra://program/{name}/symbols,ghidra://program/{name}/datatypes,ghidra://program/{name}/memory - Vistas de triaje:
ghidra://program/{name}/imports,ghidra://program/{name}/exports,ghidra://program/{name}/strings,ghidra://program/{name}/rtti - Vistas de código:
ghidra://program/{name}/listing/{address},ghidra://program/{name}/function/{address}/decompile
Prompts
analyze_functionanalyze_vtablecompare_binariesfind_vulnerabilitiesmap_data_structuresrename_analysistriage_binary
🚀 Instalación
Requiere Ghidra 12.1.4.
- Descarga el archivo
zipde la última versión desde la página de Versiones. - En Ghidra, ve a
File->Install Extensions.... - Haz clic en el botón
+(Agregar extensión) en la esquina superior derecha. - Navega hasta el archivo
zipdescargado y selecciónalo. - Asegúrate de que la extensión
GhidraMCPesté marcada en la lista y haz clic enOK. - Reinicia Ghidra.
▶️ Uso
- Inicia Ghidra con la extensión GhidraMCP habilitada.
- Confirma el puerto del servidor en Configuración.
- Apunta tu cliente MCP a
http://127.0.0.1:8080/mcp(o a tu puerto personalizado).
[!WARNING] Diálogos de error de scripts: Algunas operaciones impulsadas por scripts pueden abrir un diálogo de error de Ghidra. Cierra el diálogo antes de continuar, o las solicitudes pueden parecer que se cuelgan.
[!TIP] Encontrar nombres de programas: Usa el recurso
ghidra://programspara ver los nombres exactos de los programas disponibles en el proyecto actual.
⚙️ Configuración
El servidor GhidraMCP se puede configurar a través de la configuración a nivel de aplicación de Ghidra:
- En Ghidra, ve a Browser → Edit → Tool Options.
- En el panel izquierdo, expande Miscellaneous y selecciona GhidraMCP HTTP Server.
- Configura las siguientes opciones:
- Server Port: El número de puerto para el servidor MCP (predeterminado: 8080)
- Auto-start Server: Si se debe iniciar automáticamente el servidor cuando Ghidra se lance
- Request Timeout (seconds): Tiempo máximo permitido para una solicitud MCP antes de que expire (predeterminado: 600)
- Haz clic en OK para guardar tu configuración.
🛠️ Compilar desde el código fuente
Si estás instalando desde un zip de versión de GitHub, puedes omitir esta sección. Los pasos a continuación son solo para compilar desde el código fuente.
-
Clona el repositorio:
git clone https://github.com/themixednuts/GhidraMCP.git -
Asegúrate de tener JDK 21 o posterior instalado.
-
Compila el proyecto con
just:just packagePara ejecutar las mismas verificaciones que usa el CI de compilación principal:
just ciO usa el envoltorio de Gradle directamente:
bash ./gradlew packageEn Windows PowerShell, usa:
.\gradlew.bat packageLos jars de Ghidra se obtienen automáticamente del zip de versión oficial en la primera ejecución.
Puntos de entrada útiles para desarrollo:
just testejecuta la suite de pruebas unitariasjust test-e2eejecuta la suite de pruebas de extremo a extremojust update-verification-metadataactualiza las sumas de verificación de verificación de dependencias de Gradle después de cambios manuales de dependencias- El flujo de trabajo manual de "Dependency Maintenance" de GitHub valida candidatos de actualización de dependencias y de Ghidra sin abrir PRs de bots
-
El archivo
zipinstalable se escribe entarget/(por ejemplo,target/GhidraMCP-0.9.0.zip). Instálalo usando los pasos anteriores.
Opcional: Instalar verificaciones locales de pre-commit
Para ejecutar verificaciones de formato y pruebas de integración completas antes de cada commit:
just install-hooks
El hook de pre-commit instalado ejecuta:
just fmt-checkjust testjust test-e2e
🔌 Configurar un cliente MCP
Usa esta URL de servidor en tu cliente:
http://127.0.0.1:8080/mcp(o tu puerto personalizado)
La mayoría de los clientes usan una configuración como:
{
"mcpServers": {
"ghidra": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}
Instrucciones de configuración del cliente
Claude Desktop
Ruta de configuración:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Agrega la configuración JSON anterior y luego reinicia Claude Desktop.
Claude Code (CLI)
claude mcp add ghidra "http://127.0.0.1:8080/mcp" --transport http
Cursor
Ruta de configuración manual: ~/.cursor/mcp_settings.json
OpenCode
Usa ~/.config/opencode/opencode.json (o opencode.json a nivel de proyecto):
{
"$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
O agrega esto a ~/.codex/config.toml:
[mcp_servers.ghidra]
url = "http://127.0.0.1:8080/mcp"
[!IMPORTANT] El puerto predeterminado es
8080(configurable en Ghidra: Browser → Edit → Tool Options → Miscellaneous → GhidraMCP HTTP Server). Si cambias el puerto, actualiza la configuración de tu cliente en consecuencia. Ghidra debe estar ejecutándose con la extensión habilitada para que el cliente se conecte.
[!NOTE] Problemas de tiempo de espera: Si encuentras problemas de tiempo de espera, consulta la guía de configuración de tiempo de espera de Ghidra.
🤝 Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar solicitudes de extracción o abrir problemas.
Agradecimientos
Este proyecto está fuertemente inspirado y basado en el trabajo de LaurieWired. En lugar de usar un puente, este plugin integra directamente el servidor en el plugin.