返回市场
数据处理主控程序

数据处理主控程序

作者:KashunCheng27 星标更新:2025-09-24

项目介绍

dap-mcp

dap-mcp 是一个针对管理调试适配器协议(DAP)会话而定制的 模型上下文协议(MCP) 实现。MCP 提供了一个标准化框架,用于优化和扩展大型语言模型的上下文窗口,在这个项目中,它被用来增强和简化调试工作流程。

特性

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

安装

先决条件

  • Python 3.10 或更高版本
  • uv(可选,用于运行服务器)

安装和运行服务器

安装 dap-mcp 及其依赖项:

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

# 或者,如果你已安装 uv
uvx dap-mcp@latest --config config.json

配置

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

{
  "type": "debugpy",
  "debuggerPath": "/path/to/python/with/debugpy",
  "debuggerArgs": [
    "-m",
    "debugpy.adapter"
  ],
  // 解析文件路径时使用的源目录
  // 如果你总是使用绝对路径,可以省略此部分
  "sourceDirs": [
    "/path/to/source/code"
  ],
  // 调试器特定设置从这里开始
  // 关于 debugpy 的配置可以在
  // https://github.com/microsoft/debugpy/wiki/Debug-configuration-settings 找到
  
  // 你可以使用 "program" 而不是 "module" 来指定要调试的程序
  "module": "pytest",
  // 运行被调试程序所使用的 Python 可执行文件
  "python": ["/path/to/python"],
  "cwd": "/path/to/working/directory"
}

此配置向调试器提供了以下信息:

  • 调试器可执行文件的路径及其参数。
  • 在断点操作期间解析文件路径时使用的源目录。
  • 发起被调试程序所需的其他设置(如模块、工作目录和解释器路径)。

可用的调试器类型

类型示例路径示例参数
debugpy/usr/bin/python3["-m", "debugpy.adapter"]
lldb/usr/bin/lldb-dap[]

可用工具

该项目通过 MCP 框架暴露了多个工具,可以通过以下方式调用:

  • 启动: 启动被调试程序。
  • 设置断点: 在指定文件和行号处设置断点(可选条件)。
  • 移除断点: 移除指定文件和行号处的断点。
  • 列出所有断点: 列出当前在调试器中设置的所有断点。
  • 继续执行: 在遇到断点后继续程序执行。
  • 步入: 步入函数调用。
  • 步出: 从当前函数中步出。
  • 下一步: 跳过到下一行代码。
  • 评估: 在当前调试上下文中评估表达式。
  • 切换帧: 切换到不同的堆栈帧。
  • 查看文件周围的行: 查看指定行附近的源代码(如果未指定文件,则使用最后提供的文件)。
  • 终止: 终止调试会话。

这些工具提供 XML 渲染的输出,以便与 MCP 客户端进行集成。

扩展其他 DAP 服务器

为了支持额外的 DAP 服务器,你只需在 dap_mcp/config.py 文件中添加一个新的 DAP 特定配置类。所有 DAP 配置都继承自基础 DAPConfig 类。每个新的子类应:

  • 定义一个唯一的 type 值(使用 Literal),作为区分符。
  • 包含任何特定于该调试器的附加字段或设置。

例如,为了添加对假设的 DAP 服务器 "mydap" 的支持,你可能会添加:

class MyDAP(DAPConfig):
    type: Literal["mydap"]
    # 在此处添加 MyDAP 的任何附加设置
    customSetting: Optional[str] = Field(
        None, description="MyDAP 的自定义设置。"
    )

创建新的配置类后,更新用于调试器特定配置的联合类型,包括你的新类。例如:

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

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

贡献

欢迎贡献!要贡献,请遵循以下步骤:

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

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

许可证

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