debug-mcp
Servidor MCP que expone la depuración de .NET como 34 herramientas accesibles por IA a través de las API de ICorDebug: puntos de interrupción, ejecución paso a paso, inspección, autopsia de excepciones y análisis de código.
Documentación
debug-mcp.net
Servidor MCP para depuración de .NET — permite a los agentes de IA depurar aplicaciones .NET de forma interactiva.
¿Qué es debug-mcp?
debug-mcp es un servidor de Model Context Protocol que expone capacidades de depuración de .NET como herramientas de API estructuradas. Permite a asistentes de IA como Claude, GPT o Copilot:
- Iniciar o adjuntarse a procesos .NET
- Establecer puntos de interrupción, puntos de interrupción de excepción y puntos de seguimiento
- Ejecutar el código línea por línea
- Inspeccionar variables, evaluar expresiones y leer memoria
- Analizar seguimientos de pila y subprocesos
- Obtener contexto completo de excepción con una sola llamada (autopsia de excepción)
- Navegar por el código con ir a definición, buscar usos y diagnósticos
- Resolver automáticamente símbolos desde servidores de símbolos públicos
A diferencia de herramientas similares que usan depuradores externos mediante el protocolo DAP, debug-mcp interactúa directamente con el runtime de .NET usando las API de ICorDebug, el mismo enfoque utilizado por JetBrains Rider.
Inicio rápido
Ejecutar
# No installation needed (.NET 10+)
dnx -y debug-mcp
Requisitos
- SDK de .NET 10 o posterior
- Linux (soporte para Windows y macOS planificado)
Configurar con Claude Desktop
Añade a tu claude_desktop_config.json:
{
"mcpServers": {
"dotnet-debugger": {
"command": "dnx",
"args": ["-y", "debug-mcp"]
}
}
}
Configurar con Claude Code
Añade a tu .mcp.json:
{
"mcpServers": {
"dotnet-debugger": {
"command": "dnx",
"args": ["-y", "debug-mcp"]
}
}
}
Ejemplo de conversación
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
Herramientas (34)
| Categoría | Herramientas | Descripción |
|---|---|---|
| Sesión | debug_launch, debug_attach, debug_disconnect, debug_state | Iniciar, detener y monitorear sesiones de depuración |
| Ejecución | debug_continue, debug_pause, debug_step | Controlar el flujo del programa |
| Puntos de interrupción | breakpoint_set, breakpoint_remove, breakpoint_list, breakpoint_enable, breakpoint_wait | Establecer y gestionar puntos de interrupción de código fuente |
| Puntos de interrupción de excepción | breakpoint_set_exception | Detenerse en tipos de excepción específicos (primera/segunda oportunidad) |
| Puntos de seguimiento | tracepoint_set | Puntos de interrupción no bloqueantes que registran mensajes sin pausar |
| Autopsia de excepción | exception_get_context | Análisis completo de excepción: tipo, mensaje, excepciones internas, marcos de pila con código fuente y variables locales |
| Inspección | threads_list, stacktrace_get, variables_get, evaluate | Examinar el estado del programa |
| Memoria | object_inspect, memory_read, layout_get, references_get, members_get | Análisis profundo de objetos y memoria |
| Módulos | modules_list, modules_search, types_get | Explorar ensamblados y tipos cargados |
| Análisis de código | code_load, code_goto_definition, code_find_usages, code_find_assignments, code_get_diagnostics | Navegación de código y diagnósticos impulsados por Roslyn |
| E/S de proceso | process_write_input, process_read_output | Interactuar con la entrada/salida estándar del proceso depurado |
Recursos (4)
| URI | Descripción |
|---|---|
debugger://session | Estado actual de la sesión de depuración |
debugger://breakpoints | Todos los puntos de interrupción activos |
debugger://threads | Lista de subprocesos con estados |
debugger://source/{file} | Contenido de archivos de código fuente |
Documentación
- Arquitectura — Diseño del sistema y componentes
- Cómo funciona la depuración — Explicación de los internals de ICorDebug
- Referencia de herramientas MCP — Documentación completa de la API
- Recursos MCP — Vistas de estado suscribibles
- Guía de desarrollo — Compilación, pruebas, contribución
Proyectos similares
| Proyecto | Lenguaje | Enfoque | Soporte .NET |
|---|---|---|---|
| mcp-debugger | TypeScript | DAP | Vía depurador externo |
| dap-mcp | Python | DAP | Vía depurador externo |
| LLDB MCP | C++ | Nativo | No |
| debug-mcp | C# | ICorDebug | Nativo, directo |
Licencia
AGPL-3.0 — consulte LICENCIA para más detalles.