
Ghidra-MCP für die Python-Kommandozeile
pyghidra-mcp ist ein kommandozeilenbasierter Model Context Protocol (MCP)-Server, der die volle Analyseleistung von Ghidra, einer robusten Software-Reverse-Engineering-(SRE)-Suite, in die Welt intelligenter Agenten und LLM-basierter Tooling-Umgebungen bringt.
Er verbindet Gidras ProgramAPI und FlatProgramAPI über pyghidra und jpype mit Python und stellt diese Funktionalität anschließend über das Model Context Protocol bereit.
MCP ist eine einheitliche Schnittstelle, die es Sprachmodellen, Entwicklungswerkzeugen (wie VS Code) und autonomen Agenten ermöglicht, auf strukturierten Kontext zuzugreifen, Tooling aufzurufen und intelligent zusammenzuarbeiten. Man kann sich MCP als die Brücke zwischen leistungsstarken Analysewerkzeugen und dem LLM-Ökosystem vorstellen.
Mit pyghidra-mcp wird Ghidra zu einem intelligenten Backend – bereit, kontextreiche Abfragen zu beantworten, tiefgehende Reverse-Engineering-Aufgaben zu automatisieren und in KI-gestützte Workflows integriert zu werden.
pyghidra-mcp unterstützt jetzt zwei Betriebsmodi:
headless-Modus für CLI-gesteuerte Analyse und Automatisierung--gui-Modus, der Ghidra über pyghidra-mcp startet und den Live-Programmzustand mit der laufenden GUI teilt[!NOTE] Dieses Beta-Projekt befindet sich in aktiver Entwicklung. Wir freuen uns über Feedback, Fehlerberichte, Feature-Anfragen und Code.
Ja, das ursprüngliche ghidra-mcp ist fantastisch. Aber pyghidra-mcp verfolgt einen anderen Ansatz:
--gui, wenn Sie Live-GUI-Navigation und -Bearbeitung wünschen.Dieses Projekt bietet eine Python-first-Erfahrung, optimiert für lokale Entwicklung, Headless-Umgebungen und testbare Workflows.
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
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"]
streamable-http verwenden. Es hält Ghidra und sein Projekt als einen lang laufenden Server am Leben und funktioniert sowohl mit MCP-Hosts als auch mit dem CLI-Client.pyghidra-mcp startet Ghidra, öffnet das Projekt und stellt zusätzliche Tools bereit, die den CodeBrowser in derselben JVM steuern.pyghidra-mcp-cli ist ein HTTP-Client. Zuerst einen streamable-http-Server starten, dann Terminalbefehle gegen diesen laufenden Server absetzen.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