
GhidraMCP
β 65from themixednuts
An embedded MCP server for Ghidra, exposing program data and reverse engineering functionalities.
If your browser/GitHub blocks custom URI handlers, use the web fallback: Cursor install fallback
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, ormax_results; pass returnednext_cursorvalues back ascursorto 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_functionanalyze_vtablecompare_binariesfind_vulnerabilitiesmap_data_structuresrename_analysistriage_binary
π οΈ 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.
-
Clone the repository:
git clone https://github.com/themixednuts/GhidraMCP.git -
Ensure you have JDK 21 or later installed.
-
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:
just testruns the unit suitejust test-e2eruns the end-to-end suitejust update-verification-metadatarefreshes Gradle dependency verification checksums after manual dependency changes- The manual "Dependency Maintenance" GitHub workflow validates dependency and Ghidra update candidates without opening bot PRs
-
The installable
zipfile is written totarget/(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-checkjust testjust test-e2e
π€ Contributing
Contributions are welcome! Please feel free to submit pull requests or open issues.
π Installation
Requires Ghidra 12.1.
- Download the latest release
zipfile from the Releases page. - In Ghidra, go to
File->Install Extensions.... - Click the
+button (Add extension) in the top right corner. - Navigate to the downloaded
zipfile and select it. - Ensure the
GhidraMCPextension is checked in the list and clickOK. - Restart Ghidra.
βΆοΈ Usage
- Start Ghidra with the GhidraMCP extension enabled.
- Confirm the server port in Configuration.
- 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://programsresource to see the exact program names available in the current project.
βοΈ Configuration
The GhidraMCP server can be configured through Ghidra's application-level settings:
- In Ghidra, go to Browser β Edit β Tool Options.
- In the left panel, expand Miscellaneous and select GhidraMCP HTTP Server.
- Configure the following options:
- Server Port: The port number for the MCP server (default: 8080)
- Auto-start Server: Whether to automatically start the server when Ghidra launches
- Request Timeout (seconds): Maximum time allowed for an MCP request before timing out (default: 600)
- Click OK to save your settings.
π 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.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
Licensed under MITβ you can use, modify, and redistribute it under that license's terms.
View the full license file on GitHub β