
Ghidra MCP en ligne de commande Python
pyghidra-mcp est un serveur Model Context Protocol (MCP) en ligne de commande qui apporte toute la puissance analytique de Ghidra, une suite robuste de rétro-ingénierie logicielle (SRE), dans le monde des agents intelligents et des outils basés sur les LLM.
Il relie le ProgramAPI et le FlatProgramAPI de Ghidra à Python via pyghidra et jpype, puis expose cette fonctionnalité via le Model Context Protocol.
MCP est une interface unifiée qui permet aux modèles de langage, aux outils de développement (comme VS Code) et aux agents autonomes d'accéder à un contexte structuré, d'invoquer des outils et de collaborer intelligemment. Considérez MCP comme le pont entre les outils d'analyse puissants et l'écosystème des LLM.
Avec pyghidra-mcp, Ghidra devient un backend intelligent—prêt à répondre à des requêtes riches en contexte, à automatiser des tâches de rétro-ingénierie approfondies et à s'intégrer dans des flux de travail assistés par IA.
pyghidra-mcp prend désormais en charge deux modes de fonctionnement :
headless pour l'analyse et l'automatisation pilotées par CLI--gui, qui lance Ghidra via pyghidra-mcp et partage l'état du programme en direct avec l'interface graphique en cours d'exécution[!NOTE] Ce projet bêta est en cours de développement actif. Nous serions ravis de recevoir vos retours, signalements de bugs, demandes de fonctionnalités et contributions de code.
Oui, le ghidra-mcp original est fantastique. Mais pyghidra-mcp adopte une approche différente :
--gui lorsque vous souhaitez une navigation et des modifications en direct dans l'interface graphique.Ce projet offre une expérience Python-first optimisée pour le développement local, les environnements headless et les flux de travail testables.
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
### Choisir un mode```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 pour les hôtes MCP locaux, ou streamable-http lorsque plusieurs clients doivent partager un même projet Ghidra de longue durée.pyghidra-mcp lance Ghidra, ouvre le projet et expose des outils supplémentaires qui pilotent le CodeBrowser dans la même JVM.pyghidra-mcp-cli est un client HTTP. Démarrez d'abord un serveur streamable-http, puis envoyez des commandes terminal à ce serveur en cours d'exécution.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>
## Sommaire