项目简介
'mcp-debugger' 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在为AI代理提供强大的多语言调试能力。它将复杂的调试操作(如设置断点、单步执行、检查变量等)封装为结构化的API工具,允许AI代理通过标准化的JSON-RPC请求进行调用,从而赋予AI代理“调试超能力”。当前主要支持Python语言的调试,并通过Debug Adapter Protocol (DAP) 实现与底层调试器的通信。
主要功能点
- 多语言调试支持: 通过灵活的适配器模式,可扩展支持多种编程语言的调试(当前已支持Python和Mock测试)。
- 标准化工具接口: 暴露调试操作为MCP工具,LLM客户端可通过JSON-RPC协议调用,实现断点设置、程序启动、单步执行、变量检查、堆栈追踪等功能。
- 多种传输协议: 支持STDIO和SSE (Server-Sent Events) 两种传输模式,兼容各类MCP客户端环境。
- AI友好设计: 提供结构化的JSON响应,方便AI代理解析和理解调试信息。
- 会话管理: 允许AI代理创建、管理和关闭多个独立的调试会话,实现并行调试不同代码的能力。
- 代码上下文感知: 支持智能断点放置和获取代码上下文,帮助AI理解代码逻辑。
安装步骤
'mcp-debugger' 可以通过npm或Docker进行安装和运行。
使用npm安装(推荐):
- 安装Node.js: 确保您的系统已安装Node.js (LTS版本)。
- 全局安装: 打开终端,运行以下命令:
npm install -g @debugmcp/mcp-debugger - 验证安装: 运行 'mcp-debugger --help' 查看可用命令和选项。
使用Docker运行:
- 安装Docker: 确保您的系统已安装Docker。
- 运行容器: 在终端中,导航到您希望调试代码的目录,然后运行以下命令。这将启动MCP服务器,并将当前目录挂载到容器内的'/workspace',以便调试器可以访问您的代码。
docker run -v $(pwd):/workspace debugmcp/mcp-debugger:latest
服务器配置
MCP客户端(如Claude Desktop或其他兼容LLM前端)需要配置启动'mcp-debugger'服务器的命令和参数。以下是JSON格式的配置示例,您需要根据实际安装路径进行调整:
-
如果通过npm全局安装:
{ "mcpServers": { "mcp-debugger": { "command": "mcp-debugger", "args": ["stdio", "--log-level", "info", "--log-file", "/path/to/your/logs/debug-mcp-server.log"], "disabled": false, "autoApprove": ["create_debug_session", "set_breakpoint", "get_variables"] } } }- 'command': 'mcp-debugger' (因为是全局安装,可以直接执行)
- 'args':
- 'stdio': 指定使用Stdio传输协议。
- '--log-level info': 设置日志级别为信息。可选值:'error', 'warn', 'info', 'debug'。
- '--log-file /path/to/your/logs/debug-mcp-server.log': 指定日志文件的路径,请替换为您的实际路径。
- 'autoApprove': (可选)配置自动批准的工具调用,方便AI代理使用。
-
如果通过Docker运行:
{ "mcpServers": { "mcp-debugger": { "command": "docker", "args": ["run", "--rm", "-i", "-v", "${workspace_folder}:/workspace", "debugmcp/mcp-debugger:latest", "stdio", "--log-level", "info"], "disabled": false, "autoApprove": ["create_debug_session", "set_breakpoint", "get_variables"] } } }- 'command': 'docker'
- 'args':
- 'run --rm -i': 运行一个临时容器,并保持标准输入/输出流打开。
- '-v "${workspace_folder}:/workspace"': 将MCP客户端的当前工作目录挂载到容器的'/workspace'目录,'"${workspace_folder}"'通常由MCP客户端自动替换为实际路径。
- 'debugmcp/mcp-debugger:latest': 指定要运行的Docker镜像。
- 'stdio': 告诉容器内的MCP服务器使用Stdio传输协议。
- '--log-level info': 设置日志级别。
-
如果MCP客户端需要SSE传输(通常用于浏览器或桌面应用):
{ "mcpServers": { "mcp-debugger": { "command": "mcp-debugger", "args": ["sse", "--port", "3001", "--log-level", "info", "--log-file", "/path/to/your/logs/debug-mcp-server-sse.log"], "disabled": false, "autoApprove": ["create_debug_session", "set_breakpoint", "get_variables"] } } }- 'command': 'mcp-debugger'
- 'args':
- 'sse': 指定使用SSE传输协议。
- '--port 3001': 服务器监听的端口号。
- '--log-level info': 设置日志级别。
- '--log-file /path/to/your/logs/debug-mcp-server-sse.log': 指定日志文件路径。
基本使用方法
AI代理通过向MCP服务器发送JSON-RPC请求来调用调试工具。以下是一些关键工具的用途:
- 'create_debug_session': 创建一个新的调试会话。您需要指定编程语言(例如'python')和会话名称。
- 示例请求参数:'{"language": "python", "name": "My Python Debug Session"}'
- 'set_breakpoint': 在指定文件的特定行设置断点。
- 示例请求参数:'{"sessionId": "your-session-id", "file": "your_script.py", "line": 15, "condition": "x > 10"}'
- 'start_debugging': 启动一个脚本的调试。
- 示例请求参数:'{"sessionId": "your-session-id", "scriptPath": "your_script.py", "args": ["--verbose"]}'
- 'get_variables': 获取当前作用域的变量信息。
- 示例请求参数:'{"sessionId": "your-session-id", "scope": 5}' (其中'scope'值通过'get_scopes'获取)
- 'step_over' / 'step_into' / 'step_out': 执行单步操作。
- 示例请求参数:'{"sessionId": "your-session-id"}'
- 'continue_execution': 让程序继续运行,直到下一个断点或结束。
- 示例请求参数:'{"sessionId": "your-session-id"}'
- 'close_debug_session': 关闭一个调试会话并清理资源。
- 示例请求参数:'{"sessionId": "your-session-id"}'
AI代理将解析这些工具的JSON响应来获取调试状态、变量值、错误信息等,并据此做出进一步的调试决策。
信息
分类
开发者工具