ASP.NET Core Debugger — MCP Server for AI Agents

io.github.magna-nzPublished by GitHub account magna-nzv1.4.0Updated Oct 24, 2026

MCP server giving AI agents interactive .NET / ASP.NET Core debugging via netcoredbg + DAP.

The publisher's own server: core.blue

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Lets an AI agent launch, attach to, and interactively debug .NET and ASP.NET Core processes, reading runtime values and mutating state.

What you can do
A local MCP server that bridges an AI client to netcoredbg over the Debug Adapter Protocol, exposing 27 tools. It covers session control (launch, attach, disconnect), execution stepping, line, function, exception and data breakpoints, and inspection of threads, stack traces, variables and expressions, including setting variable values. Composite tools bundle several debugger requests into one call: exception_autopsy, stack_explore, hang_analyze for deadlock classification, and trace_start/trace_get/trace_stop for request tracing.
When to use it
Useful when an assistant needs to diagnose a running .NET or ASP.NET Core application rather than guess from source: empty query results, failing authentication, hung requests, deadlocks, or slow endpoints. It suits developers who want the agent to pause code, read actual runtime values, and test a fix by mutating state before editing the code.
Requirements
Runs as a local process over stdio. Requires the .NET 10 SDK on the host; the package bundles prebuilt netcoredbg for linux-x64, linux-arm64, win-x64, osx-x64 and osx-arm64. Installed as a .NET global tool and registered with the MCP client by command name. No authentication, environment variables or headers are declared.
Before you install
The agent can mutate program state at runtime, for example setting variable values, and can launch or attach to processes; changes affect the debugged application and may alter its behaviour or data. It attaches to running processes, so review which process is targeted. No credentials or secrets are requested by the server itself.

Installation

In SourceWeft

  1. Open ASP.NET Core Debugger — MCP Server for AI Agents in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

ASP.NET Core Debugging MCP Server

[MCP Toplist]

The cross-platform .NET debugging MCP — runs on Linux, macOS, and Windows.

[CI] [NuGet] [.NET] [MCP] [Platforms] [License: MIT] [Glama Quality]

An MIT-licensed MCP server that lets an AI agent (Claude, etc.) debug your .NET / ASP.NET Core app — netcoredbg bundled for every platform, nothing extra to install.

Instead of "I think the bug is around line 42, try this", the agent runs your code, pauses it, reads the actual runtime values, mutates state to test a fix, and answers grounded in what it actually saw.

Contents

See it in action

Why is my EF Core query returning empty?

You

GET /users/active returns [], but I know there are active users in the DB. What's the query actually doing?

Claude

I'll pause inside UserRepository.GetActiveAsync and read what EF Core actually sent.

sql
SELECT u.*FROM Users AS uWHERE u.IsActive = 1 AND u.TenantId = @__tenantId_0
@__tenantId_0 = 0

The SQL is correct; the parameter is wrong. TenantId = 0, but your tenants start at 1. ICurrentUser.TenantId is being read in the repository constructor — before the request scope resolves it. Fix: read the tenant inside the query (or apply it via HasQueryFilter with IHttpContextAccessor) instead of capturing it at construction.

Why is my JWT auth returning 401?

You

/admin/users is 401-ing for Anna, but her token looks valid to me. What does the auth handler actually see?

Claude

I'll break inside JwtBearerHandler.HandleAuthenticateAsync after her request lands.

Token signature: ✓ validClaims built:  name : anna  role : User  iss  : https://auth.staging.example  aud  : app-api  exp  : 2026-05-26T14:12:00Z      (not expired)

The token validates fine — but the claim is role=User. Your endpoint is [Authorize(Roles="Admin")]. So the 401 is correct: Anna isn't actually an admin yet upstream. Either her IdP record needs updating, or this policy is wrong.

Test a fix without restarting

You

I think capping discount at 100 fixes the bug. Test that hypothesis without me touching the code.

Claude

I'll pause inside ApplyDiscount on the next checkout and mutate discount in place.

Paused at PricingService.cs:47  discount = 250        ← bug: two promos stacked
Set discount = 100, resumed.
Result:  subtotal = $400  final    = $300  refund-service complaints: 0

Capping at 100 unblocks the flow downstream. Hypothesis confirmed — time to make the edit for real and decide where the cap belongs (ApplyDiscount itself, or upstream in PromoEngine).

My app is hung — what's actually blocking?

You

/reports hangs forever in staging. Attach and tell me why.

Claude

Attached. Ran hang_analyze.

Thread 12 (HTTP request)  → blockedOnTask    at ReportService.cs:38   Task.Wait() on T#14
Thread 14 (worker)  → blockedOnMonitor at SqlConnectionPool.cs:91                      waiting for SqlConnection                      (pool max=5, in-use=5)

Classic sync-over-async deadlock. Thread 12 calls .Wait() on a task that itself needs to open another SqlConnection from a fully-held pool. The connection it's holding can't be released until the task completes; the task can't proceed until a connection frees up. Fix: await all the way down in ReportService, or don't hold a connection across the awaited call.

Where is a slow request actually spending its time?

You

GET /order/42 takes 800ms. I don't want to set breakpoints all over — just show me where the time is going.

Claude

I'll auto-instrument your order pipeline and fire the request. Each entry logs the timestamp + arguments, then resumes — the code runs near-normal speed.

[+   4ms] → OrderController.GetOrder()       id=42[+   6ms] --→ OrderService.LookupOrder()     id=42[+   9ms] ----→ OrderRepository.FetchById()  id=42[+  14ms] ------→ SqlClient.ExecuteQuery()   sql="SELECT * FROM orders WHERE id=42"[+ 287ms] ----→ EnrichmentService.Enrich()   raw="rows(...)"[+ 781ms] ------→ HttpClient.PostAsync()     url="https://crm.internal/enrich"

Time is in the CRM enrichment HTTP call — 500ms inside HttpClient.PostAsync. DB itself was 5ms. Worth caching EnrichmentService.Enrich or moving it off the request path.

More examples →

How it works

Claude (MCP client)   │  MCP  (stdio / JSON-RPC)   ▼aspnetcore-debugger-mcp        ← this server   │  DAP  (Debug Adapter Protocol)   ▼netcoredbg                     ← Samsung's MIT-licensed .NET debugger, child process   │  ICorDebug   ▼target .NET process

A protocol bridge with agent-friendly composites on top — exception_autopsy, stack_explore, hang_analyze, and the trace tools — that bundle multiple DAP requests into a single tool call.

Use it in 3 steps

  1. Install the tool — needs the .NET 10 SDK.
    bash
    dotnet tool install -g AspNetCoreDebuggerMcp --prerelease
    The package bundles prebuilt netcoredbg for linux-x64, linux-arm64, win-x64, osx-x64, and osx-arm64 — no separate install needed.
  2. Register with Claude — either the quick CLI command:
    bash
    claude mcp add aspnetcore-debugger -- aspnetcore-debugger-mcp
    …or edit .mcp.json (project-scoped) / ~/.claude.json (global) / claude_desktop_config.json (Claude Desktop) directly:
    json
    {  "mcpServers": {    "aspnetcore-debugger": {      "command": "aspnetcore-debugger-mcp"    }  }}
  3. Just chat with Claude. /mcp confirms it's connected. From there, describe what you want — "why does this endpoint return null" — and the agent picks the right tools.

Full install + troubleshooting →

Platforms

Bundled netcoredbg binary is selected at runtime — no per-platform install dance.

OSArchitecturesStatus
Linuxx64, arm64✅ Supported (Samsung prebuilt)
macOSIntel (x64), Apple Silicon (arm64)✅ Supported (arm64 built by us, since Samsung doesn't ship one)
Windowsx64✅ Supported (Samsung prebuilt)

Requires the .NET 10 SDK on the host. The MCP server itself is a cross-platform .NET global tool — same install command everywhere.

Tools (27)

CategoryToolsWhat it's for
Sessiondebug_launch, debug_attach, debug_disconnect, debug_stateStart, attach to, or stop a debug session
Executiondebug_continue, debug_pause, debug_step, breakpoint_waitDrive the debuggee and wait for it to stop
Breakpointsbreakpoint_set, breakpoint_set_function, breakpoint_set_exception, breakpoint_set_data, breakpoint_remove, breakpoint_listLine, function, exception, and data breakpoints
Inspectionthreads_list, stacktrace_get, variables_get, variables_set, evaluate, stack_exploreExamine and mutate program state
Exception Autopsyexception_autopsyOne call: exception chain + top frames + locals + source snippet
Hang / Deadlockhang_analyzeAuto-pause, classify each thread's blocking pattern (Monitor / Task / Semaphore / async / …)
Request Tracingtrace_start, trace_get, trace_stopServer-side request tracing — auto-instrument a call chain and capture arguments at every entry
Process I/Oprocess_read_outputDrain the debuggee's stdout/stderr
Healthdebugger_healthQuick check that netcoredbg loaded and the bundled binary is reachable

Full tool reference with parameters →

How this compares

ProjectLicensePlatformsApproach.NET
aspnetcore-debugger-mcp (this)MITLinux + macOS + Windowsnetcoredbg via DAP, ASP.NET-focused composites (request tracing, hang analysis)Native, .NET 10
debug-mcpAGPL-3.0Linux only (Win/macOS planned)ICorDebug direct, Roslyn code navNative, .NET 10
mcp-debugger—Cross-platformDAPVia external debugger
dap-mcp—Cross-platformDAPVia external debugger
LLDB MCPNCSACross-platformNative LLDBNo

Different sweet spots: this project is the MIT, cross-platform option, with ASP.NET-flavoured composites on top of a DAP. debug-mcp goes deeper into runtime internals via ICorDebug but is Linux-only and AGPL today.

Docs

License

MIT — see LICENSE. Built on netcoredbg (MIT) and the ModelContextProtocol SDK (MIT).

Source: README.md at commit bad2872

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.4.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Core integrations