ASP.NET Core Debugger — MCP Server for AI Agents

io.github.magna-nz由 GitHub 帳號 magna-nz 發布v1.4.0更新於 Oct 24, 2026

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

發布方自己的服務:core.blue

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

讓 AI 助理啟動、附加並互動式偵錯 .NET 與 ASP.NET Core 行程,讀取執行時期的值並修改狀態。

可以做什麼
這是一個本機 MCP 伺服器,透過 Debug Adapter Protocol 把 AI 用戶端連接到 netcoredbg,提供 27 個工具。涵蓋工作階段控制(啟動、附加、中斷連線)、執行步進、行、函式、例外與資料中斷點,以及執行緒、堆疊、變數與運算式的檢查,包括設定變數值。組合工具把多個偵錯請求合併為一次呼叫:exception_autopsy、stack_explore、用於死鎖分類的 hang_analyze,以及用於請求追蹤的 trace_start/trace_get/trace_stop。
適用情境
當助理需要診斷正在執行的 .NET 或 ASP.NET Core 應用程式,而不是憑原始碼猜測時適用:查詢傳回空結果、驗證失敗、請求卡住、死鎖或端點變慢。適合希望助理暫停程式碼、讀取真實執行時期的值,並透過修改變數驗證修正方案後再改程式碼的開發者。
執行需求
以本機行程方式透過 stdio 執行。主機需安裝 .NET 10 SDK;套件已內建適用於 linux-x64、linux-arm64、win-x64、osx-x64 與 osx-arm64 的 netcoredbg。以 .NET 全域工具安裝,並依命令名稱註冊到 MCP 用戶端。未宣告任何驗證、環境變數或標頭。
安裝前請注意
助理可在執行時期修改程式狀態,例如設定變數值,並可啟動或附加到行程;這些變更會影響被偵錯的應用程式,可能改變其行為或資料。它會附加到正在執行的行程,請確認目標行程。伺服器本身不要求任何憑證或密鑰。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 ASP.NET Core Debugger — MCP Server for AI Agents,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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

來源:README.md,提交 bad2872

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.4.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Core 整合