
MCP-Server für Ghidra

ghidraMCP ist ein Model Context Protocol-Server, der es LLMs ermöglicht, Anwendungen autonom zu reverse-engineeren. Er stellt MCP-Clients zahlreiche Werkzeuge aus der Kernfunktionalität von Ghidra zur Verfügung.
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
MCP-Server + Ghidra-Plugin
pip install git+https://github.com/LaurieWired/GhidraMCP, und verwende dann ghidra-mcp als Befehl wie unten)Lade zunächst die neueste Version aus diesem Repository herunter. Diese enthält das Ghidra-Plugin und den Python-MCP-Client. Anschließend kannst du das Plugin direkt in Ghidra importieren.
File -> Install Extensions+ghidra_12.1.4_PUBLIC_<date>_GhidraMCP.zip aus der heruntergeladenen VersionFile -> Configure -> Developer aktiviert istEdit -> Tool Options -> GhidraMCP HTTP ServerVideo-Installationsanleitung:
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
Theoretisch sollte jeder MCP-Client mit ghidraMCP funktionieren. Die meisten Clients akzeptieren eine JSON-Konfiguration wie die folgende:
{
"mcpServers": {
"ghidra": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
Die Server-IP und der Port sind konfigurierbar und sollten so eingestellt werden, dass sie auf die Ziel-Ghidra-Instanz zeigen. Wenn sie nicht festgelegt sind, werden beide standardmäßig auf localhost:8080 gesetzt.
Für Clients, die sich mit einer URL verbinden, anstatt einen Befehl zu starten, führe zuerst den MCP-Server selbst aus:
uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --transport streamable-http --mcp-host 127.0.0.1 --mcp-port 8081 --ghidra-server http://127.0.0.1:8080/
Füge dann http://127.0.0.1:8081/mcp als Remote-Server in deinem Client hinzu.
Führe MCP: Add Server über die Befehlspalette aus, oder füge Folgendes zu .vscode/mcp.json in deinem Workspace hinzu:
{
"servers": {
"ghidra": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
Führe den folgenden Befehl aus:
claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --ghidra-server http://127.0.0.1:8080/
ghidra-mcp kann auch selbst eine Binärdatei mit PyGhidra importieren und analysieren, ohne dass eine Ghidra-GUI läuft. Dies erfordert Python 3.10–3.13, die in Ghidra installierte GhidraMCP-Erweiterung (oder --extension-jar /path/to/GhidraMCP.jar) und GHIDRA_INSTALL_DIR, das auf dein Ghidra-12.1.4-Verzeichnis gesetzt ist:
uvx --python 3.13 --from "ghidra-mcp[headless] @ git+https://github.com/LaurieWired/GhidraMCP" ghidra-mcp --headless --binary /path/to/target
Verwende denselben Befehl und dieselben Argumente in einer der obigen Client-Konfigurationen. Füge --project DIR hinzu, um das Ghidra-Projekt (und die gespeicherten Änderungen) zwischen den Ausführungen beizubehalten. Unter macOS baue den Dekompiler von Ghidra einmalig mit support/gradle/gradlew buildNatives aus dem Ghidra-Verzeichnis.
GHIDRA_INSTALL_DIR auf dein Ghidra-12.1.4-Verzeichniscd extension && $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension
Die generierte Zip-Datei in extension/dist/ enthält das gebaute Ghidra-Plugin und seine Ressourcen. Diese Dateien sind erforderlich, damit Ghidra die neue Erweiterung erkennt.
Der Python-MCP-Server kann aus einem Checkout mit uv run ghidra-mcp ausgeführt und mit uv run pytest getestet werden.