
x64dbg-mcp-server, the community x64dbg MCP plugin by duty1g
Lets your AI assistant drive the x64dbg debugger: load programs, set breakpoints, step through code, and read or patch memory.
This is a community plugin for x64dbg, the free Windows debugger. Once it is in x64dbg's plugins folder, Claude Code and other assistants can load a program, break on functions, step, read registers and memory, and dump modules for you. It needs no Python or .NET and starts with x64dbg. It can also patch memory and run any debugger command, so use it inside an isolated analysis machine.
Good for
- Malware analysts who want an assistant to step through a sample inside an isolated VM
- Reverse engineers who want help reading disassembly, imports, strings and call stacks
- Unpacking work: finding the original entry point and dumping the unpacked module
- Security researchers who want logging breakpoints set up by describing them
- Windows developers debugging a native program with a Claude Code session
Works in
1 supported · 11 should work
Tap an app to see how to set it up and any known problems.
The README gives a .mcp.json entry with the local address and your token in an Authorization header. GitHub
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Client does not support this transport.
Client does not support this transport.
Install x64dbg-mcp-server
Claude Code
- 1
Copy this prompt.
Add the x64dbg-mcp-server server to Claude Code. Open .mcp.json (create it if it does not exist) and merge in this entry, keeping any servers already there: { "mcpServers": { "x64dbg": { "type": "http", "url": "http://localhost:9094/", "headers": { "Authorization": "Bearer <TOKEN>" } } } } Then tell me how to load it and whether I need to sign in. - 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires x64dbg on Windows with the plugin installed, Token from the plugin's config dialog.
Start x64dbg first, then replace <TOKEN> with the token from Plugins, x64dbg-MCP Server, Configure MCP Server. Keep the word Bearer and the space before the token. For 32-bit programs use port 9095. From WSL or another machine, use the Windows host's IP and set the listen address to 0.0.0.0.
From the project README. Source.
Tools
Opens a program in the debugger to start a new session
Opens a program in the debugger and pauses it at the system breakpoint. Any session already running is ended first.
Try: “Load C:\samples\app.exe in the debugger”
Runs code ·
LoadBinaryAttaches the debugger to a program that is already running
Attaches the debugger to a running process by its process ID.
Try: “Attach to process 4312”
Runs code ·
AttachProcessSays whether a program is loaded, running or paused, and where
Shows whether a program is loaded, whether it is running or paused, its process ID, the current instruction and module.
Try: “What is the debugger doing right now?”
Read ·
GetDebugStateStops the program at an address or a function such as CreateFileW
Sets a normal breakpoint at an address or a Windows API function name, so the program pauses there.
Try: “Break on CreateFileW”
Write ·
SetBreakpointResumes the program and waits until it pauses again
Resumes the program and waits until it hits a breakpoint, an exception or exits, up to a timeout.
Try: “Run until the next breakpoint”
Runs code ·
runRuns one instruction, stepping over calls
Runs a single instruction and steps over any function call it meets, like F8.
Try: “Step over the next instruction”
Runs code ·
StepOverRuns one instruction, going into calls
Runs a single instruction and goes into any function call it meets, like F7.
Try: “Step into this call”
Runs code ·
StepIntoRuns until the current function returns
Keeps running until the current function returns to its caller, like Ctrl+F9.
Try: “Run until this function returns”
Runs code ·
StepOutRuns the program until it reaches a given address
Sets a one-time breakpoint at an address, resumes and waits for the program to reach it.
Try: “Run to 0x401000”
Runs code ·
RunToAddressPauses the running program
Pauses the program while it is running, like F12.
Try: “Pause the program”
Write ·
PauseDebugEnds the debugging session and closes the program
Stops debugging and terminates the program being debugged.
Try: “Stop debugging and close it”
Delete ·
StopDebugRestarts the program from the beginning
Restarts the current debugging session from the start.
Try: “Restart the program”
Runs code ·
RestartDebugShows the assembly instructions at an address
Shows assembly instructions starting at an address, ten from the current position by default.
Try: “Disassemble 20 instructions at the current address”
Read ·
DisassembleShows the full assembly of one function
Shows every instruction of a function, using the boundaries from code analysis.
Try: “Show me the whole function at 0x401230”
Read ·
DisassembleFunctionShows where the program is paused, with its module and label
Shows the current instruction pointer, the module it belongs to and any label or comment there.
Try: “Where are we paused?”
Read ·
GetCurrentAddressShows the values of all CPU registers
Lists the current values of all general-purpose CPU registers.
Try: “Show me the registers”
Read ·
GetAllRegistersReads memory at an address as a hex and text dump
Reads bytes from the program's memory at an address and shows them as hex with text alongside.
Try: “Read 64 bytes at RSP”
Read ·
ReadMemoryShows the call stack of the current thread
Shows the chain of function calls that led to the current position.
Try: “Show the call stack”
Read ·
GetCallStackReads the arguments of the function you are paused in
Reads function arguments from the stack on 32-bit or from registers on 64-bit at the current position.
Try: “What arguments was this function called with?”
Read ·
GetArgumentsLists loaded DLLs and EXEs with their addresses and sizes
Lists every module the program has loaded, with base address and size.
Try: “Which DLLs are loaded?”
Read ·
ListModulesShows which functions a module imports
Shows the import table of a loaded module.
Try: “What does this EXE import?”
Read ·
GetImportsShows which functions a module exports
Shows the export table of a loaded module.
Try: “List the exports of crypt32.dll”
Read ·
GetExportsPulls readable text strings out of a module
Scans a module's memory for readable text and returns each string with its address.
Try: “Show the strings in the main module”
Read ·
GetStringsSearches the program's memory for a piece of text
Searches process memory for a text string and returns where it occurs.
Try: “Find where 'password' appears in memory”
Read ·
SearchForStringsSearches a module for a byte pattern with wildcards
Scans module memory for a byte pattern, with ?? as wildcards, and returns matching addresses.
Try: “Find the pattern E8 ?? ?? ?? ?? 85 C0 74”
Read ·
FindPatternFinds calls and jumps to an address
Finds the CALL and JMP instructions in a module that point to a target address.
Try: “What calls this function?”
Read ·
GetReferencesLists the functions found in a module
Lists analysed functions in a module with their start, size and label. Needs code analysis first.
Try: “List the functions in the main module”
Read ·
GetFunctionsRuns code analysis so functions and references can be listed
Runs x64dbg's code analysis on a module or range, which fills in the function list and cross-references.
Try: “Analyse the main module”
Write ·
AnalyzeCodeSearches symbol names in a module
Searches labels and symbols in a module that match a pattern.
Try: “Find symbols containing Crypt”
Read ·
SearchSymbolsLists the exported symbols of a module
Lists the exported symbols of a module.
Try: “List symbols in ntdll”
Read ·
ListSymbolsShows a program's file structure: sections, entry point, size
Shows the PE structure of a module: sections, entry point, image size and flags.
Try: “Analyse the PE sections of this EXE”
Read ·
AnalyzeModuleTries to find the real entry point of a packed program
Looks at section characteristics to guess the original entry point of a packed executable.
Try: “Find the original entry point of this packed sample”
Read ·
DetectOEPShows all memory regions with their size and protection
Shows every memory region with base address, size, protection and owning module.
Try: “Show the memory map”
Read ·
GetMemoryMapLists memory regions that can be dumped
Lists committed, readable memory regions for a module or the whole process.
Try: “Which regions can I dump?”
Read ·
GetDumpableRegionsFollows a chain of pointers and shows each step
Follows a pointer several levels deep and shows each address, value and module.
Try: “Follow the pointer at RCX three levels”
Read ·
FollowPointerWorks out an expression such as an address, register or sum
Evaluates an x64dbg expression, such as a register, symbol or arithmetic, and returns it in hex and decimal.
Try: “What is rsp+0x28?”
Read ·
EvalExpressionWorks out several expressions at once
Evaluates several x64dbg expressions in one call and returns all results.
Try: “Show rax, rcx and [rsp+8]”
Read ·
WatchExpressionsLists the program's threads
Lists every thread with its ID, current instruction and name.
Try: “List the threads”
Read ·
GetThreadsSwitches the debugger to another thread
Makes another thread the active one for registers and stepping.
Try: “Switch to thread 2240”
Write ·
SwitchThreadSuspends one thread
Suspends a thread by its ID.
Try: “Suspend thread 2240”
Write ·
SuspendThreadResumes a suspended thread
Resumes a thread that was suspended.
Try: “Resume thread 2240”
Write ·
ResumeThreadReads the process environment block, such as the being-debugged flag
Reads key fields of the Process Environment Block: image base, being-debugged flag, heaps, global flags, image path and command line.
Try: “Is the being-debugged flag set?”
Read ·
GetPEBWalks the exception handler chain (32-bit only)
Walks the structured exception handler chain and shows each handler's address and module. 32-bit programs only.
Try: “Show the SEH chain”
Read ·
GetSEHChainSets a hardware breakpoint on read, write or execute
Sets a breakpoint using the CPU debug registers, triggered on read, write or execute.
Try: “Break when this address is written”
Write ·
SetHardwareBreakpointBreaks when a memory range is read, written or run
Sets a memory breakpoint using guard pages. It covers larger ranges than hardware breakpoints but is slower.
Try: “Break when this buffer is read”
Write ·
SetMemoryBreakpointSets a breakpoint that only stops when a condition is true
Sets a breakpoint with a condition and optional log text.
Try: “Break on CreateFileW only when rcx is not zero”
Write ·
SetConditionalBreakpointRuns a debugger command each time a breakpoint is hit
Sets an x64dbg command to run whenever a breakpoint is hit, for example to log a register.
Try: “Log eax every time this breakpoint hits”
Runs code ·
SetBreakpointCommandMakes a breakpoint keep running after it hits
Makes a breakpoint continue automatically after it hits. With a breakpoint command it becomes a logging breakpoint.
Try: “Make that breakpoint log and keep going”
Write ·
SetBreakpointFastResumeChooses whether an exception stops the debugger or passes through
Sets how an exception code is handled: break into the debugger or pass it to the program.
Try: “Ignore C++ exceptions”
Write ·
SetExceptionBreakpointRemoves an exception rule and restores default handling
Removes an exception breakpoint so that exception code is handled the default way again.
Try: “Remove the rule for C++ exceptions”
Delete ·
DeleteExceptionBreakpointLists all breakpoints
Lists every active breakpoint: software, hardware and memory.
Try: “List my breakpoints”
Read ·
ListBreakpointsTurns a breakpoint back on
Enables a breakpoint at an address.
Try: “Enable the breakpoint at 0x401000”
Write ·
EnableBreakpointTurns a breakpoint off without removing it
Disables a breakpoint at an address but keeps it.
Try: “Disable that breakpoint for now”
Write ·
DisableBreakpointSwitches a breakpoint between on and off
Toggles a breakpoint between enabled and disabled.
Try: “Toggle the breakpoint at 0x401000”
Write ·
ToggleBreakpointResets a breakpoint's hit counter
Sets the hit counter of a breakpoint back to zero.
Try: “Reset the hit count on that breakpoint”
Write ·
ResetHitCountRemoves a breakpoint
Removes a breakpoint at an address or function name.
Try: “Remove the breakpoint on CreateFileW”
Delete ·
DeleteBreakpointRemoves every breakpoint
Removes all normal, hardware and memory breakpoints.
Try: “Clear all breakpoints”
Delete ·
DeleteAllBreakpointsSteps through up to 100 instructions and records each one
Single-steps a number of instructions, up to 100, going into calls, and records each address and instruction.
Try: “Trace the next 50 instructions”
Runs code ·
TraceIntoSteps through instructions over calls and records each one
Steps a number of instructions, stepping over calls, and records each address and instruction.
Try: “Trace 30 instructions, stepping over calls”
Runs code ·
TraceOverChanges a CPU register's value
Sets a CPU register to a new value.
Try: “Set rax to 1”
Write ·
SetRegisterPatches the running program's memory with new bytes
Writes raw bytes to an address in the live process, changing its memory.
Try: “Patch 0x401000 with 90 90”
Write ·
WriteMemToAddressWrites a new instruction at an address, replacing the old bytes
Assembles an instruction at an address and overwrites the bytes there.
Try: “Change the jump at 0x401020 to jmp 0x401050”
Write ·
AssembleLists the memory patches you have made
Lists all memory patches applied to the program.
Try: “What have we patched?”
Read ·
GetPatchesUndoes all memory patches
Restores every patched byte to its original value.
Try: “Undo all patches”
Write ·
RestorePatchesAllocates a block of memory inside the program
Allocates a block of memory in the program being debugged.
Try: “Allocate 4 KB in the target”
Write ·
AllocateMemoryFrees memory you allocated inside the program
Frees a memory block that was allocated in the program.
Try: “Free the block we allocated”
Delete ·
FreeMemorySaves a memory region to a file
Saves a region of the program's memory to a file on disk.
Try: “Dump this region to a file”
Files ·
DumpMemorySaves a whole loaded module to a file
Dumps an entire loaded module to a file on disk, for example after unpacking.
Try: “Dump the unpacked main module”
Files ·
DumpModuleAdds a comment or label in the disassembly
Adds a comment or a label at an address in the disassembly.
Try: “Label 0x401230 as decrypt_config”
Write ·
CommentOrLabelAtAddressBookmarks an address
Sets a bookmark at an address.
Try: “Bookmark this address”
Write ·
SetBookmarkLists your bookmarks
Lists all bookmarks with their addresses and labels.
Try: “Show my bookmarks”
Read ·
ListBookmarksRemoves a bookmark
Deletes a bookmark at an address.
Try: “Remove that bookmark”
Delete ·
DeleteBookmarkSaves your labels, comments and breakpoints for next time
Saves the x64dbg database for the current module so labels, comments, breakpoints and analysis persist.
Try: “Save my work on this module”
Write ·
SaveDatabaseRuns any x64dbg command
Runs a native x64dbg command string. This can do anything the debugger's command line can.
Try: “Run the x64dbg command analr”
Runs code ·
ExecuteDebuggerCommandShows recent debugger events such as exceptions and DLL loads
Shows the last debugger events, such as exceptions, breakpoints, DLL loads and thread events. It keeps the last 64.
Try: “What events happened since the last step?”
Read ·
GetEventLogClears the event log
Empties the list of recent debugger events.
Try: “Clear the event log”
Write ·
ClearEventLogUsed by the assistant behind the scenes
Waits until the program stops
Waits until the program pauses at a breakpoint, an exception or exit, and says why.
Try: “Wait until it stops”
Read ·
WaitForPauseWaits for the next debugger event
Waits until a debugger event fires or a timeout passes, for clients that cannot receive pushed events.
Try: “Wait for the next breakpoint hit”
Read ·
WaitForEventLists the tools this server offers
Lists the available tools, optionally for one category.
Try: “Which tools do you have for memory?”
Read ·
ListCommandsByCategorySends your input straight back, to test the connection
Echoes the input back to check the connection works.
Try: “Test the debugger connection”
Read ·
Echo
Read from the source code
Pros and cons
Good
- Free and open source under the MIT licence.
- One native plugin file, with no Python, Node or .NET to install.
- Works with both 32-bit and 64-bit programs.
- Covers stepping, breakpoints, memory, modules, threads, strings, cross-references and unpacking help.
- A token is required on every request, and the maintainer refuses to make it optional.
- Starts on its own when x64dbg launches.
Watch out
- Windows only, like x64dbg itself.
- No read-only mode.
- The README and the code disagree on the default listen address, so check it in the config dialog.
- Traffic is unencrypted HTTP.
- Two security holes were fixed in versions 1.0 and 1.2, so older copies are unsafe.
- The README's tool counts disagree with each other.
Permissions
high risk · 4 things to watch · 2 advisories
High risk
Anyone with the token can make the debugger run programs, change memory and run any x64dbg command. Keep it inside an isolated VM, bind it to 127.0.0.1, and use version 1.2 or later.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
It can run any debugger command and patch memory
The assistant can start programs, attach to processes, write memory and run raw x64dbg commands. Use it only inside an isolated analysis VM. github.com
Check which network address it listens on
The README says it listens on 0.0.0.0, every network the machine is on, but the code defaults to 127.0.0.1. Check the address in the config dialog and set 127.0.0.1 unless you connect from WSL or another machine. github.com
Traffic is plain HTTP
The token and debugger data travel unencrypted. Do not expose the port to untrusted networks. github.com
Dumps write files to disk
Memory and module dumps save files on the debugging machine. Keep them inside the VM. github.com
Security advisories
2 known advisories, all fixed in a newer version.
Technical details
| Turning on read-only | No read-only mode. Every tool, including raw debugger commands and memory writes, is available to any client holding the token. |
|---|---|
| Sign-in and keys | Bearer token generated on first run, stored in mcp_config.json next to the x64dbg executable. |
Alternatives
Use this plugin for most x64dbg work; it needs nothing else installed. Pick bromoket's x64dbg_mcp if your client only starts local programs and cannot send a token header.
| Server | Official | Runs | Sign-in | GitHub stars |
|---|---|---|---|---|
| x64dbg-mcp-serverThis page | Community | Local | Token | 2.6K |
| x64dbg_mcp (bromoket) | Community | Local | – | 137 |
What people say
People like that a token is always required and worry about running it anywhere but an isolated lab machine.
What people like
- A security firm's write-up highlights that a token is required on every call.
- Bugs users report get fixed within days and credited in release notes.
Common complaints
- On a loosely built lab network it becomes a reachable service that controls a debugger.
- New users hit 401 errors when they leave out the Bearer prefix.
Questions
Is it free?
Yes. It is open source under the MIT licence, and x64dbg is free too.
Is it safe to use?
Only on a machine you are willing to lose. Anyone with the token can run programs, change memory and run debugger commands. Run it in an isolated VM, listen on 127.0.0.1 only, and use version 1.2 or later.
Why do I get 401 Unauthorized?
The token is missing or the header is wrong. The header must read Bearer, a space, then the token from the config dialog.
Where do I find the token?
In x64dbg, open Plugins, then x64dbg-MCP Server, then Configure MCP Server. Copy puts it on the clipboard and Generate makes a new one.
Can I connect from WSL or another computer?
Yes. Set the listen address to 0.0.0.0 in the config dialog and use the Windows machine's IP in your client. Traffic is not encrypted, so keep it on a private network.
Does it work with 32-bit programs?
Yes. The release includes a plugin for x32dbg, which listens on port 9095 instead of 9094.
Do I need Python, Node or .NET?
No. It is a single native plugin that loads into x64dbg.
x64dbg-mcp-server vs bromoket's x64dbg_mcp?
This one runs inside x64dbg and your client connects to it over a local address with a token. Bromoket's runs as a small npm program your client starts, which suits clients that cannot send headers.
How do I add it to Claude Code?
Copy the plugin into x64dbg, start x64dbg, then add the entry from the setup box above with your token.
Examples
Load a program, break at its entry point and inspect registers and memory
Load calc.exe and break at the entry point, then show me the registers.
SourceFind the original entry point of a packed program and dump the unpacked module
This sample looks packed. Find its original entry point and dump the module to disk.
Log a register every time a function is called, without pausing
Put a breakpoint on CreateFileW that logs the file name argument and keeps running.
Information
updated Nov 2, 2026
- Publisher
- Community
- Transport
- Streamable HTTP, SSE
- Auth
- API key
- License
- MIT
- Last commit
- Oct 12, 2026
- Open issues
- 0
Other x64dbg MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 10Hide
- x64dbg-MCP Server README · github.com
- x64dbg-mcp-server src/core/config.zig · github.com
- x64dbg-MCP Server tool definitions · github.com
- GHSA-4478-h5jv-647m · github.com
- GHSA-jgj3-97w2-9v9r · github.com
- Unauthorized · github.com
- bromoket/x64dbg_mcp · github.com
- Agentic reverse engineering: x64dbg exposed over MCP · noze.it
- Optional auth + per-monitor DPI scaling · github.com
- Releases · github.com