dap-mcp
dap-mcp 是实现 模型上下文协议(MCP) 专为管理调试适配器协议(DAP)会话而定制。MCP提供了一个标准化的框架来优化和扩展大型语言模型的上下文窗口,在这个项目中,它用于增强和简化调试工作流程。
特性
- 调试适配器协议集成: 使用标准化协议与调试器交互。
- MCP框架: 利用MCP优化上下文并增强调试工作流程。
- 丰富的调试工具: 设置、列出和删除断点;控制执行(继续,介入/退出/下一步);评估表达式;更改堆栈帧;并查看源代码。
- 灵活配置: 通过JSON配置文件自定义调试器设置、源目录和其他参数。
安装
先决条件
- Python 3.10或更高版本
- 紫外线 (可选,用于运行服务器)
安装和运行服务器
安装 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"] |
| LDB | /usr/bin/lldb-dap | [] |
可用工具
该项目公开了几个可以通过MCP框架调用的工具:
- 启动: 启动被调试程序。
- 设定断点: 在指定的文件和行设置断点(带可选条件)。
- remove_break点: 从指定的文件和行中删除断点。
- list_all_断点: 列出调试器中当前设置的所有断点。
- 继续执行: 遇到断点后继续执行程序。
- step_in: 进入函数调用。
- 步骤输出: 退出当前功能。
- 下一页: 转到下一行代码。
- 评估: 在当前调试上下文中计算表达式。
- change_frame: 切换到其他堆栈帧。
- view_file_around_line: 查看指定行周围的源代码(如果未指定,则使用最后提供的文件)。
- 终止: 终止调试会话。
这些工具提供XML呈现的输出,以便与MCP客户端集成。
与其他DAP服务器一起扩展
要支持其他DAP服务器,您只需在 dap_mcp/config.py 文件。所有DAP配置都从基础扩展 DAPConfig 类。每个新的子类应该:
- 定义一个唯一
type值(使用aLiteral)充当歧视者。 - 包括特定于该调试器的任何其他字段或设置。
例如,要添加对名为“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")]现在,当您提供配置JSON时 "type": "mydap",它将使用您的新 MyDAP 类,您的DAP服务器扩展将完全集成。
贡献
欢迎投稿!贡献:
- 分叉存储库。
- 为您的功能或错误修复创建一个新分支。
- 编写测试并确保所有检查通过。
- 提交拉取请求。
请遵循编码指南,并在更改中包含适当的测试。
许可证
该项目根据AGPL-3.0许可证获得许可。请参阅 许可证 文件以获取详细信息。
