GhidraMCP README

The project's README from github.com/LaurieWired/GhidraMCP. As one markdown file: README.md.

License GitHub release (latest by date) GitHub stars GitHub forks GitHub contributors Follow @lauriewired

ghidra_MCP_logo

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

Installation

Prerequisites

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_<date>_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:

{
  "mcpServers": {
    "ghidra": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/LaurieWired/GhidraMCP",
        "ghidra-mcp",
        "--ghidra-server",
        "http://127.0.0.1:8080/"
      ]
    }
  }
}

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:

uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --transport streamable-http --mcp-host 127.0.0.1 --mcp-port 8081 --ghidra-server http://127.0.0.1:8080/

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:

{
  "servers": {
    "ghidra": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/LaurieWired/GhidraMCP",
        "ghidra-mcp",
        "--ghidra-server",
        "http://127.0.0.1:8080/"
      ]
    }
  }
}

Example 2: Claude Code

Run the following command:

claude mcp add ghidra -- uvx --from git+https://github.com/LaurieWired/GhidraMCP ghidra-mcp --ghidra-server http://127.0.0.1:8080/

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:

uvx --python 3.13 --from "ghidra-mcp[headless] @ git+https://github.com/LaurieWired/GhidraMCP" ghidra-mcp --headless --binary /path/to/target

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.

The Python MCP server can be run from a checkout with uv run ghidra-mcp, and tested with uv run pytest.

GhidraMCP (LaurieWired/GhidraMCP)

Searching Database…

11.4K ·GitHub
Что это такое?GhidraMCP — это сервер Model Context Protocol, который позволяет LLM автономно заниматься реверс-инжинирингом приложений: он открывает ключевую функциональность Ghidra (декомпиляцию, переименование, списки импортов/экспортов) любому MCP-клиенту.
Это плагин для Ghidra или отдельный сервер?И то и другое: это расширение Ghidra (на Java), которое работает внутри Ghidra и открывает HTTP-интерфейс, плюс отдельный MCP-сервер на Python (ghidra-mcp), с которым общаются MCP-клиенты.
Как подключить его к MCP-клиенту?Скачайте zip с релизом, установите плагин в Ghidra через File -> Install Extensions, перезапустите Ghidra и включите его в разделе File -> Configure -> Developer, затем укажите своему MCP-клиенту (например, VS Code или Claude Code) адрес запущенного сервера — по умолчанию это localhost:8080.
Что должно быть установлено, прежде чем пробовать?Нужны Ghidra 12.1.4 и либо uv, либо Python 3.10+ (ставится через pip install git+ и затем запускается как ghidra-mcp).
Нужно ли держать графический интерфейс Ghidra открытым?Нет — в headless-режиме с помощью PyGhidra можно импортировать и проанализировать бинарный файл без графического интерфейса, но потребуется Python 3.10-3.13, jar-файл расширения GhidraMCP и переменная GHIDRAINSTALLDIR; на macOS нужно ещё один раз собрать нативные библиотеки декомпилятора Ghidra.
С какими MCP-клиентами это работает?Теоретически с любым MCP-клиентом; в README есть конфигурации для VS Code (через .vscode/mcp.json) и Claude Code.
Что умеют доступные инструменты?Они могут декомпилировать и анализировать бинарные файлы, автоматически переименовывать методы и данные, а также выводить списки методов, классов, импортов и экспортов прямо из Ghidra.
Можно ли сохранить мой проект Ghidra между запусками в headless-режиме?Да, добавьте --project DIR к команде headless-запуска, чтобы проект и все сохранённые изменения сохранились между запусками.
Size
0.4 MB
Stars
11.4K
Age
1y
Commits · 90 Days