dap-mcp

dap-mcp

模型上下文协议 (MCP) 的一个实现,它支持与调试适配器交互,允许语言模型控制调试器、设置断点、求值表达式,以及在调试会话期间导航源代码。

Category
访问服务器

README

dap-mcp

dap-mcp模型上下文协议 (MCP) 的一个实现,专门用于管理调试适配器协议 (DAP) 会话。 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 框架调用的工具:

  • 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"]
    # 在此处添加 MyDAP 的任何其他设置
    customSetting: Optional[str] = Field(
        None, description="MyDAP 的自定义设置。"
    )

创建新的配置类后,通过包含您的新类来更新用于调试器特定配置的联合类型。 例如:

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

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

贡献

欢迎贡献! 要贡献:

  1. Fork 存储库。
  2. 为您的功能或错误修复创建一个新分支。
  3. 编写测试并确保所有检查都通过。
  4. 提交 pull request。

请遵循编码准则,并在您的更改中包含适当的测试。

许可证

本项目根据 AGPL-3.0 许可证获得许可。 有关详细信息,请参阅 LICENSE 文件。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选