
pyghidra-mcp v0.2.4
Python Ghidra MCP de línea de comandos
PyGhidra-MCP - Servidor del Protocolo de Contexto de Modelo para Ghidra
Descripción general
pyghidra-mcp es un servidor de línea de comandos del Protocolo de Contexto de Modelo (MCP) que lleva todo el poder analítico de Ghidra, una robusta suite de ingeniería inversa de software (SRE), al mundo de los agentes inteligentes y las herramientas basadas en LLM.
Conecta la ProgramAPI y la FlatProgramAPI de Ghidra con Python usando pyghidra y jpype, y luego expone esa funcionalidad a través del Protocolo de Contexto de Modelo.
MCP es una interfaz unificada que permite a los modelos de lenguaje, las herramientas de desarrollo (como VS Code) y los agentes autónomos acceder a contexto estructurado, invocar herramientas y colaborar de forma inteligente. Piense en MCP como el puente entre las potentes herramientas de análisis y el ecosistema de LLM.
Con pyghidra-mcp, Ghidra se convierte en un backend inteligente, listo para responder a consultas ricas en contexto, automatizar tareas profundas de ingeniería inversa e integrarse en flujos de trabajo asistidos por IA.
pyghidra-mcp ahora admite dos modos de funcionamiento:
- modo
headlesspara análisis y automatización dirigidos por CLI - modo
--gui, que lanza Ghidra a través depyghidra-mcpy comparte el estado del programa en vivo con la GUI en ejecución
[!NOTE] Este proyecto beta está en desarrollo activo. Nos encantaría recibir sus comentarios, informes de errores, solicitudes de funciones y código.
¿Otro Ghidra MCP más?
Sí, el ghidra-mcp original es fantástico. Pero pyghidra-mcp adopta un enfoque diferente:
- 🐍 Headless-first, con capacidad de GUI – Se ejecuta completamente a través de CLI para una automatización optimizada, o lanza Ghidra con
--guicuando desea navegación y edición en vivo mediante la GUI. - 🔁 Diseñado para la automatización – Ideal para integrarse con LLM, pipelines de CI y herramientas que necesitan un comportamiento repetible.
- ✅ Compatible con CI/CD – Construido con sólidas pruebas unitarias y de integración tanto para sesiones de cliente como de servidor.
- 🚀 Inicio rápido – El inicio asíncrono permite que el servidor comience a gestionar solicitudes mientras los binarios aún se están analizando en segundo plano. Admite un lanzamiento rápido desde la línea de comandos con una configuración mínima.
- 📦 Análisis de todo el proyecto – Permite la ingeniería inversa concurrente de todos los binarios de un proyecto de Ghidra
- 🤖 Listo para agentes – Construido para flujos de trabajo impulsados por agentes inteligentes y automatización de ingeniería inversa a gran escala.
- 🔍 Búsqueda semántica de código – Utiliza incrustaciones vectoriales (mediante ChromaDB) para permitir una búsqueda rápida y difusa en funciones descompiladas, comentarios y símbolos, perfecta para la exploración de pseudocódigo y el triaje dirigido por agentes.
Este proyecto ofrece una experiencia centrada en Python, optimizada para el desarrollo local, entornos headless y flujos de trabajo comprobables.
Diagramas de configuración
Cómo se conectan las piezas
flowchart LR
subgraph Clients["Clients"]
Agent["MCP host / agent"]
Cli["pyghidra-mcp-cli"]
User["Ghidra user"]
end
subgraph Process["pyghidra-mcp process"]
Transport["streamable HTTP (recommended)<br/>stdio (local fallback)"]
Tools["MCP tools"]
Context["PyGhidra context"]
end
Project["Ghidra project<br/>.gpr / .rep"]
Artifacts["MCP artifacts<br/>ChromaDB + GZF cache"]
Gui["Ghidra GUI / CodeBrowser<br/>only with --gui"]
Agent -->|"HTTP (recommended)"| Transport
Cli -->|"HTTP only"| Transport
Transport --> Tools
Tools --> Context
Context --> Project
Context --> Artifacts
Context -.-> Gui
User -.-> Gui
Gui -.-> Project
Elegir un modo
flowchart TD
Start["What do you need?"]
Start --> Headless["Agent or automation"]
Start --> GuiNeed["Live Ghidra GUI control"]
Start --> Terminal["Interactive terminal client"]
Headless --> Http["pyghidra-mcp<br/>--transport streamable-http"]
GuiNeed --> GuiMode["pyghidra-mcp --gui<br/>--transport streamable-http<br/>--project-path project.gpr"]
Terminal --> HttpServer["Start pyghidra-mcp<br/>--transport streamable-http"]
HttpServer --> CliMode["Run pyghidra-mcp-cli commands"]
- MCP sin interfaz gráfica: usa
streamable-http. Mantiene Ghidra y su proyecto activos como un único servidor de larga duración y funciona tanto con hosts MCP como con el cliente CLI. - Modo GUI:
pyghidra-mcpinicia Ghidra, abre el proyecto y expone herramientas adicionales que controlan el CodeBrowser en la misma JVM. - Cliente CLI:
pyghidra-mcp-clies un cliente HTTP. Inicia primero un servidorstreamable-httpy luego emite comandos de terminal contra ese servidor en ejecución. - stdio: consérvalo solo para hosts MCP que no puedan conectarse a un endpoint HTTP.
Arquitectura detallada y superficie de herramientas
flowchart TD
subgraph Clients
Agent["LLM / MCP host"]
Cli["pyghidra-mcp-cli"]
Automation["scripts and CI"]
end
subgraph Transports
Stdio["stdio"]
Http["streamable-http"]
Sse["sse legacy"]
end
subgraph Server["pyghidra-mcp server"]
McpServer["MCPServer tool server"]
Context["PyGhidra context"]
Indexing["background analysis and Chroma indexing"]
subgraph Tools["MCP tools"]
Analysis["decompile, xrefs, bytes, callgraph"]
Search["symbols, strings, code"]
ProjectOps["import, delete, metadata, list binaries"]
Edits["rename function, rename variable, set type, set prototype, set comment"]
GuiOnly["GUI only: open program, goto, list open programs, set current program"]
end
end
subgraph GhidraRuntime["Ghidra runtime"]
PyGhidra["pyghidra"]
Jpype["JPype shared JVM"]
Project["Ghidra project"]
Programs["program databases"]
CodeBrowser["Ghidra GUI / CodeBrowser"]
end
Agent --> Http
Automation --> Http
Automation --> Sse
Cli --> Http
Stdio --> McpServer
Http --> McpServer
Sse --> McpServer
McpServer --> Context
Context --> PyGhidra
PyGhidra --> Jpype
Jpype --> Project
Project --> Programs
Context --> Indexing
Indexing --> Search
McpServer --> Tools
Tools --> Context
GuiOnly -.-> CodeBrowser
Context -.-> CodeBrowser