The debugger tools let you start and control a live process, inspect CPU registers and memory, set breakpoints, and capture call stacks — all without leaving your MCP client. Because these operations interact with a running process and can modify state in irreversible ways, they are an extension that is hidden from the MCP tool list by default.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/mrexodia/ida-pro-mcp/llms.txt
Use this file to discover all available pages before exploring further.
Enabling the debugger extension
Add theext=dbg query parameter to the MCP endpoint URL before connecting your client:
dbg_* tools and py_eval appear in the tool list alongside the standard IDA tools.
Control tools
These tools manage the debugger lifecycle. The process must be suspended before you can inspect registers or memory; usedbg_continue or the step tools to advance execution.
dbg_start
Start a debugger session for the current target. IDA must already have a debugger selected (Debugger → Select debugger) and a target configured (executable path, arguments, remote host, etc.).
Present and
true when the debugger started successfully.Present when the process is executing.
Present when the process is suspended and registers are readable.
Instruction pointer as a hex string, available when suspended.
One of
not_running, running, or suspended.dbg_status
Return the current debugger lifecycle state without changing it.
dbg_exit
Terminate the active debugger session.
{ exited: true, state: "not_running" } on success.
dbg_continue
Resume execution from a suspended state.
{ continued: true, state: "running" } on success.
dbg_run_to
Run until the process reaches a specific address, then suspend.
Target address as a hex or decimal string (e.g.,
"0x401000" or "main").dbg_step_into
Execute one instruction, stepping into any call.
dbg_step_over
Execute one instruction, stepping over any call.
Breakpoint tools
dbg_bps
List all current breakpoints with their address, enabled status, condition expression, and condition language.
Breakpoint address as a hex string.
Whether the breakpoint is currently active.
Conditional expression, or
null for unconditional breakpoints.Condition language (
"IDC", "Python", or null).dbg_add_bp
Add software breakpoints at one or more addresses.
One address or a list of addresses (hex or decimal).
addr and either ok: true or an error string.
dbg_delete_bp
Delete breakpoints at one or more addresses.
One address or a list of addresses to remove.
dbg_toggle_bp
Enable or disable existing breakpoints in batch.
One or more objects with
addr (string) and enabled (boolean).Register tools
All register tools require the process to be suspended. Integer register values are returned as hex strings; floating-point and vector values are returned as hex byte strings.dbg_regs
Return the full register set for the current thread.
Thread ID.
dbg_regs_all
Return full register sets for all threads.
dbg_regs_remote
Return full register sets for specific thread IDs.
One thread ID or a list of thread IDs.
dbg_gpregs
Return only the general-purpose registers (RAX/EAX, RBX/EBX, RCX/ECX, RDX/EDX, RSI/ESI, RDI/EDI, RBP/EBP, RSP/ESP, RIP/EIP, R8–R15) for the current thread.
dbg_gpregs_remote
Return general-purpose registers for specific thread IDs.
One thread ID or a list of thread IDs.
dbg_regs_named
Return only the named registers for the current thread.
Comma-separated register names, e.g.
"RAX, RBX, RIP".dbg_regs_named_remote
Return specific named registers for a given thread ID.
Target thread ID.
Comma-separated register names, e.g.
"RAX, RSP, RIP".Stack and memory tools
dbg_stacktrace
Return the current call stack with module and symbol information.
Frame return address as a hex string.
Module filename containing the address, or
"<unknown>".Nearest symbol name, or
"<unnamed>".dbg_read
Read raw bytes from one or more regions of debuggee memory. The process does not need to be suspended; memory can be read while running.
One or more objects with
addr (string) and size (number) fields.Address that was read.
Number of bytes successfully read.
Hex-encoded bytes, or
null on failure.Error message if the read failed, otherwise
null.dbg_write
Write bytes to one or more regions of debuggee memory.
One or more objects with
addr (string) and data (hex string) fields.Python execution
py_eval
Execute arbitrary Python code in the IDA context and return the result, stdout, and stderr. This tool is available whenever the server is running — it does not require the debugger extension, but it is classified as unsafe.
Python source code to execute.
result. All IDA SDK modules (idaapi, idc, idautils, ida_dbg, ida_hexrays, etc.) are pre-imported in the execution context.
String representation of the last expression, or the
result variable if set explicitly.Captured standard output from
print() calls.Captured standard error, including tracebacks on exception.
For large scripts that would be unwieldy as inline code, use
py_exec_file(file_path) instead. It runs the entire file with a shared globals dict so top-level definitions are visible everywhere in the script.