调试协议服务器

DAP MCP Server是一个基于Rust的多语言调试协议服务器,通过统一的MCP接口使AI助手能够跨多种语言(Python、Ruby、Node.js、Go、Rust)进行程序调试。

  • by Govinda-Fichtner
  • Rust
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 Govinda-Fichtner/debugger-mcp

使用说明

DAP MCP 服务器

通过统一的MCP接口,使AI代理能够跨多种语言程序化地调试应用程序。


这是什么?

基于Rust的 MCP(模型上下文协议)服务器 该功能通过与(Claude、Gemini CLI 等)AI 助手建立连接,向其暴露调试能力 调试适配器协议 (DAP)。

简而言之: AI代理能够在Python、Ruby、Node.js、Go和Rust等语言中自主设置断点、逐行执行代码、检查变量以及排查错误。


快速入门

1. 安装

Docker(推荐):

# Choose image for your language
docker build -f Dockerfile.python -t debugger-mcp:python .
docker run -i debugger-mcp:python

本地的:

cargo build --release
./target/release/debugger_mcp serve

2. 配置Claude桌面版

{
  "mcpServers": {
    "debugger": {
      "command": "/path/to/debugger_mcp",
      "args": ["serve"]
    }
  }
}

3. 调试

从克劳德开始调试!

详细设置: 入门指南


状态

🎉 生产就绪 - 多语言支持

支持的语言: Python、Ruby、Node.js、Go、Rust(全部功能齐全)

持续集成

工作流程 目的 最新状态
CI(企业识别系统/品牌标识) 代码质量、安全性、单元测试(193个测试)
集成测试 端到端的AI调试:5种语言×2个AI客户端(Claude Code + Codex)

集成测试的作用: 真正的AI代理(Claude Code和Codex)通过MCP自主调试程序,在所有语言中每次测试验证8项调试操作。

最新测试结果(10/10 测试通过):

语言 Claude 代码 Codex 操作
(无对应中文翻译,原表头内容) (无对应中文翻译,原表头内容) (无对应中文翻译,原表头内容) (无对应中文翻译,原表头内容)
Python ✅ 通过 ✅ 通过 SBCTED
Ruby ✅ 通过 ✅ 通过 SBCTED
Node.js ✅ 通过 ✅ 通过 SBCTED(可能是一个特定的测试或标准名称,直接保留原样)
Go ✅ 通过 ✅ 通过 SBCTED

| Rust | ✅ 通过 | ✅ 通过 | SBCTED | 图例:

S=会话开始,B=断点,C=继续,T=跟踪,E=评估,D=断开连接 理解持续集成(CI): 看见


CI 工作流文档

特点/特性

支持的语言 | 语言 | 调试器 | Docker 镜像 | |----------|----------|--------------| Dockerfile.python | Python | debugpy | | Dockerfile.ruby | Ruby | rdbg | | Dockerfile.nodejs | Node.js | vscode-js-debug | | Dockerfile.go | Go(语言) | delve(深入探索) | | Dockerfile.rust | Rust | CodeLLDB |

|

调试功能 ✅

  • 电流:
  • 开始/停止调试会话
  • 设置源代码断点
  • 执行控制(继续、单步跳过/进入/退出、暂停)
  • 表达式求值
  • 堆栈跟踪检查

可变检查 ⏳(时钟)

  • 计划中的:
  • 条件断点和日志点
  • 异常断点
  • 多线程调试
  • 远程调试

数据断点

AI Agent (Claude, Gemini, etc.)
    ↕ MCP Protocol (JSON-RPC)
┌──────────────────────────────────┐
│   DAP MCP Server (Rust/Tokio)   │
│ ┌─────────────────────────────┐  │
│ │  MCP Layer (Tools/Resources)│  │
│ └──────────┬──────────────────┘  │
│ ┌──────────┴──────────────────┐  │
│ │  Language-Agnostic Core     │  │
│ └──────────┬──────────────────┘  │
│ ┌──────────┴──────────────────┐  │
│ │  DAP Protocol Client        │  │
│ └─────────────────────────────┘  │
└──────────┼───────────────────────┘
           ↕ Debug Adapter Protocol
    ┌──────┴──────┐
debugpy  rdbg  delve  CodeLLDB
(Python)(Ruby) (Go)  (Rust/C++)

建筑 深入探讨:


建筑提案

User: "My Python script crashes. Can you debug it?"

Claude:
  → debugger_start(language="python", program="/workspace/script.py")
  → debugger_set_breakpoint(sourcePath="/workspace/script.py", line=42)
  → debugger_continue()
  → debugger_wait_for_stop()
  [Program stops at breakpoint]
  → stack = debugger_stack_trace()
  → debugger_evaluate(expression="user_data")

  "The crash occurs because 'user_data' is None when fetch_user() fails.
   The code doesn't check for None before accessing user_data.name..."

使用示例 按语言划分的表达式语法:


表达指南

常见问题 ❓ 断点未验证? -g → 确保调试符号: debugpy 为 rustc/gcc 设置标志, 适用于Python

→ 检查源路径是否完全匹配 ❓ 会话超时? pip install debugpy→ 验证调试器是否已安装: gem install debug, 等。

→ 检查路径中的调试器 ❓ Docker 路径问题? /workspace/... → 使用容器路径: /home/user/...(不是主机路径,如 )

→ 确保音量设置正确 完整指南:


故障排除文档

文档

按用例划分 🚀 准备开始了吗? →

入门指南 🐳 使用 Docker 部署吗? →

Docker 部署指南 🏗️ 了解建筑学吗? →

建筑提案 ➕ 添加一种新语言? →

新语言指南 ✅ 了解CI/CD吗? →

CI 工作流 🐛 遇到问题需要排查解决吗? →

故障排除指南 🧪 编写测试吗? →

测试指南

- 持续集成/持续交付(CI/CD)、版本发布、跨平台构建 完整索引:


docs/README.md(文件说明/读我文件)

发展

  • 先决条件rustup updateRust 1.70+(
  • )
  • Docker(用于集成测试)
    • 针对特定语言的调试器(用于测试): pip install debugpy
    • python gem install debug
    • Ruby: npm install -g node-debug2

Node.js:

# Clone
git clone https://github.com/Govinda-Fichtner/debugger-mcp.git
cd debugger-mcp

# Install pre-commit hooks (recommended)
pre-commit install --install-hooks
pre-commit install --hook-type commit-msg
pre-commit install --hook-type pre-push

# Build
cargo build --release

# Run unit tests
cargo test

# Run integration tests (requires debuggers)
cargo test --test '*integration*' -- --ignored

构建与测试

预提交钩子(Pre-commit Hooks)

  • 在提交/推送前运行自动化质量检查:cargo fmt格式化(
  • )cargo clippyLinting(代码检查)
  • )
  • 单元测试gitleaks安全扫描( cargo-audit,
  • )

代码覆盖率(最低60%) 设置:


预提交指南

贡献 我们欢迎投稿!请参阅 入门指南

  • for:对于;为了;因为
  • 开发环境设置
  • 架构概述
  • 测试指南

代码风格

  1. 贡献工作流程:
  2. 克隆仓库
  3. 创建特性分支
  4. 通过测试进行更改 pre-commit run --all-files
  5. 跑步

提交拉取请求

路线图

  • ✅ 已完成阶段 阶段0:
  • 研究与建筑(或架构设计) 第一阶段:
  • MVP - Python 支持 第二阶段:
  • Ruby 验证 第三阶段:

多语言支持(Python、Ruby、Node.js、Go、Rust)

🚧 当前阶段

  • 第四阶段:生产特性
  • 条件断点
  • 异常处理
  • 安全加固

性能优化

📅 未来阶段

  • 第五阶段:社区
  • 开源发布
  • 插件API
  • VS Code 扩展

其他语言(Java、C#、PHP)

技术栈

组件 技术 理由
语言 Rust 内存安全、性能、异步
CLI Clap 行业标准,派生宏
异步运行时 Tokio 经实战检验,功能全面
序列化 serde + serde_json 实际标准
错误处理 anyhow + thiserror 符合人体工程学,信息清晰

| 日志记录 | 跟踪 | 结构化,异步感知 |

许可证


待定(可能为MIT或Apache 2.0)

用 Rust 语言,带着爱与螃蟹精神打造