debugmcpdev/mcp-debugger
If you are the rightful owner of mcp-debugger and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
MCP Debugger is a server that enhances AI agents with debugging capabilities using the Model Context Protocol.
create_debug_session
Create a new debugging session
list_debug_sessions
List all active sessions
set_breakpoint
Set a breakpoint in a file
start_debugging
Start debugging a script
get_stack_trace
Get the current stack trace
get_scopes
Get variable scopes for a frame
get_variables
Get variables in a scope
step_over
Step over the current line
step_into
Step into a function
step_out
Step out of a function
continue_execution
Continue running
close_debug_session
Close a session
mcp-debugger

MCP server for step-through debugging โ give your AI agents debugging superpowers ๐
๐ฏ Overview
mcp-debugger is a Model Context Protocol (MCP) server that provides debugging tools as structured API calls. It enables AI agents to perform step-through debugging of Python scripts using the Debug Adapter Protocol (DAP).
๐ฌ Demo Video: See the debugger in action!
Recording in progress - This will show an AI agent discovering and fixing the variable swap bug in real-time
โจ Key Features
- ๐ Python debugging via debugpy โ Full DAP protocol support
- ๐ STDIO and SSE transport modes โ Works with any MCP client
- ๐งช >90% test coverage โ Battle-tested with 657+ passing tests
- ๐ณ Docker and npm packages โ Deploy anywhere
- ๐ค Built for AI agents โ Structured JSON responses for easy parsing
๐ Quick Start
For MCP Clients (Claude Desktop, etc.)
Add to your MCP settings configuration:
{
"mcpServers": {
"mcp-debugger": {
"command": "node",
"args": ["C:/path/to/mcp-debugger/dist/index.js", "--log-level", "debug", "--log-file", "C:/path/to/logs/debug-mcp-server.log"],
"disabled": false,
"autoApprove": ["create_debug_session", "set_breakpoint", "get_variables"]
}
}
}
Using Docker
docker run -v $(pwd):/workspace debugmcp/mcp-debugger:0.9.0
Using npm
npm install -g mcp-debugger
mcp-debugger --help
๐ธ Screenshot: MCP Integration in Action
This screenshot will show real-time MCP protocol communication with tool calls and JSON responses flowing between the AI agent and debugger.
๐ How It Works
mcp-debugger exposes debugging operations as MCP tools that can be called with structured JSON parameters:
// Tool: create_debug_session
// Request:
{
"language": "python",
"name": "My Debug Session"
}
// Response:
{
"success": true,
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"message": "Created python debug session: My Debug Session"
}
๐ธ Screenshot: Active Debugging Session
This screenshot will show the debugger paused at a breakpoint with the stack trace visible in the left panel, local variables in the right panel, and source code with line highlighting in the center.
๐ ๏ธ Available Tools
Tool | Description | Status |
---|---|---|
create_debug_session | Create a new debugging session | โ Implemented |
list_debug_sessions | List all active sessions | โ Implemented |
set_breakpoint | Set a breakpoint in a file | โ Implemented |
start_debugging | Start debugging a script | โ Implemented |
get_stack_trace | Get the current stack trace | โ Implemented |
get_scopes | Get variable scopes for a frame | โ Implemented |
get_variables | Get variables in a scope | โ Implemented |
step_over | Step over the current line | โ Implemented |
step_into | Step into a function | โ Implemented |
step_out | Step out of a function | โ Implemented |
continue_execution | Continue running | โ Implemented |
close_debug_session | Close a session | โ Implemented |
pause_execution | Pause running execution | โ Not Implemented |
evaluate_expression | Evaluate expressions | โ Not Implemented |
get_source_context | Get source code context | โ Not Implemented |
๐ธ Screenshot: Multi-Session Debugging
This screenshot will show the debugger managing multiple concurrent debug sessions, demonstrating how AI agents can debug different scripts simultaneously with isolated session management.
๐ก Example: Debugging Python Code
Here's a complete debugging session example:
# buggy_swap.py
def swap_variables(a, b):
a = b # Bug: loses original value of 'a'
b = a # Bug: 'b' gets the new value of 'a'
return a, b
Step 1: Create a Debug Session
// Tool: create_debug_session
// Request:
{
"language": "python",
"name": "Swap Bug Investigation"
}
// Response:
{
"success": true,
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"message": "Created python debug session: Swap Bug Investigation"
}
Step 2: Set Breakpoints
// Tool: set_breakpoint
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"file": "buggy_swap.py",
"line": 2
}
// Response:
{
"success": true,
"breakpointId": "28e06119-619e-43c0-b029-339cec2615df",
"file": "C:\\path\\to\\buggy_swap.py",
"line": 2,
"verified": false,
"message": "Breakpoint set at C:\\path\\to\\buggy_swap.py:2"
}
Step 3: Start Debugging
// Tool: start_debugging
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"scriptPath": "buggy_swap.py"
}
// Response:
{
"success": true,
"state": "paused",
"message": "Debugging started for buggy_swap.py. Current state: paused",
"data": {
"message": "Debugging started for buggy_swap.py. Current state: paused",
"reason": "breakpoint"
}
}
Step 4: Inspect Variables
First, get the scopes:
// Tool: get_scopes
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"frameId": 3
}
// Response:
{
"success": true,
"scopes": [
{
"name": "Locals",
"variablesReference": 5,
"expensive": false,
"presentationHint": "locals",
"source": {}
},
{
"name": "Globals",
"variablesReference": 6,
"expensive": false,
"source": {}
}
]
}
Then get the local variables:
// Tool: get_variables
// Request:
{
"sessionId": "a4d1acc8-84a8-44fe-a13e-28628c5b33c7",
"scope": 5
}
// Response:
{
"success": true,
"variables": [
{"name": "a", "value": "10", "type": "int", "variablesReference": 0, "expandable": false},
{"name": "b", "value": "20", "type": "int", "variablesReference": 0, "expandable": false}
],
"count": 2,
"variablesReference": 5
}
๐ธ Screenshot: Variable Inspection Reveals the Bug
This screenshot will show the TUI visualizer after stepping over line 4, where both variables incorrectly show value 20, clearly demonstrating the variable swap bug. The left panel shows the execution state, the center shows the highlighted code, and the right panel displays the incorrect variable values.
๐ Documentation
- ๐ โ Complete API documentation
- ๐ฆ โ First-time setup
- ๐ โ Python-specific features
- ๐ง โ Common issues & solutions
- ๐๏ธ โ Technical deep-dive
๐ค Contributing
We welcome contributions! See for guidelines.
# Development setup
git clone https://github.com/debugmcp/mcp-debugger.git
cd mcp-debugger
npm install
npm run build
npm test
Running Container Tests Locally
We use Act to run GitHub Actions workflows locally:
# Build the Docker image first
docker build -t mcp-debugger:local .
# Run tests with Act (use WSL2 on Windows)
act -j build-and-test --matrix os:ubuntu-latest
See for detailed testing instructions.
๐ Project Status
- โ Production Ready: v0.9.0 with comprehensive test coverage
- ๐ง Coming Soon: Expression evaluation, conditional breakpoints
- ๐ Active Development: Regular updates and improvements
See for planned features.
๐ License
MIT License - see for details.
๐ Acknowledgments
Built with:
- Model Context Protocol by Anthropic
- Debug Adapter Protocol by Microsoft
- debugpy for Python debugging
Give your AI the power to debug like a developer! ๐ฏ