Volver a actualizaciones
Nuevo releaseAug 3, 2026

pyghidra-mcp v0.2.4

Python Ghidra MCP de línea de comandos

Compartir

GitHub Workflow Status (with event) PyPI - Downloads

PyGhidra-MCP - Servidor del Protocolo de Contexto del Modelo de Ghidra

Visión general

pyghidra-mcp es un servidor de línea de comandos del Protocolo de Contexto del Modelo (MCP) que trae todo el poder analítico de Ghidra, un robusto conjunto de herramientas 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 del Modelo.

MCP es una interfaz unificada que permite a los modelos de lenguaje, herramientas de desarrollo (como VS Code) y agentes autónomos acceder a contexto estructurado, invocar herramientas y colaborar inteligentemente. Piensa en MCP como el puente entre potentes herramientas de análisis y el ecosistema 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 soporta dos modos de operación:

  • modo headless para análisis y automatización desde la línea de comandos
  • modo --gui, que inicia Ghidra a través de pyghidra-mcp y 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 tus comentarios, informes de errores, solicitudes de funciones y código.

¿Otro MCP de Ghidra?

Sí, el ghidra-mcp original es fantástico. Pero pyghidra-mcp adopta un enfoque diferente:

  • 🐍 Prioriza el modo headless, con capacidad de GUI – Ejecútalo completamente desde la línea de comandos para una automatización optimizada, o inicia Ghidra con --gui cuando quieras navegación y edición en vivo en la GUI.
  • 🔁 Diseñado para automatización – Ideal para integrarse con LLMs, pipelines de CI y herramientas que necesitan comportamiento repetible.
  • ✅ Amigable con CI/CD – Construido con pruebas unitarias y de integración robustas tanto para sesiones de cliente como de servidor.
  • 🚀 Inicio rápido – El inicio asíncrono permite que el servidor comience a manejar solicitudes mientras los binarios aún se analizan en segundo plano. Soporta lanzamiento rápido desde la línea de comandos con configuración mínima.
  • 📦 Análisis a nivel de proyecto – Permite la ingeniería inversa concurrente de todos los binarios en 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 embeddings vectoriales (a través de ChromaDB) para permitir búsquedas rápidas y difusas en funciones descompiladas, comentarios y símbolos—perfecto para exploración de pseudo-C y clasificación impulsada por agentes.

Este proyecto ofrece una experiencia centrada en Python optimizada para el desarrollo local, entornos sin interfaz gráfica y flujos de trabajo comprobables.

Diagramas de configuración

Cómo se conectan las piezas```mermaid

flowchart LR subgraph Clients["Clients"] Agent["MCP host / agent"] Cli["pyghidra-mcp-cli"] User["Ghidra user"] end

subgraph Process["pyghidra-mcp process"]
    Transport["stdio or streamable-http"]
    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 -->|"stdio or HTTP"| Transport
Cli -->|"HTTP only"| Transport
Transport --> Tools
Tools --> Context
Context --> Project
Context --> Artifacts
Context -.-> Gui
User -.-> Gui
Gui -.-> Project
### Eligiendo un Modo```mermaid
flowchart TD
    Start["What do you need?"]
    Start --> Headless["Agent or automation only"]
    Start --> GuiNeed["Live Ghidra GUI control"]
    Start --> Terminal["Interactive terminal client"]

    Headless --> Stdio["pyghidra-mcp -t stdio<br/>or -t 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"]
  • Headless MCP: usa stdio para hosts MCP locales, o streamable-http cuando varios clientes necesitan el mismo proyecto Ghidra de larga duración.
  • Modo GUI: pyghidra-mcp lanza Ghidra, abre el proyecto y expone herramientas adicionales que dirigen el CodeBrowser en la misma JVM.
  • Cliente CLI: pyghidra-mcp-cli es un cliente HTTP. Primero inicia un servidor streamable-http, luego ejecuta comandos de terminal contra ese servidor en ejecución.
Arquitectura detallada y superficie de herramientas```mermaid 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"]
    FastMcp["FastMCP 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 --> Stdio
Agent --> Http
Automation --> Stdio
Automation --> Http
Automation --> Sse
Cli --> Http

Stdio --> FastMcp
Http --> FastMcp
Sse --> FastMcp

FastMcp --> Context
Context --> PyGhidra
PyGhidra --> Jpype
Jpype --> Project
Project --> Programs
Context --> Indexing
Indexing --> Search

FastMcp --> Tools
Tools --> Context
GuiOnly -.-> CodeBrowser
Context -.-> CodeBrowser
</details>

## Contenido

Categorías