
MCP Server per Ghidra

ghidraMCP è un server Model Context Protocol che consente agli LLM di effettuare reverse engineering delle applicazioni in modo autonomo. Espone numerosi strumenti della funzionalità principale di Ghidra ai client MCP.
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
Server MCP + Plugin Ghidra
pip install git+https://github.com/LaurieWired/GhidraMCP, quindi usa ghidra-mcp come comando di seguito)Per prima cosa, scarica l'ultima release da questo repository. Questa contiene il plugin Ghidra e il client MCP Python. Poi, puoi importare direttamente il plugin in Ghidra.
File -> Install Extensions+ghidra_12.1.4_PUBLIC_<date>_GhidraMCP.zip dalla release scaricataFile -> Configure -> DeveloperEdit -> Tool Options -> GhidraMCP HTTP ServerVideo guida all'installazione:
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
In teoria, qualsiasi client MCP dovrebbe funzionare con ghidraMCP. La maggior parte dei client accetta una configurazione JSON come la seguente:
{
"mcpServers": {
"ghidra": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
L'IP e la porta del server sono configurabili e dovrebbero essere impostati per puntare all'istanza Ghidra di destinazione. Se non impostati, entrambi utilizzeranno come valore predefinito localhost:8080.
Per i client che si connettono a un URL invece di avviare un comando, esegui prima il server MCP manualmente:
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/
Poi aggiungi http://127.0.0.1:8081/mcp come server remoto nel tuo client.
Esegui MCP: Add Server dalla Command Palette, oppure aggiungi quanto segue al file .vscode/mcp.json nel tuo workspace:
{
"servers": {
"ghidra": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
Esegui il seguente comando:
claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --ghidra-server http://127.0.0.1:8080/
ghidra-mcp può anche importare e analizzare un binario da solo utilizzando PyGhidra, senza alcuna GUI di Ghidra in esecuzione. Questo richiede Python 3.10–3.13, l'estensione GhidraMCP installata in Ghidra (oppure --extension-jar /path/to/GhidraMCP.jar), e GHIDRA_INSTALL_DIR impostata sulla tua directory di Ghidra 12.1.4:
uvx --python 3.13 --from "ghidra-mcp[headless] @ git+https://github.com/LaurieWired/GhidraMCP" ghidra-mcp --headless --binary /path/to/target
Usa lo stesso comando e gli stessi argomenti in una qualsiasi delle configurazioni client sopra. Aggiungi --project DIR per conservare il progetto Ghidra (e salvare le modifiche) tra un'esecuzione e l'altra. Su macOS, compila il decompilatore di Ghidra una volta con support/gradle/gradlew buildNatives dalla directory di Ghidra.
GHIDRA_INSTALL_DIR sulla tua directory di Ghidra 12.1.4cd extension && $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension
Il file zip generato in extension/dist/ include il plugin Ghidra compilato e le sue risorse. Questi file sono necessari affinché Ghidra riconosca la nuova estensione.
Il server MCP Python può essere eseguito da un checkout con uv run ghidra-mcp, e testato con uv run pytest.