ctxdebug
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCO_SERVERS | No | Comma-separated subset of servers to enable for the gateway. | |
| X64DBG_PATH | No | Path to x64dbg.exe. | |
| X64DBG_PIPE | No | Named pipe path for x64dbg. Default is '\\.\pipe\x64dbg_ai_agent'. | \\.\pipe\x64dbg_ai_agent |
| GROQ_API_KEY | No | API key for Groq. Only needed when using --llm groq. | |
| IDA_MCP_HOST | No | IDA HTTP host. Default is 'localhost'. | localhost |
| IDA_MCP_PORT | No | IDA HTTP port. Default is '2022'. | 2022 |
| WINDBG_MCP_CDB | No | Path to cdb.exe (WinDbg command line debugger). Default is 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe'. | |
| MCO_SESSIONS_DB | No | SQLite database path for session recording. | |
| ANTHROPIC_API_KEY | No | API key for Claude. Only needed when using --llm claude. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| mco_gateway_statusA | Show status of all MCO sub-servers: running/stopped, PID, tool count, uptime. |
| mco_restart_serverA | Restart a crashed MCO sub-server by name (windbg / ida / x64dbg / orchestrator / sessions). |
| mco_list_serversA | List all configured MCO sub-servers with description and tool counts. |
| windbg_helpA | Show a quick orientation cheatsheet for this MCP: typical workflow, key concepts, address forms, and timeout semantics. Call this first if you are unsure how to drive the debugger. |
| windbg_start_executableA | Launch a Windows executable under cdb. The target starts SUSPENDED at the initial breakpoint — use windbg_continue to run it. |
| windbg_attachA | Attach cdb to a running process by PID. The process is paused on attach. |
| windbg_open_dumpA | Open a Windows crash dump (.dmp) for post-mortem analysis. Combine with windbg_analyze_crash. |
| windbg_stopA | Quit the cdb session and release the target. |
| windbg_statusA | Show whether a session is active, current target, RIP, nearest symbol, current process and thread. |
| windbg_io_statusA | Show MCP-side debugger I/O state: active cdb PID, buffered output lines, async command, and async age. |
| windbg_break_inA | Break into a running target (Ctrl+Break). Use this when the program is executing and you need to pause it. |
| windbg_run_commandA | Run an arbitrary cdb/WinDbg command verbatim. Optional regex filter keeps only matching lines; max_lines caps noisy output. |
| windbg_run_command_asyncA | Send a raw cdb command and return immediately without waiting for a prompt and without break-in. Use windbg_wait_for_event/read_output afterward. |
| windbg_continueA | Resume execution (cdb 'g'). Returns when the target hits a breakpoint, exception, or exits. On timeout the server auto-breaks the target so you can recover. |
| windbg_continue_asyncA | Resume execution with cdb 'g' and return immediately. Does not install a timeout and never sends break-in by itself. |
| windbg_goA | Recommended safe continue: send cdb 'g', then wait for event/output without ever sending break-in on timeout. |
| windbg_wait_for_eventA | Wait for output/prompt from an async command without sending break-in on timeout. Use after windbg_continue_async. |
| windbg_wait_exception_profileA | Wait for exception/crash output using a preset filter profile (default/tg/asan). Does not send break-in on timeout. |
| windbg_read_outputA | Drain currently buffered cdb output without blocking and without sending break-in. |
| windbg_step_inA | Single-step one instruction, stepping INTO calls (cdb 't'). |
| windbg_step_overA | Single-step one instruction, stepping OVER calls (cdb 'p'). |
| windbg_step_outA | Run until the current function returns (cdb 'gu'). |
| windbg_run_toA | Run until execution reaches a given address or symbol (cdb 'g '). |
| windbg_set_breakpointC | Set a software breakpoint at an address or symbol. Optional cdb-expression condition. |
| windbg_set_conditional_bpA | Build and set a conditional cdb breakpoint safely, including optional .printf logging and false-branch gc. |
| windbg_bp_templateA | Set a breakpoint from an AI-friendly template: log this/args, log expression, stop on signed-negative, pointer range, or stack log. |
| windbg_set_data_breakpointA | Set a hardware data breakpoint (cdb 'ba'). Triggers on read/write/execute access. |
| windbg_watch_memoryA | Set a hardware data breakpoint that logs IP, watched value, optional stack, then continues. Avoids hand-written ba/.printf escaping. |
| windbg_list_breakpointsA | List all configured breakpoints (cdb 'bl'). |
| windbg_save_breakpointsA | Persist current breakpoints using cdb .bpcmds into .windbg_mcp_breakpoints/.cmd. |
| windbg_load_breakpointsA | Restore a previously saved breakpoint set. Optionally clears existing breakpoints first. |
| windbg_clear_breakpointA | Delete one or all breakpoints (cdb 'bc'). |
| windbg_disable_breakpointA | Disable a breakpoint without deleting it (cdb 'bd'). |
| windbg_enable_breakpointA | Re-enable a previously disabled breakpoint (cdb 'be'). |
| windbg_registersA | Read the CPU registers. Output is parsed into a clean key=value table plus the raw cdb output. |
| windbg_set_registerB | Modify a CPU register, e.g. name='rax', value='0x42'. |
| windbg_evaluateA | Evaluate a cdb expression (cdb '?'). Useful for arithmetic, symbol lookup, and casting. |
| windbg_call_stackA | Show the call stack of the current thread. |
| windbg_stack_find_threadA | Search all thread stacks for a regex/module/SP/address and optionally switch to the matching thread. |
| windbg_shadow_stackA | Dump the CET hardware shadow stack using dps @ssp. Useful when HW-enforced stack protection is enabled. |
| windbg_shadow_stack_compareA | Dump normal stack and shadow stack side by side for quick return-address divergence checks. |
| windbg_shadow_stack_returnA | Resolve one shadow stack return slot: dps slot, nearest symbol, and disassembly at poi(slot). |
| windbg_run_to_shadow_returnB | Run to poi(@ssp+index*8). Async by default so long waits do not force break-in. |
| windbg_disassembleA | Disassemble code forward. By default shows N instructions at an address; with function=true disassembles the whole function (cdb 'uf'). |
| windbg_disassemble_backA | Disassemble N instructions BEFORE an address (cdb 'ub'). Useful for seeing what led to the current IP. |
| windbg_read_memoryA | Read memory in a chosen format (byte/word/dword/qword/ascii/unicode/pointer). |
| windbg_write_memoryA | Write memory in a chosen format (byte/word/dword/qword/ascii/unicode). |
| windbg_search_memoryA | Search a memory range for a byte/string/dword/qword pattern. |
| windbg_list_modulesA | List loaded modules. Optional name filter (cdb 'lm m '). |
| windbg_module_infoA | Show detailed info for one module (paths, version, symbols). |
| windbg_list_threadsA | List all threads in the current process. |
| windbg_switch_threadA | Switch debugger context to a specific thread index. |
| windbg_switch_thread_by_tidA | Switch debugger context by OS thread id using cdb ~~[tid]s. Accepts values like '43110', '0x43110', or 'pid.tid'. |
| windbg_list_processesA | List processes in the current debugger session (cdb '|'). |
| windbg_find_symbolsA | Search symbols by pattern across modules (cdb 'x'). Pattern: 'mod!func'. |
| windbg_address_to_symbolB | Find the nearest symbol to an address (cdb 'ln'). |
| windbg_localsA | Show local variables of the current frame (requires private symbols). |
| windbg_source_linesA | Show source code lines around an address (requires source path). |
| windbg_analyze_crashA | Run !analyze on the current state. Best after windbg_open_dump or on an unhandled exception. |
| windbg_pebA | Dump the Process Environment Block of the current process (cdb '!peb'). |
| windbg_tebA | Dump the Thread Environment Block of the current thread (cdb '!teb'). |
| windbg_heapB | Run !heap with optional arguments (e.g. '-s' for summary, '-p -a ' to inspect a block). |
| windbg_handleA | Run !handle to inspect kernel handles in the target. Empty args lists all handles. |
| windbg_addressB | Describe a virtual address with !address. Filters noisy 'Building memory map' progress lines and can cap output. |
| windbg_dtB | Dump a structure type with cdb 'dt'. Optionally apply to an address. |
| windbg_set_symbol_pathA | Set the symbol search path (cdb '.sympath') and reload symbols. Use 'srvc:\symhttps://msdl.microsoft.com/download/symbols' for the public store. |
| windbg_reload_symbolsA | Reload symbols (cdb '.reload'). Use force=true to discard cached symbols. |
| windbg_set_source_pathA | Set the source code search path (cdb '.srcpath'). |
| windbg_crash_triageA | Full crash triage in one call: !analyze -v + registers + call stack + exception record + fault address context. Best first tool after hitting a crash. |
| windbg_heap_block_infoA | Inspect a specific heap block: size, flags, neighbors, memory before/after. Use with ASAN crash addresses to understand overflow context. |
| windbg_heap_neighborsA | Inspect a heap block plus bytes and pointer/symbol view before and after it. |
| windbg_object_contextA | One-call object/heap context: address eval, symbol, !address, !heap, qwords, bytes/pointers around, potential vtable, optional VRle::Span decode. |
| windbg_thread_stacksA | Show call stacks for ALL threads simultaneously (cdb '~* kP'). Essential for race condition / UAF analysis. |
| windbg_exception_chainA | Show full exception chain: last event + exception record + context + stack at exception + SEH chain. |
| windbg_find_vtableA | Check if an address contains a vtable pointer and resolve it to a symbol + disassembly. Useful for type confusion / UAF analysis. |
| windbg_find_vtable_ownerA | Find heap object candidates whose first qword equals a vtable pointer. With heap_start+heap_length searches that range; otherwise parses heap ranges from !address -f:Heap and searches each range. |
| windbg_decode_spansA | Decode VRle::Span entries from memory. Layout assumed: {x:i16, y:i16, len:u16, cov:u8, raw7:u8}. |
| windbg_asan_parseA | Parse ASAN crash context: exception record + context record + call stack at exception. Use when debugging ASAN-instrumented binaries. |
| ida_statusA | Check if IDA Pro is connected and get binary info. Always call first. |
| ida_infoA | Get detailed binary info: path, arch, image base, entry point, size. |
| ida_functionsA | List functions in the binary. Supports pagination and name filtering. |
| ida_segmentsA | List all binary segments (.text, .data, .rdata, etc.) with addresses and permissions. |
| ida_importsA | Get the import table, optionally filtered by DLL name. |
| ida_exportsA | Get the export table (for DLLs/EXEs with exports). |
| ida_stringsB | Find all strings in the binary. Useful for IOC extraction. |
| ida_namesA | List all named addresses (functions, globals, labels) with optional pattern filter. |
| ida_disassembleA | Disassemble instructions at an address. Use function=true for entire function. |
| ida_decompileB | Decompile function to pseudocode using Hex-Rays decompiler. |
| ida_analyze_functionA | Deep function analysis: calls, string refs, xrefs, decompile. Best starting point. |
| ida_xrefs_toA | Get all cross-references TO an address (who calls/references this). |
| ida_xrefs_fromA | Get all cross-references FROM an address (what this calls/references). |
| ida_renameB | Rename a function, label, or global variable at an address. |
| ida_commentC | Add a comment at an address. Kinds: regular, repeatable, anterior, posterior. |
| ida_set_typeB | Set the type signature for a function or variable (C declaration syntax). |
| ida_get_typeB | Get the type signature of a function or variable. |
| ida_read_bytesA | Read raw bytes at an address and show a hex+ASCII dump. |
| ida_searchC | Search the binary for a byte pattern or string. kind: bytes|string|unicode |
| ida_entry_pointsA | List binary entry points (start address + DLL exports if applicable). |
| ida_structA | Get struct definition from IDA's type library (name, members, offsets, sizes). |
| ida_make_functionA | Force-create a function at an address (useful for undefined code regions). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DdUdle/ctxdebug'
If you have feedback or need assistance with the MCP directory API, please join our Discord server