关于 dap-mcp
dap-mcp 是一个 MCP 服务,用于管理 Debug Adapter Protocol(DAP)调试会话。它把调试器操作以 MCP 工具的形式提供给客户端,适合希望借助 LLM 辅助调试的开发者。
主要功能
- 01通过标准 DAP 与调试器交互
- 02设置、列出和删除断点
- 03控制执行:继续、单步进入、跳出和单步跳过
- 04计算表达式并切换调用栈帧
- 05通过 JSON 配置文件设置调试器与源码目录
适用场景
- 01让 LLM 在调试过程中设置断点并逐步执行代码
- 02检查程序运行时的变量与表达式结果
- 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 服务扩展完全集成。
贡献
欢迎贡献!参与贡献的步骤如下:
- Fork 仓库。
- 为你的功能或错误修复创建一个新分支。
- 编写测试并确保所有检查均通过。
- 提交拉取请求。
请遵循编码规范,并为所做的更改添加适当的测试。
许可证
本项目采用 AGPL-3.0 许可证授权。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。