
pyghidra-mcp v0.2.5
Python Ghidra MCP da riga di comando
PyGhidra-MCP - Server Model Context Protocol per Ghidra
Panoramica
pyghidra-mcp è un server Model Context Protocol (MCP) da riga di comando che porta tutta la potenza analitica di Ghidra, una solida suite di reverse engineering del software (SRE), nel mondo degli agenti intelligenti e degli strumenti basati su LLM.
Collega le ProgramAPI e FlatProgramAPI di Ghidra a Python usando pyghidra e jpype, per poi esporre tale funzionalità tramite il Model Context Protocol.
MCP è un'interfaccia unificata che consente a modelli linguistici, strumenti di sviluppo (come VS Code) e agenti autonomi di accedere a contesto strutturato, invocare strumenti e collaborare in modo intelligente. Pensate a MCP come al ponte tra potenti strumenti di analisi e l'ecosistema degli LLM.
Con pyghidra-mcp, Ghidra diventa un backend intelligente—pronto a rispondere a query ricche di contesto, automatizzare attività di reverse engineering approfondite e integrarsi in flussi di lavoro assistiti dall'IA.
pyghidra-mcp ora supporta due modalità operative:
- modalità
headlessper analisi e automazione guidate da CLI - modalità
--gui, che avvia Ghidra tramitepyghidra-mcpe condivide lo stato del programma in tempo reale con la GUI in esecuzione
[!NOTE] Questo progetto beta è in fase di sviluppo attivo. Gradiremmo il vostro feedback, segnalazioni di bug, richieste di funzionalità e codice.
L'ennesimo Ghidra MCP?
Sì, l'originale ghidra-mcp è fantastico. Ma pyghidra-mcp adotta un approccio diverso:
- 🐍 Headless-first, GUI-capable – Eseguibile interamente via CLI per un'automazione snella, oppure avvia Ghidra con
--guiquando desideri navigazione ed editing in tempo reale tramite GUI. - 🔁 Progettato per l'automazione – Ideale per l'integrazione con LLM, pipeline CI e strumenti che richiedono un comportamento ripetibile.
- ✅ Compatibile con CI/CD – Costruito con solidi test unitari e di integrazione sia per le sessioni client che server.
- 🚀 Avvio rapido – L'avvio asincrono consente al server di iniziare a gestire richieste mentre i binari sono ancora in fase di analisi in background. Supporta l'avvio rapido da riga di comando con configurazione minima.
- 📦 Analisi a livello di progetto – Consente il reverse engineering concorrente di tutti i binari in un progetto Ghidra
- 🤖 Pronto per gli agenti – Costruito per flussi di lavoro guidati da agenti intelligenti e automazione del reverse engineering su larga scala.
- 🔍 Ricerca semantica del codice – Utilizza embedding vettoriali (tramite ChromaDB) per consentire una ricerca rapida e fuzzy tra funzioni decompilate, commenti e simboli—perfetto per l'esplorazione di pseudo-C e il triage guidato da agenti.
Questo progetto offre un'esperienza Python-first ottimizzata per lo sviluppo locale, ambienti headless e flussi di lavoro testabili.
Diagrammi di configurazione
Come si collegano i componenti
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
Scegliere una Modalità
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"]
- Headless MCP: usa
streamable-http. Mantiene Ghidra e il suo progetto attivi come un unico server a esecuzione prolungata e funziona sia con host MCP sia con il client CLI. - Modalità GUI:
pyghidra-mcpavvia Ghidra, apre il progetto ed espone strumenti aggiuntivi che guidano il CodeBrowser nella stessa JVM. - Client CLI:
pyghidra-mcp-cliè un client HTTP. Avvia prima un serverstreamable-http, poi invia comandi da terminale a quel server in esecuzione. - stdio: mantienilo solo per gli host MCP che non possono connettersi a un endpoint HTTP.
Architettura dettagliata e superficie degli strumenti
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