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.

Serveurs connexes

NotebookLM Web Importer

Importez des pages web et des vidéos YouTube dans NotebookLM en un clic. Utilisé par plus de 200 000 utilisateurs.

Installer l'extension Chrome