TG

themixednuts/ghidramcp

Developer tools
72 stars 0 forks 품질 55 트렌드 55

If your browser/GitHub blocks custom URI handlers, use the web fallback: Cursor install fallback

개요

If your browser/GitHub blocks custom URI handlers, use the web fallback: Cursor install fallback

README

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:
    • 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)
  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 JDK 21 or later installed.

  3. Build the project with just:

    just package
    

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

    just ci
    

    Or use the Gradle wrapper directly:

    bash ./gradlew package
    

    On Windows PowerShell, use:

    .\gradlew.bat package
    

    Ghidra jars are fetched automatically from the official release zip on first run.

    Useful development entrypoints:

    • just test runs the unit suite
    • just test-e2e runs the end-to-end suite
    • just update-verification-metadata refreshes Gradle dependency verification checksums after manual dependency changes
    • The manual “Dependency Maintenance” GitHub workflow validates dependency and Ghidra update candidates without opening bot PRs
  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-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:

{
  "mcpServers": {
    "ghidra": {
      "url": "http://127.0.0.1:8080/mcp"
    }
  }
}

Client Setup Instructions


[!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.

View this README on GitHub

설치

This server does not publish a one-line install command.

Open the repository installation guide

설정

{ "mcpServers": { "ghidra": { "url": "http://127.0.0.1:8080/mcp" } } }