
Python Ghidra MCP da riga di comando
pyghidra-mcp è un server Model Context Protocol (MCP) da riga di comando che porta tutta la potenza analitica di Ghidra, una suite robusta per il reverse engineering del software (SRE), nel mondo degli agenti intelligenti e degli strumenti basati su LLM.
Collega la ProgramAPI e la FlatProgramAPI di Ghidra a Python usando pyghidra e jpype, quindi espone queste 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 contesti strutturati, invocare strumenti e collaborare in modo intelligente. Pensa 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à complesse di reverse engineering e integrarsi in flussi di lavoro assistiti dall'IA.
pyghidra-mcp ora supporta due modalità operative:
headless per analisi e automazione guidate da CLI--gui, che avvia Ghidra tramite pyghidra-mcp e condivide lo stato live del programma con la GUI in esecuzione[!NOTE] Questo progetto beta è in fase di sviluppo attivo. Apprezziamo feedback, segnalazioni di bug, richieste di funzionalità e codice.
Sì, l'originale ghidra-mcp è fantastico. Ma pyghidra-mcp adotta un approccio diverso:
--gui quando vuoi navigazione e modifiche live nella GUI.Questo progetto offre un'esperienza Python-first ottimizzata per lo sviluppo locale, ambienti headless e flussi di lavoro testabili.
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
### Scegliere una modalità```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"]
stdio per host MCP locali, oppure streamable-http quando più client necessitano dello stesso progetto Ghidra a lunga esecuzione.pyghidra-mcp avvia Ghidra, apre il progetto ed espone strumenti aggiuntivi che guidano il CodeBrowser nella stessa JVM.pyghidra-mcp-cli è un client HTTP. Avvia prima un server streamable-http, poi invia comandi da terminale verso quel server in esecuzione.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>
## Contenuti