使AI代理能够通过统一的MCP接口跨多种语言进行程序调试。
这是一个基于Rust的MCP(模型上下文协议)服务器,通过桥接到调试适配器协议(DAP),向AI助手(如Claude、Gemini CLI等)提供调试能力。
简而言之: AI代理可以在Python、Ruby、Node.js、Go和Rust中自主设置断点、逐步执行代码、检查变量并调查错误。
Docker(推荐):
# 选择适合您语言的镜像
docker build -f Dockerfile.python -t debugger-mcp:python .
docker run -i debugger-mcp:python
本地安装:
cargo build --release
./target/release/debugger_mcp serve
{
"mcpServers": {
"debugger": {
"command": "/path/to/debugger_mcp",
"args": ["serve"]
}
}
}
从Claude开始调试!
详细设置: 入门指南
🎉 生产就绪 - 多语言支持
支持的语言: Python、Ruby、Node.js、Go、Rust(全部100%功能)
| 工作流 | 目的 | 最新状态 |
|---|---|---|
| CI | 代码质量、安全性、单元测试(193个测试) | |
| 集成测试 | 端到端AI调试:5种语言×2种AI客户端(Claude Code + Codex) |
集成测试做了什么: 实际的AI代理(Claude Code和Codex)通过MCP自主调试程序,在所有语言中验证每个测试中的8个调试操作。
最新结果(10/10测试通过):
| 语言 | Claude Code | Codex | 操作 |
|---|---|---|---|
| Python | ✅ 通过 | ✅ 通过 | SBCTED |
| Ruby | ✅ 通过 | ✅ 通过 | SBCTED |
| Node.js | ✅ 通过 | ✅ 通过 | SBCTED |
| Go | ✅ 通过 | ✅ 通过 | SBCTED |
| Rust | ✅ 通过 | ✅ 通过 | SBCTED |
图例: S=会话启动,B=断点,C=继续,T=跟踪,E=评估,D=断开连接
理解CI: 查看CI工作流文档
| 语言 | 调试器 | Docker镜像 |
|---|---|---|
| Python | debugpy | Dockerfile.python |
| Ruby | rdbg | Dockerfile.ruby |
| Node.js | vscode-js-debug | Dockerfile.nodejs |
| Go | delve | Dockerfile.go |
| Rust | CodeLLDB | Dockerfile.rust |
✅ 当前:
⏳ 计划:
AI代理(Claude、Gemini等)
↕ MCP协议(JSON-RPC)
┌──────────────────────────────────┐
│ DAP MCP服务器(Rust/Tokio) │
│ ┌─────────────────────────────┐ │
│ │ MCP层(工具/资源)│ │
│ └──────────┬──────────────────┘ │
│ ┌──────────┴──────────────────┐ │
│ │ 无语言核心 │ │
│ └──────────┬──────────────────┘ │
│ ┌──────────┴──────────────────┐ │
│ │ DAP协议客户端 │ │
│ └─────────────────────────────┘ │
└──────────┼───────────────────────┘
↕ 调试适配器协议
┌──────┴──────┐
debugpy rdbg delve CodeLLDB
(Python)(Ruby) (Go) (Rust/C++)
深入了解: 架构提案
用户:"我的Python脚本崩溃了。你能调试一下吗?"
Claude:
→ debugger_start(language="python", program="/workspace/script.py")
→ debugger_set_breakpoint(sourcePath="/workspace/script.py", line=42)
→ debugger_continue()
→ debugger_wait_for_stop()
[程序在断点处停止]
→ stack = debugger_stack_trace()
→ debugger_evaluate(expression="user_data")
"崩溃的原因是当fetch_user()失败时,'user_data'为None。
代码在访问user_data.name之前没有检查是否为None..."
按语言表达式语法: 表达式指南
❓ 断点未验证? → 确保有调试符号:对于rustc/gcc使用-g标志,Python使用debugpy → 检查源路径是否完全匹配
❓ 会话超时?
→ 确认已安装调试器:pip install debugpy,gem install debug等
→ 检查调试器是否在PATH中
❓ Docker路径问题?
→ 使用容器路径:/workspace/...(而不是主机路径如/home/user/...)
→ 确保卷正确挂载
完整指南: 故障排除文档
🚀 刚开始? → 入门指南
🐳 使用Docker部署? → Docker部署指南
🏗️ 理解架构? → 架构提案
➕ 添加新语言? → 添加新语言指南
✅ 理解CI/CD? → CI工作流
🐛 故障排除问题? → 故障排除指南
🧪 编写测试? → 测试指南
完整索引: docs/README.md
rustup update)pip install debugpygem install debugnpm install -g node-debug2# 克隆
git clone https://github.com/Govinda-Fichtner/debugger-mcp.git
cd debugger-mcp
# 安装预提交钩子(推荐)
pre-commit install --install-hooks
pre-commit install --hook-type commit-msg
pre-commit install --hook-type pre-push
# 构建
cargo build --release
# 运行单元测试
cargo test
# 运行集成测试(需要调试器)
cargo test --test '*integration*' -- --ignored
在提交/推送前运行自动质量检查:
cargo fmt)cargo clippy)gitleaks,cargo-audit)设置: 预提交指南
我们欢迎贡献!查看入门指南以了解:
贡献流程:
pre-commit run --all-files第4阶段:生产特性
第5阶段:社区
| 组件 | 技术 | 理由 |
|---|---|---|
| 语言 | Rust | 内存安全、性能、异步 |
| 命令行界面 | Clap | 行业标准、派生宏 |
| 异步运行时 | Tokio | 经验丰富的、全面的 |
| 序列化 | serde + serde_json | 事实上的标准 |
| 错误处理 | anyhow + thiserror | 人体工程学、清晰的消息 |
| 日志记录 | tracing | 结构化的、异步感知的 |
待定(可能是MIT或Apache 2.0)
使用❤️和🦀用Rust构建
最后更新:2025-10-19