
pyghidra-mcp v0.2.5
Ghidra MCP для командной строки на Python
PyGhidra-MCP - сервер Model Context Protocol для Ghidra
Обзор
pyghidra-mcp — это сервер Model Context Protocol (MCP) с интерфейсом командной строки, который привносит всю аналитическую мощь Ghidra, надёжного набора для обратной разработки программного обеспечения (SRE), в мир интеллектуальных агентов и инструментов на основе LLM.
Он связывает ProgramAPI и FlatProgramAPI Ghidra с Python через pyghidra и jpype, а затем предоставляет эту функциональность через Model Context Protocol.
MCP — это унифицированный интерфейс, позволяющий языковым моделям, инструментам разработки (таким как VS Code) и автономным агентам получать доступ к структурированному контексту, вызывать инструменты и интеллектуально взаимодействовать. Воспринимайте MCP как мост между мощными инструментами анализа и экосистемой LLM.
С pyghidra-mcp Ghidra становится интеллектуальным бэкендом — готовым отвечать на контекстно-насыщенные запросы, автоматизировать глубокие задачи обратной разработки и интегрироваться в рабочие процессы с поддержкой ИИ.
pyghidra-mcp теперь поддерживает два режима работы:
- режим
headlessдля анализа и автоматизации через CLI - режим
--gui, который запускает Ghidra черезpyghidra-mcpи делится текущим состоянием программы с работающим GUI
[!NOTE] Этот бета-проект находится в активной разработке. Мы будем рады вашим отзывам, сообщениям об ошибках, запросам на новые функции и коду.
Ещё один Ghidra MCP?
Да, оригинальный ghidra-mcp великолепен. Но pyghidra-mcp использует другой подход:
- 🐍 Headless-first, с поддержкой GUI – Полностью работает через CLI для оптимизированной автоматизации или запускает Ghidra с
--gui, когда нужна живая навигация и правки в GUI. - 🔁 Создан для автоматизации – Идеален для интеграции с LLM, CI-конвейерами и инструментами, требующими воспроизводимого поведения.
- ✅ Дружелюбен к CI/CD – Построен с надёжными модульными и интеграционными тестами как для клиентских, так и для серверных сессий.
- 🚀 Быстрый запуск – Асинхронный запуск позволяет серверу начинать обработку запросов, пока бинарные файлы всё ещё анализируются в фоне. Поддерживает быстрый запуск из командной строки с минимальной настройкой.
- 📦 Анализ в масштабе проекта – Обеспечивает параллельную обратную разработку всех бинарных файлов в проекте Ghidra
- 🤖 Готов к работе с агентами – Создан для рабочих процессов на основе интеллектуальных агентов и крупномасштабной автоматизации обратной разработки.
- 🔍 Семантический поиск по коду – Использует векторные эмбеддинги (через ChromaDB) для быстрого нечёткого поиска по декомпилированным функциям, комментариям и символам — идеально для исследования псевдокода и сортировки задач агентами.
Этот проект предлагает опыт, ориентированный в первую очередь на Python, оптимизированный для локальной разработки, headless-сред и тестируемых рабочих процессов.
Схемы настройки
Как всё связано
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"]
- Headless MCP: используйте
streamable-http. Он сохраняет Ghidra и её проект как один долго работающий сервер и работает как с MCP-хостами, так и с CLI-клиентом. - Режим GUI:
pyghidra-mcpзапускает Ghidra, открывает проект и предоставляет дополнительные инструменты, управляющие CodeBrowser в той же JVM. - CLI-клиент:
pyghidra-mcp-cli— это HTTP-клиент. Сначала запустите серверstreamable-http, затем отправляйте терминальные команды этому работающему серверу. - stdio: сохраняйте этот режим только для MCP-хостов, которые не могут подключиться к HTTP-эндпоинту.
Подробная архитектура и набор инструментов
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