MCP DAP 调试服务器

使用说明

项目简介

本仓库实现了一个基于 MCP(Model Context Protocol)的后端服务器,名称为“mcp-dap-server”。它通过 DAP 调试适配器(如 Delve、OpenDebugAD7 等)与语言级调试器进行对接,实现对调试会话的创建、控制以及获取完整的调试上下文(包括位置、栈、变量等)的能力,并将这些能力以 MCP 的工具形式暴露给客户端。

主要功能点

  • 通过 MCP 服务器对外暴露调试相关工具,例如启动调试、断点设置、继续执行、逐步执行、暂停、读取上下文、表达式求值、变量修改、自动信息获取等。
  • 支持对 Delve(Go)和 GDB/OpenDebugAD7(C/C++/Rust等)的调试器后端进行适配和管理。
  • 能力感知:根据调试器的能力动态暴露工具集合(如是否支持断点信息、源文件、模块信息等)。
  • 完整的上下文获取:在断点、跟踪点等停止时,提供当前位置、栈帧、作用域和变量的完整信息。
  • 支持多种调试模式:source、binary、core、attach 等模式,并能够通过 MCP 客户端配置启动参数。

安装步骤

  • 安装 Go 语言环境(推荐版本与仓库要求一致)。
  • 克隆仓库并进入目录:
    • go build -o bin/mcp-dap-server
  • 运行服务器(示例):
    • 直接在项目目录运行可使用标准输入输出传输(stdio)与 MCP 客户端通信。
    • 也可通过配置将其包装为网络传输或其他传输通道,按需要集成到你的后端工作流中。

服务器配置

以下为 MCP 客户端在连接该 MCP 服务器时需要配置的示例信息(注解式描述,非代码块,仅供参考):

  • server name: mcp-dap-server
  • command: mcp-dap-server
  • args: []
  • env: {}

说明

  • 客户端需要知道服务器的启动命令和参数,以便将服务器作为一个独立进程启动并与其建立 MCP 通信。该项目在实现中默认通过标准输入输出(STDIN/STDOUT)进行 MCP 通信(stdio 传输),也支持其他传输方式(如 HTTP SSE、WebSocket 等,具体实现请参考代码中的传输适配部分)。

基本使用方法

  • 启动服务器后,使用 MCP 客户端连接到服务器(在此实现中,客户端通常通过 MCP 的 SSE/stdio 传输进行连接)。
  • 使用工具列表中的调试相关工具,按需创建调试会话、设置断点、控制执行、评估表达式、查看/修改变量等。
  • 根据调试器能力,部分工具在不同后端会有不同的表现,具体以服务器返回的能力为准。

备注

  • 服务器默认提供对 Delve(Go)与 OpenDebugAD7(GDB/C/C++ 等)的支持,自动化地将 MCP 的 Launch/Attach 请求转换为调试器的参数,通过 DAP 进行通信并返回完整的调试上下文信息。
  • 运行时需要具备相应调试器及其依赖(如 Delve、GDB/OpenDebugAD7 等),以及环境变量或参数来定位调试适配器。

服务器信息