@debugmcp/mcp-debugger
Version:
Run-time step-through debugging for LLM agents.
235 lines (188 loc) • 4.95 kB
Markdown
# Quickstart: mcp-debugger
This guide will help you get started with `mcp-debugger` quickly, using real examples from testing conducted on 2025-06-11.
## Prerequisites
- **Node.js** (v16+) and npm installed
- **Python** (3.8+) with `debugpy` installed
- **MCP Client** (Claude Desktop, or custom implementation)
## Installation
### Option 1: Using npm (when published)
```bash
npm install -g mcp-debugger
```
### Option 2: From Source
```bash
git clone https://github.com/debugmcp/mcp-debugger.git
cd mcp-debugger
npm install
npm run build
```
## Running the Server
### For MCP Clients (Recommended)
Add to your MCP client configuration (e.g., Claude Desktop):
```json
{
"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"]
}
}
}
```
### Command Line Options
```bash
# Run with debugging output
node dist/index.js --log-level debug --log-file ./logs/debug.log
# Run in quiet mode
node dist/index.js --log-level error
```
## Quick Example: Debug a Python Script
Let's debug a simple Python script with a bug:
### 1. Create a Test Script
Save this as `buggy_math.py`:
```python
def calculate_average(numbers):
total = 0
for num in numbers:
total += num
# Bug: dividing by wrong value
average = total / len(numbers) + 1
return average
numbers = [10, 20, 30, 40, 50]
result = calculate_average(numbers)
print(f"Average: {result}")
```
### 2. Start a Debug Session
```json
// Tool: create_debug_session
{
"language": "python",
"name": "Debug Math Bug"
}
// Response:
{
"success": true,
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"message": "Created python debug session: Debug Math Bug"
}
```
### 3. Set a Breakpoint
```json
// Tool: set_breakpoint
{
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"file": "buggy_math.py",
"line": 6
}
// Response:
{
"success": true,
"breakpointId": "bp-123456",
"file": "C:\\path\\to\\buggy_math.py",
"line": 6,
"verified": false,
"message": "Breakpoint set at C:\\path\\to\\buggy_math.py:6"
}
```
### 4. Start Debugging
```json
// Tool: start_debugging
{
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"scriptPath": "buggy_math.py"
}
// Response:
{
"success": true,
"state": "paused",
"message": "Debugging started for buggy_math.py. Current state: paused",
"data": {
"message": "Debugging started for buggy_math.py. Current state: paused",
"reason": "breakpoint"
}
}
```
### 5. Inspect Variables
First, get the stack trace:
```json
// Tool: get_stack_trace
{
"sessionId": "550e8400-e29b-41d4-a716-446655440000"
}
// Response shows we're in calculate_average function
```
Then get scopes:
```json
// Tool: get_scopes
{
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"frameId": 1
}
// Response:
{
"success": true,
"scopes": [
{
"name": "Locals",
"variablesReference": 3,
"expensive": false,
"presentationHint": "locals"
}
]
}
```
Finally, inspect the variables:
```json
// Tool: get_variables
{
"sessionId": "550e8400-e29b-41d4-a716-446655440000",
"scope": 3
}
// Response:
{
"success": true,
"variables": [
{"name": "numbers", "value": "[10, 20, 30, 40, 50]", "type": "list"},
{"name": "total", "value": "150", "type": "int"},
{"name": "average", "value": "31.0", "type": "float"}
]
}
```
### 6. Clean Up
```json
// Tool: close_debug_session
{
"sessionId": "550e8400-e29b-41d4-a716-446655440000"
}
// Response:
{
"success": true,
"message": "Closed debug session: 550e8400-e29b-41d4-a716-446655440000"
}
```
## Key Points to Remember
1. **Session IDs are UUIDs** - Always save the sessionId from create_debug_session
2. **Get scopes before variables** - You need the variablesReference, not the frame ID
3. **Breakpoints need executable lines** - Avoid comments and blank lines
4. **Sessions can terminate** - Handle errors gracefully
## What's Next?
- Read the [Tool Reference](./tool-reference.md) for complete API documentation
- See [Usage Guide](./usage.md) for more complex debugging scenarios
- Check [Troubleshooting](./troubleshooting.md) if you encounter issues
## Troubleshooting Quick Tips
### MCP Server Not Found
- Ensure the path in your MCP config is absolute
- Check that the server was built (`npm run build`)
- Verify Node.js is in your PATH
### Python Debugging Not Working
- Install debugpy: `pip install debugpy`
- Ensure Python is in your PATH
- Use absolute paths for script files
### Session Terminated Unexpectedly
- Check the log file for errors
- Ensure the Python script exists
- Verify breakpoints are on executable lines
---
*For more detailed information, see the full [documentation](./README.md).*