debug-mcp

MCP server exposing .NET debugging as 34 AI-accessible tools via ICorDebug APIs — breakpoints, stepping, inspection, exception autopsy, and code analysis.

debug-mcp.net

CI NuGet .NET MCP License

MCP server for .NET debugging — enable AI agents to debug .NET applications interactively.

What is debug-mcp?

debug-mcp is a Model Context Protocol server that exposes .NET debugging capabilities as structured API tools. It allows AI assistants like Claude, GPT, or Copilot to:

  • Launch or attach to .NET processes
  • Set breakpoints, exception breakpoints, and tracepoints
  • Step through code line by line
  • Inspect variables, evaluate expressions, and read memory
  • Analyze stack traces and threads
  • Get full exception context with one call (exception autopsy)
  • Navigate code with go-to-definition, find usages, and diagnostics
  • Automatically resolve symbols from public symbol servers

Unlike similar tools that use external debuggers via DAP protocol, debug-mcp interfaces directly with the .NET runtime using ICorDebug APIs — the same approach used by JetBrains Rider.

Quick Start

Run

# No installation needed (.NET 10+)
dnx -y debug-mcp

Requirements

  • .NET 10 SDK or later
  • Linux (Windows and macOS support planned)

Configure with Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "dotnet-debugger": {
      "command": "dnx",
      "args": ["-y", "debug-mcp"]
    }
  }
}

Configure with Claude Code

Add to your .mcp.json:

{
  "mcpServers": {
    "dotnet-debugger": {
      "command": "dnx",
      "args": ["-y", "debug-mcp"]
    }
  }
}

Example Conversation

You: Debug my ASP.NET app and find why GetUser returns null

Claude: I'll launch your application and investigate.
        [Calls debug_launch with program path]
        [Calls breakpoint_set at UserService.cs:42]
        [Calls debug_continue]
        [Calls breakpoint_wait with 30s timeout]

        The breakpoint was hit. Let me check the variables.
        [Calls variables_get for current frame]

        I found the issue: the `userId` parameter is an empty string.
        The bug is in the calling code at line 28 where...
You: My app throws NullReferenceException somewhere in checkout. Find it.

Claude: I'll set an exception breakpoint and trigger the flow.
        [Calls debug_launch with program path]
        [Calls breakpoint_set_exception for System.NullReferenceException]
        [Calls debug_continue]
        [Calls breakpoint_wait with include_autopsy: true]

        Caught it! The exception was thrown in OrderService.cs at line 87.
        Here's the full context from the autopsy:
        - cart.Items was null because LoadCart() returned an empty cart
        - The null check at line 85 only checked cart, not cart.Items

Tools (34)

CategoryToolsDescription
Sessiondebug_launch, debug_attach, debug_disconnect, debug_stateStart, stop, and monitor debug sessions
Executiondebug_continue, debug_pause, debug_stepControl program flow
Breakpointsbreakpoint_set, breakpoint_remove, breakpoint_list, breakpoint_enable, breakpoint_waitSet and manage source breakpoints
Exception Breakpointsbreakpoint_set_exceptionBreak on specific exception types (first/second chance)
Tracepointstracepoint_setNon-blocking breakpoints that log messages without pausing
Exception Autopsyexception_get_contextFull exception analysis: type, message, inner exceptions, stack frames with source, and local variables
Inspectionthreads_list, stacktrace_get, variables_get, evaluateExamine program state
Memoryobject_inspect, memory_read, layout_get, references_get, members_getDeep object and memory analysis
Modulesmodules_list, modules_search, types_getExplore loaded assemblies and types
Code Analysiscode_load, code_goto_definition, code_find_usages, code_find_assignments, code_get_diagnosticsRoslyn-powered code navigation and diagnostics
Process I/Oprocess_write_input, process_read_outputInteract with debuggee stdin/stdout

Resources (4)

URIDescription
debugger://sessionCurrent debug session state
debugger://breakpointsAll active breakpoints
debugger://threadsThread list with states
debugger://source/{file}Source file contents

Documentation

Similar Projects

ProjectLanguageApproach.NET Support
mcp-debuggerTypeScriptDAPVia external debugger
dap-mcpPythonDAPVia external debugger
LLDB MCPC++NativeNo
debug-mcpC#ICorDebugNative, direct

License

AGPL-3.0 — see LICENSE for details.

Related Servers