mcpField
D
dap-mcp

dap-mcp

本地服务
github.com/KashunCheng开发工具4057 周前更新

关于 dap-mcp

dap-mcp 是一个 MCP 服务,用于管理 Debug Adapter Protocol(DAP)调试会话。它把调试器操作以 MCP 工具的形式提供给客户端,适合希望借助 LLM 辅助调试的开发者。

主要功能

  1. 01通过标准 DAP 与调试器交互
  2. 02设置、列出和删除断点
  3. 03控制执行:继续、单步进入、跳出和单步跳过
  4. 04计算表达式并切换调用栈帧
  5. 05通过 JSON 配置文件设置调试器与源码目录

适用场景

  1. 01让 LLM 在调试过程中设置断点并逐步执行代码
  2. 02检查程序运行时的变量与表达式结果
  3. 03为 debugpy 或 lldb 等调试器提供统一的 MCP 接入方式

MCP 相关

dap-mcp 作为 MCP 服务运行,将 launch、set_breakpoint、evaluate 等调试操作以工具形式暴露给 MCP 客户端,并以 XML 格式返回结果。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

dap-mcp

dap-mcp 是 Model Context Protocol (MCP) 的一种实现,专为管理 Debug Adapter Protocol (DAP) 会话而设计。MCP 提供了一个标准化框架,用于优化和扩展大模型的上下文窗口;在本项目中,它用于增强并简化调试工作流。

功能

  • Debug Adapter Protocol 集成: 使用标准化协议与调试器交互。
  • MCP 框架: 利用 MCP 优化上下文并增强调试工作流。
  • 丰富的调试工具: 设置、列出和移除断点;控制执行(继续、单步进入/跳出/执行下一步);评估表达式;切换堆栈帧;以及查看源代码。
  • 灵活配置: 通过 JSON 配置文件自定义调试器设置、源代码目录和其他参数。

安装

前提条件
  • Python 3.10 或更高版本
  • uv(可选,用于运行服务)
安装和运行服务

安装 dap-mcp 及其依赖项:

pip install dap-mcp
python -m dap_mcp --config config.json

# Or, if you have uv installed
uvx dap-mcp@latest --config config.json

配置

项目使用 JSON 配置文件(例如 .config.json)指定调试器设置和源代码目录。配置示例:

{
  "type": "debugpy",
  "debuggerPath": "/path/to/python/with/debugpy",
  "debuggerArgs": [
    "-m",
    "debugpy.adapter"
  ],
  // source directories for resolving file paths
  // if you always use absolute paths, you can omit this
  "sourceDirs": [
    "/path/to/source/code"
  ],
  // debugger-specific settings start here
  // configurations for debugpy can be found at
  // https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings
  
  // you can use "program" instead of "module" to specify the program to debug
  "module": "pytest",
  // the python executable to use to run the debuggee
  "python": ["/path/to/python"],
  "cwd": "/path/to/working/directory"
}

此配置会告知调试器:

  • 调试器可执行文件的路径及其参数。
  • 用于在断点操作期间解析文件路径的源代码目录。
  • 启动被调试程序所需的其他设置(例如模块、工作目录和解释器路径)。
可用的调试器类型
类型示例路径示例参数
debugpy/usr/bin/python3["-m", "debugpy.adapter"]
lldb/usr/bin/lldb-dap[]

可用工具

项目通过 MCP 框架提供多个可调用的工具:

  • launch: 启动被调试程序。
  • set_breakpoint: 在指定文件和行设置断点(可选条件)。
  • remove_breakpoint: 移除指定文件和行上的断点。
  • list_all_breakpoints: 列出当前在调试器中设置的所有断点。
  • continue_execution: 命中断点后继续执行程序。
  • step_in: 单步进入函数调用。
  • step_out: 单步跳出当前函数。
  • next: 单步执行到下一行代码。
  • evaluate: 在当前调试上下文中评估表达式。
  • change_frame: 切换到其他堆栈帧。
  • view_file_around_line: 查看指定行附近的源代码(若未指定文件,则使用上次提供的文件)。
  • terminate: 终止调试会话。

这些工具会生成 XML 格式的输出,以便与 MCP 客户端集成。

扩展其他 DAP 服务

要支持其他 DAP 服务,只需在 dap_mcp/config.py 文件中添加一个新的 DAP 专用配置类。所有 DAP 配置都继承自基类 DAPConfig。每个新子类都应:

  • 定义唯一的 type 值(使用 Literal)作为区分标识。
  • 包含该调试器专用的其他字段或设置。

例如,要添加对名为“mydap”的假设 DAP 服务的支持,可以添加:

class MyDAP(DAPConfig):
    type: Literal["mydap"]
    # Add any additional settings for MyDAP here
    customSetting: Optional[str] = Field(
        None, description="A custom setting for MyDAP."
    )

创建新的配置类后,请将新类加入调试器专用配置所用的联合类型中。例如:

DebuggerSpecificConfig = Annotated[Union[DebugPy, MyDAP], Field(..., discriminator="type")]

现在,提供包含 "type": "mydap" 的 JSON 配置时,系统会使用新的 MyDAP 类进行解析和验证,并将 DAP 服务扩展完全集成。

贡献

欢迎贡献!参与贡献的步骤如下:

  1. Fork 仓库。
  2. 为你的功能或错误修复创建一个新分支。
  3. 编写测试并确保所有检查均通过。
  4. 提交拉取请求。

请遵循编码规范,并为所做的更改添加适当的测试。

许可证

本项目采用 AGPL-3.0 许可证授权。详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。