Skip to main content
Glama
README.md
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/LaurieWired/GhidraMCP)](https://github.com/LaurieWired/GhidraMCP/releases)
[![GitHub stars](https://img.shields.io/github/stars/LaurieWired/GhidraMCP)](https://github.com/LaurieWired/GhidraMCP/stargazers)
[![GitHub forks](https://img.shields.io/github/forks/LaurieWired/GhidraMCP)](https://github.com/LaurieWired/GhidraMCP/network/members)
[![GitHub contributors](https://img.shields.io/github/contributors/LaurieWired/GhidraMCP)](https://github.com/LaurieWired/GhidraMCP/graphs/contributors)
[![Follow @lauriewired](https://img.shields.io/twitter/follow/lauriewired?style=social)](https://twitter.com/lauriewired)

![ghidra_MCP_logo](https://github.com/user-attachments/assets/4986d702-be3f-4697-acce-aea55cd79ad3)


# ghidraMCP
ghidraMCP is an Model Context Protocol server for allowing LLMs to autonomously reverse engineer applications. It exposes numerous tools from core Ghidra functionality to MCP clients.

https://github.com/user-attachments/assets/36080514-f227-44bd-af84-78e29ee1d7f9


# Features
MCP Server + Ghidra Plugin

- Decompile and analyze binaries in Ghidra
- Automatically rename methods and data
- List methods, classes, imports, and exports

# Installation

> **Ghidra 12.1.2 Compatible Fork** — This fork updates the plugin to build and run on Ghidra 12.1.2.  
> The original upstream targets Ghidra 11.3.2.

## Changes Made for Ghidra 12.1.2 Compatibility

The original plugin was built for Ghidra 11.3.2. To make it work on Ghidra 12.1.2, these changes were made:

- **`extension.properties`** — Updated `version` and `ghidraVersion` from `11.3.2` to `12.1.2` so Ghidra accepts the extension.
- **`pom.xml`** — Updated all Ghidra dependency version references from `11.3.2` to `12.1.2`.
- **`lib/GhidraMCP.jar`** — Recompiled the plugin against Ghidra 12.1.2 API JARs (no source code changes were needed — all APIs used by the plugin are stable across these versions).
- **`README.md`** — Updated install/build instructions for Ghidra 12.1.2.

The plugin source code (`GhidraMCPPlugin.java`) required no modifications. Only the build configuration and metadata files were updated.

## Prerequisites
- Install [Ghidra](https://ghidra-sre.org) 12.1.2
- Python3
- MCP [SDK](https://github.com/modelcontextprotocol/python-sdk)

## Ghidra
Download the `GhidraMCP-12.1.2.zip` from this repository's releases. Then import it into Ghidra:

1. Run Ghidra
2. Select `File` -> `Install Extensions`
3. Click the `+` button
4. Select the `GhidraMCP-12.1.2.zip`
5. Restart Ghidra
6. Enable the plugin in `File` -> `Configure` -> `Developer` -> `GhidraMCPPlugin`
7. *Optional*: Configure the port in `Edit` -> `Tool Options` -> `GhidraMCP HTTP Server`

Video Installation Guide:


https://github.com/user-attachments/assets/75f0c176-6da1-48dc-ad96-c182eb4648c3



## MCP Clients

Theoretically, any MCP client should work with ghidraMCP.  Three examples are given below.

## Example 1: Claude Desktop
To set up Claude Desktop as a Ghidra MCP client, go to `Claude` -> `Settings` -> `Developer` -> `Edit Config` -> `claude_desktop_config.json` and add the following:

```json
{
  "mcpServers": {
    "ghidra": {
      "command": "python",
      "args": [
        "/ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py",
        "--ghidra-server",
        "http://127.0.0.1:8080/"
      ]
    }
  }
}
```

Alternatively, edit this file directly:
```
/Users/YOUR_USER/Library/Application Support/Claude/claude_desktop_config.json
```

The server IP and port are configurable and should be set to point to the target Ghidra instance. If not set, both will default to localhost:8080.

## Example 2: Cline
To use GhidraMCP with [Cline](https://cline.bot), this requires manually running the MCP server as well. First run the following command:

```
python bridge_mcp_ghidra.py --transport sse --mcp-host 127.0.0.1 --mcp-port 8081 --ghidra-server http://127.0.0.1:8080/
```

The only *required* argument is the transport. If all other arguments are unspecified, they will default to the above. Once the MCP server is running, open up Cline and select `MCP Servers` at the top.

![Cline select](https://github.com/user-attachments/assets/88e1f336-4729-46ee-9b81-53271e9c0ce0)

Then select `Remote Servers` and add the following, ensuring that the url matches the MCP host and port:

1. Server Name: GhidraMCP
2. Server URL: `http://127.0.0.1:8081/sse`

## Example 3: 5ire
Another MCP client that supports multiple models on the backend is [5ire](https://github.com/nanbingxyz/5ire). To set up GhidraMCP, open 5ire and go to `Tools` -> `New` and set the following configurations:

1. Tool Key: ghidra
2. Name: GhidraMCP
3. Command: `python /ABSOLUTE_PATH_TO/bridge_mcp_ghidra.py`

# Building from Source (Ghidra 12.1.2)

1. Copy the following JARs from your Ghidra 12.1.2 installation into `lib/`:
   - `Ghidra/Features/Base/lib/Base.jar`
   - `Ghidra/Features/Decompiler/lib/Decompiler.jar`
   - `Ghidra/Framework/Docking/lib/Docking.jar`
   - `Ghidra/Framework/Generic/lib/Generic.jar`
   - `Ghidra/Framework/Project/lib/Project.jar`
   - `Ghidra/Framework/SoftwareModeling/lib/SoftwareModeling.jar`
   - `Ghidra/Framework/Utility/lib/Utility.jar`
   - `Ghidra/Framework/Gui/lib/Gui.jar`

2. Build with Maven:
   ```
   mvn clean package assembly:single
   ```
   Or compile directly with javac:
   ```
   javac --release 21 -cp $(find /path/to/ghidra_12.1.2_PUBLIC -name '*.jar' -path '*/lib/*' | tr '\n' ':') -d build src/main/java/com/lauriewired/GhidraMCPPlugin.java && jar cfm lib/GhidraMCP.jar src/main/resources/META-INF/MANIFEST.MF -C build com/
   ```

The generated zip (`target/GhidraMCP-1.0-SNAPSHOT.zip`) contains:
- `lib/GhidraMCP.jar`
- `extension.properties`
- `Module.manifest`

> **Note:** `lib/.gitignore` ignores all JARs — the Ghidra dependency JARs and the built `GhidraMCP.jar` are local only and not committed.