Ghidra MCP with a model that doesn’t refuse

GhidraMCP exposes Ghidra’s decompiler to any MCP client, so a coding agent can decompile and rename functions on its own. The weak link is the model: mainstream assistants often refuse to reverse a binary. Pair Ghidra MCP with a coding agent running an Obscurify.ai model, and the analysis gets done. The account is a 16-digit number, not an email.

Authorized work only. Reverse engineer your own binaries, CTF challenges, malware you are analyzing, and software you are licensed or legally entitled to examine. Obscurify.ai’s terms prohibit breaking into systems you aren’t authorized to access.

The agent-plus-model half is tested: on 2026-11-08, OpenCode running the pqhaz/deepseek-v4.1-flash-1017-heretic model through Obscurify.ai reverse engineered a small crackme we compiled ourselves — it read .rodata with objdump, recovered the hardcoded password, and ran the binary to confirm. The GhidraMCP wiring below is verified against the project’s README on 2026-11-08.

Before you start

  • Ghidra (the version GhidraMCP’s current release targets) and a JDK.
  • GhidraMCP: download the release, then in Ghidra: File → Install Extensions → +, pick the ..._GhidraMCP.zip, restart, and enable the plugin in File → Configure → Developer. The plugin serves an HTTP endpoint on 127.0.0.1:8080 by default.
  • A coding agent that speaks MCP, such as Cline or OpenCode, already pointed at Obscurify.ai (see those tutorials).
  • An Obscurify.ai API key. Create an account — a 16-digit number, no email. Add credit, then Show API Key.

Add the MCP server to your agent

GhidraMCP ships a Python MCP server you launch with uvx. Most clients take a config like this (point --ghidra-server at the plugin’s HTTP port):

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

In OpenCode, add the same server under the mcp key of opencode.json; in Cline, add it in the MCP settings. GhidraMCP can also run headless (no Ghidra GUI) with PyGhidra — see its README for --headless --binary.

Pick a model

Run your agent on a model that won’t refuse and supports tools. From /v1/models:

  • Uncensored, needs the Pro plan: deepseek/deepseek-v4.1-flash-uncensored or z-ai/glm-5.3-flash-uncensored.
  • Decensored / cybersecurity, any funded account: pqhaz/deepseek-v4.1-flash-1017-heretic (tested on the crackme above), orca/orcacyber-minimax-m3.1-flash, heabsy/cyberheabsy.

Use it

Open your target in Ghidra, then ask your agent, for example: “List the functions, decompile main, and explain how the license check works. This is my own binary.” The agent calls Ghidra through MCP and reasons over the decompiled code with your Obscurify.ai model.

If something fails

  • 402 / 403: no balance, or the model isn’t on your plan (uncensored needs Pro; decensored models work on any funded account).
  • Agent can’t see Ghidra tools: confirm the plugin is enabled and the HTTP port matches --ghidra-server.
  • 404 model_not_found: check the id against /v1/models and keep its prefix.

What stays private

Prompts and responses aren’t stored on Obscurify.ai’s servers; models with the ZDR tag run only on zero-data-retention routes. Providers see the prompt text — including decompiled code your agent sends — but not who sent it. See the privacy policy.

More: Obscurify.ai for agents.