
MCP-сервер для Ghidra

ghidraMCP — это сервер Model Context Protocol, позволяющий LLM автономно выполнять обратную разработку приложений. Он предоставляет MCP-клиентам множество инструментов из базовой функциональности Ghidra.
https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9
MCP-сервер + плагин Ghidra
pip install git+https://github.com/LaurieWired/GhidraMCP, затем используйте ghidra-mcp в качестве команды ниже)Сначала скачайте последний релиз из этого репозитория. Он содержит плагин Ghidra и Python MCP-клиент. Затем вы можете напрямую импортировать плагин в Ghidra.
File -> Install Extensions+ghidra_12.1.4_PUBLIC_<date>_GhidraMCP.zip из скачанного релизаFile -> Configure -> DeveloperEdit -> Tool Options -> GhidraMCP HTTP ServerВидеоруководство по установке:
https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3
Теоретически, любой MCP-клиент должен работать с ghidraMCP. Большинство клиентов принимают JSON-конфигурацию следующего вида:
{
"mcpServers": {
"ghidra": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
IP-адрес и порт сервера настраиваются и должны указывать на целевой экземпляр Ghidra. Если они не заданы, оба по умолчанию будут localhost:8080.
Для клиентов, которые подключаются к URL вместо запуска команды, сначала запустите MCP-сервер самостоятельно:
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/
Затем добавьте http://127.0.0.1:8081/mcp в качестве удалённого сервера в вашем клиенте.
Выполните MCP: Add Server из палитры команд или добавьте следующее в .vscode/mcp.json в вашем рабочем пространстве:
{
"servers": {
"ghidra": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"git+https://github.com/LaurieWired/GhidraMCP",
"ghidra-mcp",
"--ghidra-server",
"http://127.0.0.1:8080/"
]
}
}
}
Выполните следующую команду:
claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --ghidra-server http://127.0.0.1:8080/
ghidra-mcp также может самостоятельно импортировать и анализировать бинарный файл с помощью PyGhidra, без запущенного Ghidra GUI. Для этого требуются Python 3.10–3.13, расширение GhidraMCP, установленное в Ghidra (или --extension-jar /path/to/GhidraMCP.jar), и переменная GHIDRA_INSTALL_DIR, указывающая на ваш каталог 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
Используйте ту же команду и аргументы в любой из конфигураций клиентов выше. Добавьте --project DIR, чтобы сохранять проект Ghidra (и вносимые изменения) между запусками. В macOS соберите декомпилятор Ghidra один раз с помощью support/gradle/gradlew buildNatives из каталога Ghidra.
GHIDRA_INSTALL_DIR в ваш каталог Ghidra 12.1.4cd extension && $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension
Сгенерированный zip-файл в extension/dist/ содержит собранный плагин Ghidra и его ресурсы. Эти файлы необходимы для того, чтобы Ghidra распознала новое расширение.
Python MCP-сервер можно запустить из рабочей копии с помощью uv run ghidra-mcp и протестировать с помощью uv run pytest.