{"data":{"slug":"bethington-ghidra-mcp","name":"ghidra-mcp","tagline":"Ghidra MCP Server for AI-powered reverse engineering with over 200 tools","github_url":"https://github.com/bethington/ghidra-mcp","owner":"bethington","repo":"ghidra-mcp","owner_avatar_url":"https://avatars.githubusercontent.com/u/5455441?v=4","primary_language":"Java","stars":3916,"forks":148,"topics":["ai","binary-analysis","ghidra","ghidra-extension","java","mcp","mcp-server","model-context-protocol","python","reverse-engineering","static-analysis"],"archived":false,"github_pushed_at":"2026-09-19T02:34:42+00:00","maintenance_label":"Very active","stars_delta_30d":954,"url":"https://www.graphcanon.com/tools/bethington-ghidra-mcp","markdown_url":"https://www.graphcanon.com/tools/bethington-ghidra-mcp.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/bethington-ghidra-mcp","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=bethington-ghidra-mcp","description":"Ghidra MCP Server — 200+ MCP tools for AI-powered reverse engineering. GUI plugin + headless server, lazy tool loading, convention enforcement, batch operations, Ghidra Server integration, and Docker deployment.","homepage_url":null,"license":"Apache-2.0","open_issues":41,"watchers":10,"ai_summary":"Provides GUI plugin and headless server functionalities for lazy tool loading, convention enforcement, batch operations, Ghidra Server integration, and Docker deployment in the context of AI-assisted binary analysis and static analysis.","readme_excerpt":"### Installation\n\n> Recommended for all platforms: use `python -m tools.setup` directly.\n>\n> `ensure-prereqs` installs runtime Python requirements plus the Ghidra JARs needed in the local Maven repository.\n> `deploy` copies the build output, installs the user-profile extension, and patches Ghidra user config.\n\n1. **Clone the repository:**\n\n   ```bash\n   git clone https://github.com/bethington/ghidra-mcp.git\n   cd ghidra-mcp\n   ```\n\n2. **Recommended: run environment preflight first:**\n\n   ```text\n   python -m tools.setup preflight --ghidra-path \"F:\\ghidra_12.1.2_PUBLIC\"\n   ```\n\n3. **Build and deploy to Ghidra:**\n\n   ```text\n   python -m tools.setup ensure-prereqs --ghidra-path \"F:\\ghidra_12.1.2_PUBLIC\"\n   python -m tools.setup build\n   python -m tools.setup deploy --ghidra-path \"F:\\ghidra_12.1.2_PUBLIC\"\n   ```\n\n   `deploy` saves/closes an already-running matching Ghidra instance when\n   needed, installs the extension, starts Ghidra, waits for MCP health, and runs\n   schema smoke checks.\n\n4. **Optional strict/manual mode** (advanced):\n\n   ```text\n   # Skip automatic prerequisite setup\n   python -m tools.setup build\n   python -m tools.setup deploy --ghidra-path \"F:\\ghidra_12.1.2_PUBLIC\"\n   ```\n\n5. **Show command help**:\n\n   ```text\n   python -m tools.setup --help\n   ```\n\n6. **Optional build-only mode** (advanced/troubleshooting):\n\n   ```text\n   python -m tools.setup build\n   ```\n\n   Two Java backends are supported. **Gradle is the default for local work** — it reads Ghidra's jars straight out of the installation, so there is no `install-file` step and nothing to install beyond a JDK. **CI builds and gates with Maven**, so Maven is a maintained peer rather than a fallback.\n\n   ```bash\n   # Gradle (default) -- the wrapper is committed, so no Gradle install is needed.\n   # -PGHIDRA_INSTALL_DIR or the GHIDRA_INSTALL_DIR env var both work.\n   # In Git Bash use forward slashes; a backslash path is mangled before Gradle sees it.\n   ./gradlew buildExtension -PGHIDRA_INSTALL_DIR=/path/to/ghidra\n   ```\n\n   ```bash\n   # Maven (peer backend; what CI uses). Needs Ghidra's jars in the local .m2 first:\n   #   python -m tools.setup ensure-prereqs --ghidra-path /path/to/ghidra\n   mvn clean package assembly:single -DskipTests\n   ```\n\n   `python -m tools.setup build` routes to Maven by default; set `TOOLS_SETUP_BACKEND=gradle` to route it to Gradle instead.\n\n---\n\n### Installation (Linux — Ubuntu/Debian)\n\n1. **Clone the repository:**\n\n   ```bash\n   git clone https://github.com/bethington/ghidra-mcp.git\n   cd ghidra-mcp\n   ```\n\n2. **Install system prerequisites** (if not already installed):\n\n   ```bash\n   sudo apt update && sudo apt install -y openjdk-21-jdk maven python3 python3-pip python3-venv curl jq unzip\n   ```\n\n   > **Debian/Kali/Ubuntu 23.04+ note (PEP 668):** these distros mark the system\n   > Python as *externally managed*, so a bare `pip install` fails with\n   > `error: externally-managed-environment`. Don't work around it with\n   > `--break-system-packages` — it can corrupt apt-managed tooling. Instead use\n   > [uv](https://docs.astral.sh/uv/) (recommended — it creates and manages a\n   > project-local `.venv` automatically, and is what this repo's commands use):\n   >\n   > ```bash\n   > curl -LsSf https://astral.sh/uv/install.sh | sh\n   > uv run bridge-mcp-ghidra    # resolves deps into .venv and starts the bridge\n   > ```\n   >\n   > or a classic virtual environment:\n   >\n   > ```bash\n   > python3 -m venv .venv && source .venv/bin/activate\n   > pip install -e .\n   > bridge-mcp-ghidra\n   > ```\n\n3. **Run environment preflight:**\n\n   ```bash\n   python -m tools.setup preflight --ghidra-path ~/ghidra_12.1.2_PUBLIC\n   ```\n\n4. **Build and deploy to Ghidra (single command):**\n\n   ```bash\n   python -m tools.setup ensure-prereqs --ghidra-path ~/ghidra_12.1.2_PUBLIC\n   python -m tools.setup build\n   python -m tools.setup deploy --ghidra-path ~/ghidra_12.1.2_PUBLIC\n   ```\n\n   This will:\n   - Install Ghidra JAR dependencies into your local `~/.m2/reposit","github_created_at":"2025-08-30T06:40:03+00:00","created_at":"2026-07-11T11:50:54.022789+00:00","updated_at":"2026-09-20T06:40:42.305637+00:00","categories":[{"slug":"developer-tools","name":"Developer Tools","url":"https://www.graphcanon.com/categories/developer-tools","markdown_url":"https://www.graphcanon.com/categories/developer-tools.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/developer-tools"}],"tags":[{"slug":"ai","name":"ai"},{"slug":"binary-analysis","name":"binary-analysis"},{"slug":"ghidra","name":"ghidra"},{"slug":"ghidra-extension","name":"ghidra-extension"},{"slug":"java","name":"java"},{"slug":"mcp","name":"mcp"},{"slug":"mcp-server","name":"mcp-server"},{"slug":"model-context-protocol","name":"model-context-protocol"}],"trust":{"provenance":{"is_fork":false,"github_id":1047320420,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-09-20T03:52:45.981Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":2,"days_since_push":1,"last_release_at":"2026-07-25T09:05:44Z","stars_delta_30d":954,"open_issues_delta_30d":31},"security_summary":{"status":"no_lockfile","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-26T04:00:28.265Z","medium_count":0,"scan_profile":"none","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-09-20T03:52:47.691Z"},"has_cli":{"value":true,"source":"pyproject.toml:[project.scripts]","observed_at":"2026-09-20T03:52:47.691Z"},"languages":{"value":["java","python"],"source":"github.language+pyproject.toml","observed_at":"2026-09-20T03:52:47.691Z"},"license_spdx":{"value":"Apache-2.0","source":"github.license","observed_at":"2026-09-20T03:52:47.691Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["When working on projects that benefit from integration with over 200 AI-powered reverse engineering tools","For developers who require headless server functionality to automate or batch process tasks without a graphical interface","If Docker deployment is desired for easy setup and management of the Ghidra MCP environment"],"when_not_to_use":["When working in environments where less than 200 reverse engineering tools would suffice","If you do not need lazy tool loading or convention enforcement capabilities that Ghidra MCP specifically offers"],"source":"enrich:decision_facts","observed_at":"2026-07-17T12:59:39.694Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"Ghidra MCP is a plugin and server for AI-assisted binary analysis using Ghidra with more than 200 tools."}]}}