GhidraMCP

An embedded MCP server for Ghidra, exposing program data and reverse engineering functionalities.

Install MCP Server

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


✨ Features

  • 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

Tool Commands

  • 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

🚀 Installation

  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] Missing file_name: Use list_programs to see available programs and pass the exact name returned by that tool.

⚙️ Configuration

The GhidraMCP server can be configured through Ghidra's application-level settings:

  1. In Ghidra, go to BrowserEditTool Options.
  2. In the left panel, expand Miscellaneous and select GhidraMCP HTTP Server.
  3. 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
  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.git
    
  2. Ensure you have Apache Maven 3.6.3+ and JDK 21 or later installed.

  3. Build the project (Ghidra jars are fetched automatically on first run):

    ./build.sh clean package
    

    Or manually bootstrap and build with Maven directly:

    mvn -f bootstrap.xml initialize        # first time only
    mvn clean package
    
  4. The installable zip file is written to target/ (for example, target/GhidraMCP-0.6.2.zip). Install it using the steps above.

Optional: Install Local Pre-commit Checks

To run formatting checks and full integration tests before every commit:

./scripts/install-git-hooks.sh

The installed pre-commit hook runs:

  • mvn spotless:check
  • mvn test -De2e.integration=true

🔌 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

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 mcp add ghidra "http://127.0.0.1:8080/mcp" --transport http

Manual config path: ~/.cursor/mcp_settings.json

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 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: BrowserEditTool OptionsMiscellaneousGhidraMCP 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.

Related Servers