debug-mcp
0.13.0
dotnet tool install --global debug-mcp --version 0.13.0
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
dotnet tool install --local debug-mcp --version 0.13.0
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=debug-mcp&version=0.13.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
nuke :add-package debug-mcp --version 0.13.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
debug-mcp.net
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)
| Category | Tools | Description |
|---|---|---|
| Session | debug_launch, debug_attach, debug_disconnect, debug_state |
Start, stop, and monitor debug sessions |
| Execution | debug_continue, debug_pause, debug_step |
Control program flow |
| Breakpoints | breakpoint_set, breakpoint_remove, breakpoint_list, breakpoint_enable, breakpoint_wait |
Set and manage source breakpoints |
| Exception Breakpoints | breakpoint_set_exception |
Break on specific exception types (first/second chance) |
| Tracepoints | tracepoint_set |
Non-blocking breakpoints that log messages without pausing |
| Exception Autopsy | exception_get_context |
Full exception analysis: type, message, inner exceptions, stack frames with source, and local variables |
| Inspection | threads_list, stacktrace_get, variables_get, evaluate |
Examine program state |
| Memory | object_inspect, memory_read, layout_get, references_get, members_get |
Deep object and memory analysis |
| Modules | modules_list, modules_search, types_get |
Explore loaded assemblies and types |
| Code Analysis | code_load, code_goto_definition, code_find_usages, code_find_assignments, code_get_diagnostics |
Roslyn-powered code navigation and diagnostics |
| Process I/O | process_write_input, process_read_output |
Interact with debuggee stdin/stdout |
Resources (4)
| URI | Description |
|---|---|
debugger://session |
Current debug session state |
debugger://breakpoints |
All active breakpoints |
debugger://threads |
Thread list with states |
debugger://source/{file} |
Source file contents |
Documentation
- Architecture — System design and components
- How Debugging Works — ICorDebug internals explained
- MCP Tools Reference — Complete API documentation
- MCP Resources — Subscribable state views
- Development Guide — Building, testing, contributing
Similar Projects
| Project | Language | Approach | .NET Support |
|---|---|---|---|
| mcp-debugger | TypeScript | DAP | Via external debugger |
| dap-mcp | Python | DAP | Via external debugger |
| LLDB MCP | C++ | Native | No |
| debug-mcp | C# | ICorDebug | Native, direct |
License
AGPL-3.0 — see LICENSE for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.13.0 | 81 | 2/12/2026 |
| 0.12.1 | 77 | 2/12/2026 |
| 0.12.0 | 69 | 2/11/2026 |
| 0.11.0 | 85 | 2/11/2026 |
| 0.10.0 | 99 | 2/11/2026 |
| 0.9.0 | 73 | 2/10/2026 |
| 0.8.0 | 89 | 2/6/2026 |
| 0.6.0 | 90 | 2/6/2026 |
| 0.5.0 | 80 | 2/5/2026 |
| 0.4.0 | 80 | 2/5/2026 |
| 0.3.0 | 81 | 2/5/2026 |
| 0.2.3 | 85 | 2/3/2026 |
| 0.2.2 | 88 | 2/3/2026 |
| 0.2.1 | 87 | 2/3/2026 |
| 0.2.0 | 87 | 2/2/2026 |
| 0.1.1 | 89 | 1/29/2026 |