ASPNET Core Debugging MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| threads_listB | List all threads in the debuggee. |
| debug_stepA | Single-step the debuggee. Kind: "in" (step into), "over" (step over), "out" (step out). |
| breakpoint_set_exceptionA | Set the active exception breakpoint filters. Pass [] to clear. Common netcoredbg filters: "all", "user-unhandled". |
| debug_launchB | Launch a .NET program under the debugger. Returns the resulting session state. |
| evaluateA | Evaluate a C# expression in the context of a stack frame. Returns the result as a string plus a variablesReference if the result is a compound value. |
| trace_startA | Begin tracing a set of methods. Each named method gets a server-side trace breakpoint that captures the call (top stack + locals) and auto-continues — the request flows through at near-normal speed and your debug state is unaffected. If includeExceptions=true, unhandled exceptions are also captured. Use trace_get to read the captured events and trace_stop to remove the trace. One trace active at a time. |
| breakpoint_setA | Set a line breakpoint in a source file. Supports conditional, hit-count, and logpoint (logMessage) breakpoints. |
| variables_setB | Set the value of a variable or any lvalue expression (e.g. "userId" or "user.Name"). The agent can use this to test fixes by mutating state mid-run. |
| breakpoint_removeA | Remove a breakpoint by its id (line or function). |
| breakpoint_set_dataA | Set a data/watch breakpoint: break when a specific variable changes (or is read). Requires a variablesReference + name from variables_get. May not be supported by all adapters. |
| stack_exploreA | In one call: full stack + locals at every frame + a pre-rendered ASCII tree showing caller → callee with arrows. Use this instead of stacktrace_get + variables_get per frame when you want to see the whole picture at once. |
| variables_getA | Get variables for a stack frame. Defaults to the topmost frame of the last-stopped thread. Recursively expands compound values up to |
| trace_stopA | Stop the active trace and remove its breakpoints. Captured events are discarded — call trace_get first if you want to keep them. |
| breakpoint_waitA | Block until the debuggee hits a breakpoint, completes a step, or otherwise stops. Returns the stop info plus auto-context: the topmost stack frame and a source snippet around the stop. |
| breakpoint_set_functionA | Set a breakpoint on a function by symbol name (e.g. "Namespace.Class.Method"). |
| debug_pauseA | Pause the debuggee. Requires a thread id; defaults to the last-stopped thread if known. |
| debug_stateA | Return the current debug session state, including process id and last stop info. |
| hang_analyzeA | Diagnose why an application appears stuck. Auto-pauses if running, lists all threads, fetches the top frames of each, and classifies each thread's blocking pattern (Monitor / WaitHandle / Semaphore / Task / Thread.Join / Thread.Sleep / async await). Leaves the session paused so you can inspect further. |
| stacktrace_getA | Get the call stack of a thread. By default async state-machine frames are flattened back to their original method names (e.g. UserService.d__3.MoveNext → UserService.GetAsync) and BCL async infrastructure frames are hidden. Pass raw=true for the unmodified DAP frames. |
| trace_getA | Read events captured since trace_start, plus a pre-rendered ASCII timeline with → for method entries and ⚠ for exceptions. Does NOT clear the buffer — call trace_stop when done. |
| process_read_outputA | Drain buffered output (stdout/stderr) from the debuggee since the previous call. Returns the lines collected and removes them from the buffer. |
| breakpoint_listA | List all currently set breakpoints (line, function, and exception filters). |
| exception_autopsyA | Full exception context in one call: exception type + inner-exception chain + top stack frames + top frame's locals + source snippet around the throw. Call this when state.lastStop.reason == "exception". |
| debug_attachB | Attach the debugger to an already-running .NET process by PID. |
| debug_continueC | Resume execution of the debuggee. Defaults to the last-stopped thread. |
| debug_disconnectA | Disconnect the debugger and terminate the debuggee. |
| debugger_healthA | Self-diagnostic. Reports the host platform, RID, resolved netcoredbg path (or that it's missing), where the binary came from (bundled / env var / PATH), and the netcoredbg version it reports. Call this first when something looks wrong, instead of starting a real debug session to find out. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/magna-nz/aspnetcore-debugger-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server