GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者による説明(英語の原文)
MCP server giving AI agents interactive .NET / ASP.NET Core debugging via netcoredbg + DAP.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"aspnetcore-debugger": {
"command": "dnx",
"args": [
"AspNetCoreDebuggerMcp",
"--yes"
]
}
}
}ターミナルでこれを実行します
claude mcp add aspnetcore-debugger -- dnx AspNetCoreDebuggerMcp --yesプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"aspnetcore-debugger": {
"command": "dnx",
"args": [
"AspNetCoreDebuggerMcp",
"--yes"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"aspnetcore-debugger": {
"type": "stdio",
"command": "dnx",
"args": [
"AspNetCoreDebuggerMcp",
"--yes"
]
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント magna-nz で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(1.4.0)がレジストリに届いたのは2 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンに.NETも必要です。
同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
An MIT-licensed [MCP](https://modelcontextprotocol.io/) 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.
You
GET /users/activereturns[], but I know there are active users in the DB. What's the
query actually doing?
Claude
I'll pause inside
UserRepository.GetActiveAsyncand read what EF Core actually sent.
`sql
SELECT u.*
FROM Users AS u
WHERE 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.TenantIdis 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.
You
/admin/usersis 401-ing for Anna, but her token looks valid to me. What does the auth
handler actually see?
Claude
I'll break inside
JwtBearerHandler.HandleAuthenticateAsyncafter her request lands.
`
Token signature: ✓ valid
Claims 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.
You
I think capping
discountat 100 fixes the bug. Test that hypothesis without me touching
the code.
Claude
I'll pause inside
ApplyDiscounton the next checkout and mutatediscountin 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 (
ApplyDiscountitself, or upstream in
PromoEngine).
You
/reportshangs 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
SqlConnectionfrom 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:
awaitall the way down inReportService, or don't hold a connection across the awaited
call.
You
GET /order/42takes 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.Enrichor moving it off the request path.
More examples →
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.
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.
claude mcp add aspnetcore-debugger -- aspnetcore-debugger-mcp
…or edit .mcp.json (project-scoped) / ~/.claude.json (global) / claude_desktop_config.json (Claude Desktop) directly:
{
"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 →
Bundled netcoredbg binary is selected at runtime — no per-platform install dance.
| OS | Architectures | Status |
|---|---|---|
| Linux | x64, arm64 | ✅ Supported (Samsung prebuilt) |
| macOS | Intel (x64), Apple Silicon (arm64) | ✅ Supported (arm64 built by us, since Samsung doesn't ship one) |
| Windows | x64 | ✅ 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.
| Category | Tools | What it's for |
|---|---|---|
| Session | debug_launch, debug_attach, debug_disconnect, debug_state | Start, attach to, or stop a debug session |
| Execution | debug_continue, debug_pause, debug_step, breakpoint_wait | Drive the debuggee and wait for it to stop |
| Breakpoints | breakpoint_set, breakpoint_set_function, breakpoint_set_exception, breakpoint_set_data, breakpoint_remove, breakpoint_list | Line, function, exception, and data breakpoints |
| Inspection | threads_list, stacktrace_get, variables_get, variables_set, evaluate, stack_explore | Examine and mutate program state |
| Exception Autopsy | exception_autopsy | One call: exception chain + top frames + locals + source snippet |
| Hang / Deadlock | hang_analyze | Auto-pause, classify each thread's blocking pattern (Monitor / Task / Semaphore / async / …) |
| Request Tracing | trace_start, trace_get, trace_stop | Server-side request tracing — auto-instrument a call chain and capture arguments at every entry |
| Process I/O | process_read_output | Drain the debuggee's stdout/stderr |
| Health | debugger_health | Quick check that netcoredbg loaded and the bundled binary is reachable |
Full tool reference with parameters →
| Project | License | Platforms | Approach | .NET |
|---|---|---|---|---|
| aspnetcore-debugger-mcp *(this)* | MIT | Linux + macOS + Windows | netcoredbg via DAP, ASP.NET-focused composites (request tracing, hang analysis) | Native, .NET 10 |
| debug-mcp | AGPL-3.0 | Linux only (Win/macOS planned) | ICorDebug direct, Roslyn code nav | Native, .NET 10 |
| mcp-debugger | — | Cross-platform | DAP | Via external debugger |
| dap-mcp | — | Cross-platform | DAP | Via external debugger |
| LLDB MCP | NCSA | Cross-platform | Native LLDB | No |
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.
MIT — see LICENSE. Built on netcoredbg (MIT) and the ModelContextProtocol SDK (MIT).