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. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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