项目简介

dap_mcp 是一个实现了 Model Context Protocol (MCP) 的服务器,专门用于增强大型语言模型(LLM)在调试代码时的上下文感知能力。它通过集成了 Debug Adapter Protocol (DAP),使得 LLM 客户端能够利用各种调试器(如 debugpy, lldb)的功能,从而实现更智能、更高效的代码调试工作流。

主要功能点

  • DAP 协议集成: 能够与支持 DAP 协议的调试器(如 Python debugpy, LLDB)进行通信。
  • MCP 框架: 利用 MCP 协议,为 LLM 客户端提供标准化的接口来访问调试功能。
  • 丰富的调试工具: 支持设置/移除断点、单步执行、继续执行、表达式求值、查看堆栈帧、查看源代码等调试操作。
  • 灵活的配置: 通过 JSON 配置文件自定义调试器类型、路径、源代码目录等参数。
  • 可扩展性: 易于扩展支持新的 DAP 调试器。

安装步骤

  1. 环境准备:

    • 确保已安装 Python 3.10 或更高版本。
    • (可选)安装 'uv' 以获得更快的服务器运行速度 ('pip install uv')。
  2. 安装 dap_mcp: 打开终端,运行以下命令安装 'dap_mcp' 及其依赖:

    pip install dap-mcp

服务器配置

MCP 客户端需要配置连接 dap_mcp 服务器的命令和参数。dap_mcp 服务器通过 JSON 配置文件进行配置,客户端需要指定启动服务器的命令,并确保配置文件路径正确。

以下是 dap_mcp 服务器的 MCP 客户端 服务器配置 (server config) 示例 (JSON 格式):

{
  "serverName": "dap_mcp_debugpy",
  "command": "python",
  "args": [
    "-m",
    "dap_mcp",
    "--config",
    "path/to/your/config.json"  // 将 "path/to/your/config.json" 替换为实际的配置文件路径
  ]
}

参数注释:

  • 'serverName': 服务器名称,可以自定义,用于在客户端标识不同的 MCP 服务器连接。例如 '"dap_mcp_debugpy"' 或 '"my_debugger"'。
  • 'command': 启动服务器的可执行命令。这里使用 'python',假设您的 Python 环境已配置好。
  • 'args': 传递给 'command' 的参数列表。
    • '"-m", "dap_mcp"': 以模块方式运行 'dap_mcp' 服务器程序。
    • '"--config", "path/to/your/config.json"': 指定配置文件的路径。请务必将 '"path/to/your/config.json"' 替换为您实际创建的 JSON 配置文件的路径。 配置文件需要根据您要调试的程序和使用的调试器进行创建。

配置文件 (config.json) 示例:

您需要根据您的调试需求创建一个 JSON 配置文件 (例如 'config.json'),并将其路径配置到上述 'args' 中。以下是一个 'debugpy' 调试器的配置文件示例:

{
  "type": "debugpy",
  "debuggerPath": "/path/to/python/with/debugpy",  // Python 解释器路径,该解释器需要安装了 debugpy 库
  "debuggerArgs": [
    "-m",
    "debugpy.adapter"
  ],
  "sourceDirs": [
    "/path/to/source/code"  // 源代码根目录,用于解析文件路径,如果使用绝对路径可省略
  ],
  "module": "your_module_name", // 要调试的 Python 模块名,例如 "pytest"
  "python": ["/path/to/python"], // 运行被调试程序的 Python 解释器路径
  "cwd": "/path/to/working/directory" // 工作目录
}

请根据您实际的调试环境修改上述配置文件示例中的路径和参数。 您可以参考仓库 README.md 文件中 "Configuration" 和 "Available Debugger Types" 部分获取更详细的配置说明。

基本使用方法

  1. 启动 dap_mcp 服务器: 在终端中,导航到您保存配置文件的目录,并运行 MCP 客户端 服务器配置 (server config) 中定义的 'command' 和 'args' 命令,例如:

    python -m dap_mcp --config config.json

    或者,如果您安装了 'uv':

    uvx dap-mcp@latest --config config.json

    服务器成功启动后,将监听 MCP 客户端的请求。

  2. 配置 MCP 客户端: 在您的 MCP 客户端中,添加上述 服务器配置 (server config) 信息,并确保客户端能够连接到 dap_mcp 服务器。

  3. 使用 LLM 客户端进行调试: 通过 LLM 客户端,您可以调用 dap_mcp 服务器提供的工具 (Tools) 来执行调试操作。可用的工具包括:

    • 'launch': 启动调试会话。
    • 'set_breakpoint': 设置断点。
    • 'remove_breakpoint': 移除断点。
    • 'list_all_breakpoints': 列出所有断点。
    • 'continue_execution': 继续执行。
    • 'step_in': 单步进入。
    • 'step_out': 单步跳出。
    • 'next': 单步跳过。
    • 'evaluate': 求值表达式。
    • 'change_frame': 切换堆栈帧。
    • 'view_file_around_line': 查看源代码。
    • 'terminate': 终止调试会话。

    具体工具的使用方法和参数,请参考仓库代码 'dap_mcp/server.py' 中 '@app.call_tool()' 和 '@app.list_tools()' 装饰器部分,以及仓库的 README.md 文档。

注意: dap_mcp 服务器主要通过工具 (Tools) 的方式向 MCP 客户端提供调试能力,客户端需要根据自身能力和 dap_mcp 提供的工具进行交互,以实现代码调试功能。

信息

分类

开发者工具