M

MCP调试适配器协议

@KashunCheng/dap_mcp
1 Stars 34 次浏览 KashunCheng 更新于 2026-08-23

Model Context Protocol(MCP)的实现,它能够与调试适配器进行交互,使语言模型在调试会话期间可以控制调试器、设置断点、评估表达式以及导航源代码。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

dap-mcp

dap-mcp 是为管理 Debug Adapter Protocol (DAP) 会话量身定制的 Model Context Protocol (MCP) 的实现。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. 分叉仓库。
  2. 为您的功能或错误修复创建一个新的分支。
  3. 编写测试并确保所有检查通过。
  4. 提交拉取请求。

请遵循编码指南并在更改中包含适当的测试。

许可证

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

相关 MCP 服务