LaurieWired / GhidraMCP
git clone https://github.com/LaurieWired/GhidraMCP.git
2.0 · 11d ago
🔥 on GitHub Trending today
MCP server and Ghidra plugin that lets LLM clients decompile binaries, rename symbols, and list functions, classes, imports, and exports.
Why you might care
Connects MCP-compatible LLM clients like VS Code and Claude Code to a running Ghidra instance so models can drive reverse-engineering tasks. Includes a headless mode via PyGhidra that analyzes a binary without the Ghidra GUI.
+10
stars, 24h · #1,351
+314
stars, 7 days · #410
+1.4k
stars, 30 days · #389
11k
★ total · +3% this week
1.2k
forks · 94 open issues
Star history (as recorded here)
LanguageJava
LicenseApache-2.0
Created2025-03-23 (1y ago)
Last push11d ago
Watchers84
OwnerUser
Seen on GitHub Trending
- 2026-10-22 — #4 monthly in java · +1,369 ★
- 2026-10-21 — #3 monthly in java · +1,355 ★
- 2026-10-21 — #10 weekly in java · +265 ★
- 2026-10-20 — #3 monthly in java · +1,339 ★
- 2026-10-20 — #10 weekly in java · +314 ★
Links
README excerpt
# 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 ## Prerequisites - Install Ghidra 12.1.4 - Install uv (or Python 3.10+ with `pip install git+https://github.com/LaurieWired/GhidraMCP`, then use `ghidra-mcp` as the command below) ## Ghidra First, download the latest release from this repository. This contains the Ghidra plugin and Python MCP client. Then, you can directly import the plugin into Ghidra. 1. Run Ghidra 2. Select `File` -> `Install Extensions` 3. Click the `+` button 4. Select the `ghidra_12.1.4_PUBLIC_ _GhidraMCP.zip` from the downloaded release 5. Restart Ghidra 6. Make sure the GhidraMCPPlugin is enabled in `File` -> `Configure` -> `Developer` 7. *Optional*: Configure the port in Ghidra with `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. Most clients accept a JSON config like the following: [code] 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. For clients that connect to a URL instead of launching a command, first run the MCP server yourself: [code] Then add `http://127.0.0.1:8081/mcp` as a remote server in your client. ## Example 1: VS Code Run `MCP: Add Server` from the Command Palette, or add the following to `.vscode/mcp.json` in your workspace: [code] ## Example 2: Claude Code Run the following command: [code] ## Headless (no Ghidra GUI) `ghidra-mcp` can also import and analyze a binary itself using PyGhidra, with no Ghidra GUI running. This needs Python 3.10–3.13, the GhidraMCP extension installed in Ghidra (or `--extension-jar /path/to/GhidraMCP.jar`), and `GHIDRA_INSTALL_DIR` set to your Ghidra 12.1.4 directory: [code] Use the same command and arguments in any of the client configs above. Add `--project DIR` to keep the Ghidra project (and save changes) between runs. On macOS, build Ghidra's decompiler once with `support/gradle/gradlew buildNatives` from the Ghidra directory. # Building from Source 1. Set `GHIDRA_INSTALL_DIR` to your Ghidra 12.1.4 directory 2. Build the extension with Gradle (Java 21) by running: `cd extension && $GHIDRA_INSTALL_DIR/support/gradle/gradlew buildExtension` The generated zip file in `extension/dist/` includes the built Ghidra plugin and its resources. These files are required for Ghidra to recognize the new extension. - lib/GhidraMCP.jar - extension.properties - Module.manifest The Python MCP server can
Blurb generated by claude-haiku-5-5 1d ago. Star deltas marked ~ are extrapolated from partial history.