Skip to content

Back to the catalog

duty1g/x64dbg-mcp-server
github.comrepo

duty1g/x64dbg-mcp-server

x64dbg-MCP Server is a native, dependency-free Zig plugin for the x64dbg debugger that exposes 84 MCP tools and 22 event callbacks over Streamable HTTP and SSE transports, letting any MCP-compatible AI assistant drive breakpoints, stepping, memory reads/writes, register and stack inspection, pattern scanning, PE analysis, and module dumping. It implements the MCP 2024-11-05 spec with JSON-RPC 2.0, mandatory bearer-token auth, a Win32 config dialog, and cross-compiles to both x32 and x64 from a single codebase. The project targets AI-assisted reverse engineering and malware-analysis workflows, turning a traditional interactive debugger into an agent-controllable backend.

TL;DR A Zig-built MCP server plugin that gives AI assistants full programmatic control of the x64dbg debugger over HTTP/SSE.
Also seen from another angle🛡️ Security →
Document

What it claims

A Zig-built x64dbg plugin (.dp32 / .dp64) that runs an MCP server inside the debugger process. Any MCP client can call debugger operations as tools. The page lists 84 tools in the feature list but says "72 MCP tools" in the tools section, so the exact count is unclear. The licence is MIT.

How it works

  1. On startup, the plugin resolves the x64dbg API symbols at runtime from x64bridge.dll and x64dbg.dll. It does not link against the SDK at build time.
  2. It starts an HTTP server on a background thread. The server is up as soon as x64dbg launches.
  3. JSON-RPC requests are dispatched to tool handlers in src/mcp/tools.zig. Each handler maps directly to an x64dbg SDK call.

There is no external process and no polling. The plugin runs in x64dbg's own address space.

The workflow example shows the tool naming style: LoadBinary, SetBreakpoint, run, WaitForPause, GetAllRegisters, ReadMemory, StepOver, GetCallStack. WaitForPause suggests that agents must block explicitly after resuming execution.

How to use it

To install, copy the contents of dist/ (from a release or a local build) into the x64dbg root folder. This deploys both architectures. Each architecture listens on its own default port:

  • x64: 0.0.0.0:9094
  • x32: 0.0.0.0:9095

To connect a client, use Streamable HTTP, which the page recommends. The client config looks like this:

{
  "mcpServers": {
    "x64dbg": {
      "type": "http",
      "url": "http://localhost:9094/",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN_HERE"
      }
    }
  }
}

For legacy clients, use "type": "sse" with the URL http://localhost:9094/sse.

The token is generated automatically on first run. To view, copy or rotate it, go to Plugins > x64dbg-MCP Server > Configure MCP Server.... The same dialog sets the bind address and port. Saving restarts the server, and the settings are persisted to mcp_config.json next to the x64dbg executable.

To build from source, you need Zig 0.16-dev or later. The build runs on Windows, WSL, Linux or macOS and cross-compiles both architectures:

zig build -Doptimize=ReleaseSafe --prefix dist

Limits

  • Exposed on all interfaces by default. The default bind is 0.0.0.0, so the server is reachable from the network unless you change it. Set it to 127.0.0.1 in the config dialog unless you need WSL or remote access.
  • Unencrypted traffic. The server speaks plain HTTP, so the bearer token and all memory contents cross the wire unencrypted. The author warns against exposing the server to untrusted networks.
  • Full control behind one secret. A valid token gives read/write access to process memory and code execution in the debuggee.
  • Older protocol version. It targets MCP 2024-11-05. Check that this works with your client.
  • Unstable toolchain. Building from source depends on a Zig development version (0.16-dev).
  • Inconsistent tool count. The page says 84 tools in one place and 72 in another. Check the actual tool list before relying on a particular operation.

Organisations named here

  • Zig

Technologies named here

  • x64dbg-MCP Server
  • x64dbg
  • Zig
  • Model Context Protocol