
Ghidra MCP для командной строки на Python
pyghidra-mcp — это сервер Model Context Protocol (MCP) с интерфейсом командной строки, который предоставляет всю аналитическую мощь Ghidra — полнофункционального набора для обратной разработки (software reverse engineering, 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 и передаёт текущее состояние программы в работающий графический интерфейс[!NOTE] Этот бета-проект находится в активной разработке. Мы будем рады вашим отзывам, сообщениям об ошибках, запросам функций и коду.
Да, оригинальный ghidra-mcp замечателен. Но pyghidra-mcp выбирает другой подход:
--gui, когда нужна живая навигация и редактирование в GUI.Этот проект предлагает подход «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["stdio or streamable-http"]
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 -->|"stdio or HTTP"| Transport
Cli -->|"HTTP only"| Transport
Transport --> Tools
Tools --> Context
Context --> Project
Context --> Artifacts
Context -.-> Gui
User -.-> Gui
Gui -.-> Project
### Выбор режима```mermaid
flowchart TD
Start["What do you need?"]
Start --> Headless["Agent or automation only"]
Start --> GuiNeed["Live Ghidra GUI control"]
Start --> Terminal["Interactive terminal client"]
Headless --> Stdio["pyghidra-mcp -t stdio<br/>or -t 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"]
stdio для локальных MCP-хостов или streamable-http, когда нескольким клиентам нужен один долго работающий проект Ghidra.pyghidra-mcp запускает Ghidra, открывает проект и предоставляет дополнительные инструменты, управляющие CodeBrowser в той же JVM.pyghidra-mcp-cli — это HTTP-клиент. Сначала запустите сервер streamable-http, затем направляйте команды терминала на этот работающий сервер.subgraph Transports
Stdio["stdio"]
Http["streamable-http"]
Sse["sse legacy"]
end
subgraph Server["pyghidra-mcp server"]
FastMcp["FastMCP 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 --> Stdio
Agent --> Http
Automation --> Stdio
Automation --> Http
Automation --> Sse
Cli --> Http
Stdio --> FastMcp
Http --> FastMcp
Sse --> FastMcp
FastMcp --> Context
Context --> PyGhidra
PyGhidra --> Jpype
Jpype --> Project
Project --> Programs
Context --> Indexing
Indexing --> Search
FastMcp --> Tools
Tools --> Context
GuiOnly -.-> CodeBrowser
Context -.-> CodeBrowser
</details>
## Содержание