Debugger MCP
A VS Code extension that exposes an MCP (Model Context Protocol) server, allowing AI agents like Claude Code and Claude Desktop to control VS Code's debugger. Language-agnostic — works with any debug adapter (Node.js, Python, C++, Go, Rust, Java, etc.).
Features
- 22 MCP tools for full debugger control
- Works with any debugger that implements the Debug Adapter Protocol
- Zero-config for Claude Code — auto-updates
~/.claude.jsonon activation - Execution commands block until the debugger stops and return the stop location + local variables in a single response
- Captures program output (stdout/stderr) for inspection
Architecture
Claude Code / Desktop / any MCP client
| (HTTP: Streamable HTTP transport)
v
VS Code Extension (MCP server on localhost:<port>/mcp)
| (vscode.debug.* API)
v
Debug Adapter Protocol → Any Debugger
The extension hosts the MCP server directly inside the VS Code process — no separate server or sidecar needed. On activation it starts a localhost HTTP server (default port 45557) and automatically writes the connection URL to ~/.claude.json.
Installation
VS Code Marketplace
Install from the VS Code Marketplace, or search for "Debugger MCP" in the Extensions view (Ctrl+Shift+X / Cmd+Shift+X).
Or from the command line:
code --install-extension speakeasy.debugger-mcp
The extension activates automatically on startup — no manual setup required. It starts the MCP server and auto-configures Claude Code.
From source (development)
git clone git@github.com:speakeasy-api/debugger-mcp.git
cd debugger-mcp
npm install
npm run compile
Then press F5 in VS Code to launch the Extension Development Host.
MCP Client Configuration
Claude Code (zero-config)
The extension automatically registers itself in ~/.claude.json on activation. No manual setup needed — just install the extension, reload VS Code, and start using Claude Code.
To verify it's configured, run:
claude mcp list
You should see vscode-debugger listed as an HTTP server.
If you prefer to configure manually, or if auto-config is disabled:
claude mcp add --transport http vscode-debugger http://localhost:45557/mcp
Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"vscode-debugger": {
"type": "http",
"url": "http://localhost:45557/mcp"
}
}
}
VS Code (Copilot / other MCP clients)
Add to .vscode/mcp.json in your workspace:
{
"servers": {
"vscode-debugger": {
"type": "http",
"url": "http://localhost:45557/mcp"
}
}
}
Alternative: stdio transport
A standalone MCP server process is also available for clients that only support stdio transport. See the extension's dist/mcp-server.js — it discovers the running extension via a port file and proxies MCP requests over HTTP.
Settings
| Setting | Default | Description | |---------|---------|-------------| | debuggerMcp.port | 45557 | Preferred port for the MCP server. Falls back to a random port if taken. | | debuggerMcp.autoConfigureClaude | true | Automatically update ~/.claude.json with the MCP server URL on activation. |
Tools
Session Management
| Tool | Description | |------|-------------| | debug_start | Start a debug session from a launch.json config name or inline configuration | | debug_stop | Stop a debug session | | debug_restart | Restart a debug session | | debug_list_sessions | List active debug sessions | | debug_list_configurations | List available launch.json configurations |
Execution Control
| Tool | Description | |------|-------------| | debug_continue | Resume execution until next breakpoint or exit. Returns stop location + locals | | debug_pause | Pause a running program. Returns stop location + locals | | debug_step_over | Step over (next line). Supports count for batch stepping | | debug_step_into | Step into function calls. Supports count for batch stepping | | debug_step_out | Step out of current function. Supports count for batch stepping |
Breakpoints
| Tool | Description | |------|-------------| | debug_set_breakpoint | Set a source breakpoint (supports condition, hit count, logpoint) | | debug_set_function_breakpoint | Set a function-name breakpoint | | debug_remove_breakpoint | Remove by ID, file+line, all in file, or all | | debug_list_breakpoints | List all breakpoints with details | | debug_toggle_breakpoint | Enable/disable a breakpoint without removing it |
State Inspection
| Tool | Description | |------|-------------| | debug_get_threads | List threads | | debug_get_stack_trace | Get call stack for a thread | | debug_get_scopes | Get variable scopes for a stack frame | | debug_get_variables | Get variables in a scope or expand a structured variable | | debug_evaluate | Evaluate an expression in the debug context |
Status & Output
| Tool | Description | |------|-------------| | debug_status | Quick "where am I?" — session, stop location, and locals | | debug_get_output | Get captured program output (stdout/stderr) |
Build Scripts
| Script | Description | |--------|-------------| | npm run compile | Type-check and build both bundles | | npm run build | Production build (minified, no source maps) | | npm run watch | Watch mode for development | | npm run package | Production build + package into .vsix | | npm run check-types | Type-check only (no emit) |
How It Works
- Extension activates on VS Code startup and starts an HTTP server on
localhost:45557 - MCP endpoint at
/mcpuses the Streamable HTTP transport protocol — each client gets its own session - Auto-config writes the server URL to
~/.claude.jsonso Claude Code discovers it automatically - Debug commands are forwarded to the VS Code debug API via an in-process
DirectClient - DAP message interception captures stopped events, program output, and exit codes in real-time
- Execution commands (continue, step) block until the debugger pauses, then automatically gather the stop location and local variables
Security
- HTTP server binds to
127.0.0.1only (no network exposure) - MCP endpoint uses the standard Streamable HTTP transport protocol
- Port file (for legacy stdio transport) includes random auth token and PID for stale-file detection
License
MIT






