Skip to content

Installation

Terminal window
pip install mcghidra

Or with uv for isolated execution:

Terminal window
uvx mcghidra

This installs the MCP server and bundles the Ghidra plugin JAR. No separate plugin installation is needed — the server deploys the JAR automatically when starting Docker containers.

Add to your Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcghidra": {
"command": "uvx",
"args": ["mcghidra"]
}
}
}
Terminal window
claude mcp add mcghidra -- uvx mcghidra

Or if running from a local clone:

Terminal window
claude mcp add mcghidra -- uv run --directory /path/to/MCGhidra mcghidra

If you want automatic container provisioning:

  1. Clone the repository:

    Terminal window
    git clone https://git.supported.systems/MCP/mcghidra.git
    cd mcghidra
  2. Build the Docker image:

    Terminal window
    cd docker && docker build -t mcghidra:latest -f Dockerfile ..

    Or use the MCP tool:

    docker_build()
  3. The docker_auto_start tool handles everything else — port allocation, container naming, health polling.

For raw binary blobs (firmware dumps, bootloaders), specify the processor architecture:

docker_auto_start(
binary_path="/path/to/firmware.bin",
language="ARM:LE:32:v4t",
base_address="0x00000000"
)

Common language IDs:

TargetLanguage ID
ARM7TDMI (Thumb)ARM:LE:32:v4t
ARM Cortex-MARM:LE:32:Cortex
ARMv7ARM:LE:32:v7
MIPS32 LEMIPS:LE:32:default
MIPS32 BEMIPS:BE:32:default
x86 32-bitx86:LE:32:default
x86-64x86:LE:64:default

When language is specified, the loader is automatically set to BinaryLoader (raw binary import). Override with loader="AutoImporter" if your file has a recognized header format.