GhidraMCP
GhidraMCP
Documentation
GhidraMCP
> Connect Ghidra to MCP-compatible clients
Related project: WinDbg MCP Server
✨ Features
- 14 MCP tools covering analysis, inspection, editing, project workflows, and Version Tracking
- MCP resources for common program views such as program info, listing, imports/exports, strings, RTTI, and decompilation
- Built-in MCP prompts and argument completions for common reverse engineering workflows
- Structured responses with explicit per-call limits and opaque cursors for large datasets
- Large outputs are bounded by tool arguments such as `page_size`, `max_lines`, or `max_results`; pass returned `next_cursor` values back as `cursor` to continue
- Debugger support for Trace RMI connect/accept/launch, target lifecycle, trace/thread/stack/object discovery, live memory/register/watch operations, static mappings, remote methods, and emulation
- Typed memory mapping applies a data type and returns bounded byte-to-field rows for program memory or the active debugger trace
- Project workflows can rebase program image bases explicitly or from a PE binary's stated ImageBase
- Focused CodeBrowser and Debugger operations automatically navigate the user's active Ghidra UI to the relevant function or address
Tool Commands
- Analysis & inspection: `analyze`, `inspect`, `script_guidance`
- Program changes: `annotate`, `functions`, `symbols`, `data_types`, `memory`, `delete`
- Debugging: `debugger`
- Project workflows: `project`, `batch_operations`
- Version tracking: `vt_sessions`, `vt_operations`
Resource Templates
- Project overview: `ghidra://programs`
- Program views: `ghidra://program/{name}/info`, `ghidra://program/{name}/functions`, `ghidra://program/{name}/symbols`, `ghidra://program/{name}/datatypes`, `ghidra://program/{name}/memory`
- Triage views: `ghidra://program/{name}/imports`, `ghidra://program/{name}/exports`, `ghidra://program/{name}/strings`, `ghidra://program/{name}/rtti`
- Code views: `ghidra://program/{name}/listing/{address}`, `ghidra://program/{name}/function/{address}/decompile`
Prompts
- `analyze_function`
- `analyze_vtable`
- `compare_binaries`
- `find_vulnerabilities`
- `map_data_structures`
- `rename_analysis`
- `triage_binary`
🚀 Installation
Requires Ghidra `12.1`.
1. Download the latest release `zip` file from the
Releases page.
2. In Ghidra, go to `File` -> `Install Extensions...`.
3. Click the `+` button (Add extension) in the top right corner.
4. Navigate to the downloaded `zip` file and select it.
5. Ensure the `GhidraMCP` extension is checked in the list and click `OK`.
6. Restart Ghidra.
▶️ Usage
1. Start Ghidra with the GhidraMCP extension enabled.
2. Confirm the server port in Configuration.
3. Point your MCP client to `http://127.0.0.1:8080/mcp` (or your custom port).
> [!WARNING]
> Script Error Dialogs: Some script-driven operations can open a Ghidra error
> dialog. Close the dialog before continuing, or requests may appear to hang.
> [!TIP]
> Finding program names: Use the `ghidra://programs` resource to see the
> exact program names available in the current project.
⚙️ Configuration
The GhidraMCP server can be configured through Ghidra's application-level
settings:
1. In Ghidra, go to Browser → Edit → Tool Options.
2. In the left panel, expand Miscellaneous and select **GhidraMCP HTTP
Server**.
3. Configure the following options:
Ghidra launches
before timing out (default: 600)
4. Click OK to save your settings.
🛠️ Building from Source
If you are installing from a GitHub release zip, you can skip this section.
The steps below are only for building from source.
1. Clone the repository:
git clone https://github.com/themixednuts/GhidraMCP.git2. Ensure you have JDK 21 or later installed.
3. Build the project with `just`:
just packageTo run the same checks used by the main build CI:
just ciOr use the Gradle wrapper directly:
bash ./gradlew packageOn Windows PowerShell, use:
.\gradlew.bat packageGhidra jars are fetched automatically from the official release zip on first run.
Useful development entrypoints:
4. The installable `zip` file is written to `target/` (for example,
`target/GhidraMCP-0.8.0.zip`). Install it using the steps above.
Optional: Install Local Pre-commit Checks
To run formatting checks and full integration tests before every commit:
just install-hooksThe installed pre-commit hook runs:
- `just fmt-check`
- `just test`
- `just test-e2e`
🔌 Configuring an MCP Client
Use this server URL in your client:
- `http://127.0.0.1:8080/mcp` (or your custom port)
Most clients use a config like:
{
"mcpServers": {
"ghidra": {
"url": "http://127.0.0.1:8080/mcp"
}
}
}Client Setup Instructions
Claude Desktop
Config path:
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
Add the JSON config above, then restart Claude Desktop.
Claude Code (CLI)
claude mcp add ghidra "http://127.0.0.1:8080/mcp" --transport http Cursor
Manual config path: `~/.cursor/mcp_settings.json`
OpenCode
Use `~/.config/opencode/opencode.json` (or project-level `opencode.json`):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ghidra": {
"type": "remote",
"url": "http://127.0.0.1:8080/mcp",
"enabled": true
}
}
} Codex CLI
codex mcp add ghidra --url http://127.0.0.1:8080/mcpOr add this to `~/.codex/config.toml`:
[mcp_servers.ghidra]
url = "http://127.0.0.1:8080/mcp"> [!IMPORTANT]
> The default port is `8080` (configurable in Ghidra: Browser → Edit →
> Tool Options → Miscellaneous → GhidraMCP HTTP Server). If you
> change the port, update your client configuration accordingly. Ghidra must be
> running with the extension enabled for the client to connect.
> [!NOTE]
> Timeout Issues: If you encounter timeout problems, refer to the
> Ghidra timeout configuration guide.
🤝 Contributing
Contributions are welcome! Please feel free to submit pull requests or open
issues.
Acknowledgements
This project is heavily inspired by and based on the work of
LaurieWired. Instead of using a bridge, this
plugin directly embeds the server in the plugin.
Frequently asked questions
What is GhidraMCP?
GhidraMCP is GhidraMCP
How do I install GhidraMCP?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is GhidraMCP open source?
Yes — it is hosted on GitHub at https://github.com/themixednuts/GhidraMCP and has 76 stars.
Related MCP tools
MCP Server for Ghidra Java-based implementation. Trusted by 6400+ developers. Trusted by 6400+ developers. Trusted by 6400+ developers.
The official Java SDK for Model Context Protocol servers and clients. Maintained in collaboration with Spring AI Trusted by 2800+ developers.
A library for communication with a Minecraft client/server. Built for the Model Context Protocol to enhance AI capabilities. Java-based implementation.
Model Context Protocol Servers
Pre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, OpenCode, AntiGravity, Kiro, CoPilot, and Hermes Agent — fewer tokens, fewer tool calls, 100% local
an open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP