trackmcp
Back to directory

GhidraMCP

76 stars JavaOthers Updated Sep 4, 2026

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

      bash
      git clone https://github.com/themixednuts/GhidraMCP.git

      2. Ensure you have JDK 21 or later installed.

      3. Build the project with `just`:

      bash
      just package

      To run the same checks used by the main build CI:

      bash
      just ci

      Or use the Gradle wrapper directly:

      bash
      bash ./gradlew package

      On Windows PowerShell, use:

      powershell
      .\gradlew.bat package

      Ghidra 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:

        bash
        just install-hooks

        The 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:

        json
        {
          "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)

        bash
        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`):

        json
        {
          "$schema": "https://opencode.ai/config.json",
          "mcp": {
            "ghidra": {
              "type": "remote",
              "url": "http://127.0.0.1:8080/mcp",
              "enabled": true
            }
          }
        }

         Codex CLI

        bash
        codex mcp add ghidra --url http://127.0.0.1:8080/mcp

        Or add this to `~/.codex/config.toml`:

        toml
        [mcp_servers.ghidra]
        url = "http://127.0.0.1:8080/mcp"

        > [!IMPORTANT]

        > The default port is `8080` (configurable in Ghidra: BrowserEdit

        > Tool 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.

        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

        Run your own MCP server? See who uses it and what to fix.

        Measure it with TrackMCP