If your browser/GitHub blocks custom URI handlers, use the web fallback: Cursor install fallback
Connect Ghidra to MCP-compatible clients
Related project: WinDbg MCP Server
- 30 MCP tools for reverse engineering, editing, search, and version tracking
- Structured responses with pagination and opaque cursors for large datasets
- In-memory and project-backed Version Tracking workflows for correlation, match triage, and markup
- Core analysis:
analyze_rtti,decompile_code,demangle_symbol,script_guidance - Read/query:
read_symbols,read_memory_blocks,read_functions,read_data_types,read_listing,find_references,list_analysis_options,list_programs,search_memory - Modify/manage:
manage_data_types,manage_functions,manage_memory,manage_project,manage_symbols,delete_bookmark,delete_data_type,delete_function,delete_symbol - Version tracking:
manage_vt_session,run_vt_correlator,read_vt_matches,manage_vt_matches,manage_vt_markup - Utilities:
batch_operations,undo_redo,read_tool_output
- 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.
- 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
Missing file_name: Use list_programs to see available programs and pass
the exact name returned by that tool.
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
- Click OK to save your settings.
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 dependency changes
-
The installable
zipfile is written totarget/(for example,target/GhidraMCP-0.6.2.zip). Install it using the steps above.
To run formatting checks and full integration tests before every commit:
just install-hooks
The installed pre-commit hook runs:
just fmt-checkjust testjust test-e2e
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"
}
}
}
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.
Cursor
- Install via deep link
- Install via web fallback
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
Or 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.
Contributions are welcome! Please feel free to submit pull requests or open issues.
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.