Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCO_SERVERSNoComma-separated subset of servers to enable for the gateway.
X64DBG_PATHNoPath to x64dbg.exe.
X64DBG_PIPENoNamed pipe path for x64dbg. Default is '\\.\pipe\x64dbg_ai_agent'.\\.\pipe\x64dbg_ai_agent
GROQ_API_KEYNoAPI key for Groq. Only needed when using --llm groq.
IDA_MCP_HOSTNoIDA HTTP host. Default is 'localhost'.localhost
IDA_MCP_PORTNoIDA HTTP port. Default is '2022'.2022
WINDBG_MCP_CDBNoPath to cdb.exe (WinDbg command line debugger). Default is 'C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe'.
MCO_SESSIONS_DBNoSQLite database path for session recording.
ANTHROPIC_API_KEYNoAPI 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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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).

ida_scan_bossixA

Scan the binary for bossix imports, string indicators, and techniques.

ida_find_cryptoA

Scan for cryptographic algorithm indicators (constants, XOR patterns, S-boxes).

ida_apply_signatureA

Apply a FLIRT .sig signature file to auto-identify library functions.

ida_run_scriptA

Execute raw IDAPython code inside IDA Pro. Escape hatch for any operation not covered by other tools.

ida_diff_functionsA

Compare two functions side-by-side: disasm, instruction count, size delta. Useful for spotting obfuscation differences or comparing similar routines.

ida_call_treeA

Build a recursive call tree from a function up to depth levels. Returns a nested tree showing what functions are called. Useful for understanding w execution flow or finding the main logic.

ida_patch_bytesA

Write bytes to the IDA database at an address using idc.patch_byte(). Does NOT modify the original file — only the IDA database. Useful for NOP-ing bossix checks found by ida_scan_bossix.

ida_list_patchesA

List all patches applied to the IDA database. Shows address, original byte value, and patched byte value for each changed byte.

ida_export_idb_infoA

Export a comprehensive IDA database summary: input file path, MD5, SHA256, image base, entry point count, function count, segment count, string count, import module count, and patch count. Good for a session overview.

ida_find_string_refsA

Find all strings matching a regex pattern, then for each string list every function that references it. Great for finding where 'admin', 'password', 'cmd.exe', or C2 URLs are used.

ida_get_pseudocode_all_functionsA

Decompile up to limit functions using Hex-Rays and return their pseudocode. Starts from the first function in the binary. Useful for bulk analysis.

agent_analyzeA

AUTONOMOUS ANALYSIS: Ask the AI agent to plan, execute, and report on a debugging goal. The agent runs a ReAct loop, calls multiple debugging skills, and returns findings. USE WHEN: open-ended exploration — 'find unpacking loop', 'identify anti-debug', 'trace execution from main'. DO NOT USE for single specific operations — call the dedicated tool instead.

agent_get_contextA

Get the agent's current debugging context: target process, current RIP, breakpoints, discovered functions, found patterns, current goal. USE WHEN: you need to know what the agent already knows before deciding next steps.

memory_recallA

Recall insights from past debugging sessions. Searches the agent's persistent memory (~/.x64ai/) for matching patterns and insights. USE WHEN: starting analysis on a new binary — past insights may apply.

list_known_patternsA

List the agent's known binary patterns: packer signatures, anti-debug checks, crypto routines, syscall stubs, Heaven's Gate, etc. USE WHEN: deciding what to search for, or to understand what the agent recognizes.

execution_controlA

Control execution: run, pause, single-step, run-to-address. TIP: Use 'run_to' instead of breakpoint(action='set')+run for one-shot stops (auto-cleans the BP).

get_registersA

Get all CPU registers (GPRs + flags + RIP/RSP). Updates the agent's current_rip context.

set_registerA

Set a CPU register to a specific value. Useful for bypassing checks (set RAX=0 after IsDebuggerPresent), redirecting execution (change RIP), or modifying function arguments.

disassembleA

Disassemble instructions with auto call/jump analysis. Returns instructions plus categorized lists of CALLs and JMPs.

analyze_functionA

Deep function analysis: disassembly, xrefs in/out, API calls, string refs, crypto indicators (xor/rol/ror/shl/shr).

get_xrefsB

Get cross-references to or from an address (callers / callees).

evaluate_expressionA

Evaluate an x64dbg expression. Resolves API names, registers, arithmetic, pointer dereferences. TIP: Use [address] syntax to read a pointer value, e.g. '[rsp]' reads the QWORD at RSP. This is faster than read_memory for single values.

get_call_stackB

Get the current thread's call stack with module + function names per frame.

process_infoA

Get comprehensive process info: main module, base address, entry point, threads, PEB. USE WHEN: starting analysis — typically the first call to orient yourself.

list_modulesA

List all loaded modules (DLLs/EXE) with bases, sizes, entry points.

list_importsB

Get import table grouped by DLL. Network imports → C2; crypto imports → ransomware; anti-debug imports → evasion.

list_exportsB

Get the export table of a module — exported function names + addresses + ordinals.

get_threadsB

List threads with TID, entry, state, priority.

get_pebA

Get FULL PEB (Process Environment Block) dump with anti-debug flag analysis. Returns ALL fields. Use process_info for a quick overview; use this for deep PEB inspection.

get_handlesA

List process handles grouped by type (File, Mutant, Event, Thread, etc.).

memory_mapA

Get the process virtual memory map. AUTOMATICALLY FLAGS RWX regions (unpacking indicator).

read_memoryB

Read memory and return as hex+ASCII dump.

write_memoryB

Write hex bytes to memory. ⚠ Modifies process state.

read_stringB

Read a null-terminated string from memory (ASCII).

search_patternA

Search memory for a byte pattern with ?? wildcards. Examples: 'CC' (INT3), '0F 31' (RDTSC), 'E9 ?? ?? ?? ??' (JMP rel32).

search_stringsA

Find readable strings in ALL loaded modules, AUTO-CATEGORIZED into urls/paths/registry/apis/other. Great for IOCs and hardcoded URLs/paths. May be slow on large processes.

allocate_memoryA

Allocate memory in the target process. Returns the allocated address.

breakpointA

Set, list, or delete a breakpoint. Supports software, hardware, memory, conditional, and API-by-name. USE 'set' WITH 'api' to break on an imported function by name (no need to resolve address). USE 'set_conditional' to break only when expression is true (e.g., 'rcx == 0x1000'). USE 'set_hw' for hardware breakpoints (no code modification, useful when scanning for INT3). USE 'list' to see all currently active breakpoints. For a single API, use action='set' + 'api'. For bulk API groups (all memory/network/etc.), use breakpoint_on_api_group instead.

breakpoint_on_api_groupA

Set breakpoints on all APIs in a category at once. Saves many calls vs setting each manually.

bossix_scanA

COMPREHENSIVE bossix scan: PEB flags, API imports, byte patterns, RDTSC. Returns detected techniques + targeted bypass suggestions per finding.

bossix_hideA

Hide debugger via PEB patches: zero BeingDebugged, clear NtGlobalFlag, x64dbg built-in hide.

bossix_patchA

Auto-patch a bossix check at an address. Picks the right patch based on instruction: flips conditional jumps, NOPs test/cmp, replaces CALL with xor eax,eax.

execute_commandA

Execute a raw x64dbg command. ESCAPE HATCH for operations not covered by other tools. USE SPARINGLY — prefer the dedicated tool when one exists.

dump_moduleA

Dump a loaded module to disk (post-unpacking, etc.).

run_scriptA

Execute a multi-line x64dbg script (commands run atomically). One command per line. Example: 'bp VirtualAlloc\nrun\nlog "hit VirtualAlloc"'.

x64dbg_launchA

Launch x64dbg debugger (with optional target EXE). USE WHEN: x64dbg is not yet running and you need to start a debug session. Waits for the AI Agent plugin to become connectable after launch.

x64dbg_statusA

Get x64dbg connection status, process state, and bridge info.

x64dbg_connectA

Attempt to (re)connect to a running x64dbg instance. USE WHEN: x64dbg is already running but Claude is not connected.

x64dbg_eval_expressionA

Evaluate a debugger expression and return the numeric result. Sends the eval_expression command directly to the x64dbg plugin for extended expression support. Resolves register names, API addresses, arithmetic, pointer dereferences. USE WHEN: you need to resolve a symbol address or compute a pointer value. Examples: 'kernel32.VirtualAlloc', 'rax+8', '[rsp+0x28]', 'ntdll.NtQueryInformationProcess'.

mco_statusA

Check which debuggers (WinDbg, IDA Pro, x64dbg) are currently available and connected.

mco_crash_to_sourceA

Full crash analysis pipeline: open a .dmp in WinDbg, extract the crashing address, then pivot to IDA Pro to decompile the crashing function and show callers. Returns a combined report with WinDbg !analyze output + IDA pseudocode.

mco_bossix_reportA

Cross-debugger bossix detection: IDA Pro static scan for IsDebuggerPresent/NtQueryInformationProcess/etc. + x64dbg dynamic PEB check. Returns combined findings.

mco_pivot_to_idaA

Take an address from WinDbg or x64dbg and analyze it in IDA Pro. Returns: function name, decompiled pseudocode, callers, callees. Use when you have a suspicious address from dynamic analysis.

mco_w_auditA

Quick w audit using all available debuggers: IDA static analysis (suspicious APIs, strings, crypto) + x64dbg runtime state (modules, threads). Returns a unified threat intelligence report with severity ratings.

mco_compare_functionsA

Binary diff two functions in IDA Pro. Compare instruction sequences, calculate similarity percentage, show added/removed operations. Useful for patch diffing between clean and infected binaries.

mco_heap_spray_analysisA

Detect heap spray attacks: WinDbg !heap -s summary + IDA Pro heap allocation site mapping. Identifies suspicious allocation patterns and size anomalies.

session_startA

Start a new named debug session. Sets it as the current active session for recording.

session_endA

End the current (or specified) session and save notes.

session_listA

List recent debug sessions with stats (duration, tool calls, debugger).

session_deleteA

Permanently delete a session and all its recorded events.

session_recordA

Record a tool call into the current session. Call this after every MCP tool call you want to track.

session_searchA

Full-text search across all recorded tool outputs. Returns matching sessions with context snippets.

session_replayB

Return all tool calls from a session in chronological order with timestamps.

session_find_addressA

Find all sessions that mention a specific hex address in any tool output.

session_find_functionA

Find all sessions that mention a specific function name (e.g. 'NtUserSetWindowPos' or 'win32k!NtUser').

session_summaryB

Get an AI-readable summary of a session: top tools, key addresses found, critical findings.

session_export_markdownA

Export a full Markdown report of a session — timeline of tool calls, key addresses, tools table. Ready to share.

session_statsA

Global MCO stats: total sessions, total tool calls, most used tools, most analyzed targets.

session_diffA

Compare two sessions: which tools were used in one but not the other, call count differences, similarity %.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 169 tools

Disambiguation2/5

While tools are prefixed by backend (ida_, windbg_, x64dbg_), there are multiple near-duplicates across backends (evaluate_expression vs x64dbg_eval_expression, read_memory vs windbg_read_memory vs ida_read_bytes) and unprefixed tools lack clear backend identification. The sheer 169-tool volume makes it easy to select the wrong tool, especially for similar operations like continue, step, and breakpoint across three debuggers.

Naming Consistency2/5

Naming mixes verb_noun, noun_verb, bare verbs, and nouns (disassemble, breakpoint, process_info, memory_recall). Each backend prefix has its own internal inconsistency (e.g., ida_functions vs ida_decompile, windbg_status vs windbg_start_executable). The unprefixed tools are particularly inconsistent, mixing styles and using generic names.

Tool Count1/5

With 169 tools, the server far exceeds reasonable scoping even for a multi-debugger orchestration layer. Many tools duplicate similar functionality across backends, and there are multiple escape-hatch raw command tools that add to the bloat.

Completeness5/5

The tool set is extremely comprehensive, covering process/execution control, memory/breakpoints, disassembly/decompilation, symbol/string/xref analysis, session lifecycle, and cross-debugger composite pipelines. Raw command escape hatches for all three backends fill any residual gaps, so agents are unlikely to hit dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues