
Serveur MCP pour Ghidra

ghidraMCP est un serveur Model Context Protocol permettant aux LLM de faire du reverse engineering d'applications de manière autonome. Il expose de nombreux outils issus des fonctionnalités principales de Ghidra aux clients MCP.
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
Serveur MCP + Plugin Ghidra
pip install git+https://github.com/LaurieWired/GhidraMCP, puis utiliser ghidra-mcp comme commande ci-dessous)Tout d'abord, téléchargez la dernière release depuis ce dépôt. Celle-ci contient le plugin Ghidra et le client MCP Python. Vous pouvez ensuite importer directement le plugin dans Ghidra.
File -> Install Extensions+ghidra_12.1.4_PUBLIC_<date>_GhidraMCP.zip depuis la release téléchargéeFile -> Configure -> DeveloperEdit -> Tool Options -> GhidraMCP HTTP ServerGuide d'installation en vidéo :
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
Théoriquement, n'importe quel client MCP devrait fonctionner avec ghidraMCP. La plupart des clients acceptent une configuration JSON comme celle-ci :
{
"mcpServers": {
"ghidra": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
L'IP et le port du serveur sont configurables et doivent être définis pour pointer vers l'instance Ghidra cible. S'ils ne sont pas définis, les deux utiliseront par défaut localhost:8080.
Pour les clients qui se connectent à une URL au lieu de lancer une commande, exécutez d'abord le serveur MCP vous-même :
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/
Ajoutez ensuite http://127.0.0.1:8081/mcp comme serveur distant dans votre client.
Exécutez MCP: Add Server depuis la palette de commandes, ou ajoutez ce qui suit dans .vscode/mcp.json de votre espace de travail :
{
"servers": {
"ghidra": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
Exécutez la commande suivante :
claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --ghidra-server http://127.0.0.1:8080/
ghidra-mcp peut également importer et analyser un binaire par lui-même en utilisant PyGhidra, sans GUI Ghidra en cours d'exécution. Cela nécessite Python 3.10–3.13, l'extension GhidraMCP installée dans Ghidra (ou --extension-jar /path/to/GhidraMCP.jar), et GHIDRA_INSTALL_DIR défini sur votre répertoire 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
Utilisez la même commande et les mêmes arguments dans n'importe laquelle des configurations client ci-dessus. Ajoutez --project DIR pour conserver le projet Ghidra (et sauvegarder les modifications) entre les exécutions. Sur macOS, compilez le décompilateur de Ghidra une fois avec support/gradle/gradlew buildNatives depuis le répertoire Ghidra.
GHIDRA_INSTALL_DIR sur votre répertoire Ghidra 12.1.4cd extension && $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension
Le fichier zip généré dans extension/dist/ inclut le plugin Ghidra compilé et ses ressources. Ces fichiers sont nécessaires pour que Ghidra reconnaisse la nouvelle extension.
Le serveur MCP Python peut être exécuté depuis un checkout avec uv run ghidra-mcp, et testé avec uv run pytest.