返回市场
MCP数据分析平台服务器

MCP数据分析平台服务器

作者:go-delve35 星标更新:2025-07-23

项目介绍

MCP DAP 服务器

一个通过调试适配器协议(DAP)提供调试功能的模型上下文协议(MCP)服务器。此服务器使AI助手和其他MCP客户端能够与各种编程语言的调试器进行交互。

概述

MCP DAP 服务器作为MCP客户端和兼容DAP的调试器之间的桥梁,允许对调试会话进行程序控制。它提供了一整套调试工具,可以用于:

  • 启动和停止调试会话
  • 设置断点(基于行和函数)
  • 控制程序执行(继续、步入/出/过、暂停)
  • 检查程序状态(线程、堆栈跟踪、变量、作用域)
  • 计算表达式
  • 连接到正在运行的进程
  • 处理异常

示例

特性

核心调试操作

  • 会话管理:启动、停止、重启和终止调试会话
  • 断点管理:设置行和函数断点
  • 执行控制:继续、暂停、步操作(入/出/下一步)
  • 状态检查:查看线程、堆栈跟踪、作用域和变量
  • 表达式计算:在当前调试上下文中计算表达式
  • 变量修改:在调试过程中更改变量值

高级特性

  • 进程连接:连接到已运行的进程
  • 模块信息:列出已加载的模块
  • 源信息:查看已加载的源文件
  • 反汇编:查看反汇编代码
  • 异常处理:获取关于异常的信息

安装

先决条件

  • Go 1.24.4 或更高版本
  • 针对目标语言的兼容DAP的调试器

从源码构建

git clone https://github.com/go-delve/mcp-dap-server
cd mcp-dap-server
go build -o bin/mcp-dap-server

使用

启动服务器

服务器默认监听8080端口:

./bin/mcp-dap-server

通过MCP连接

配置您的MCP客户端以使用SSE(服务器发送事件)传输连接到服务器http://localhost:8080

示例MCP客户端配置

此配置应适用于(如Gemini CLI)[https://developers.google.com/gemini-code-assist/docs/use-agentic-chat-pair-programmer#configure-mcp-servers]。

{
  "mcpServers": {
    "dap-debugger": {
      "command": "mcp-dap-server",
      "args": [],
      "env": {}
    }
  }
}

使用Claude Code的示例配置

Claude Code

claude mcp add --transport sse mcp-dap-server http://localhost:8080

可用工具

会话管理

start_debugger

启动一个新的调试会话。

  • 参数
    • port (数字):DAP服务器的端口号

stop_debugger

停止当前的调试会话。

restart_debugger

重启当前的调试会话。

terminate_debugger

终止调试器和被调试进程。

程序控制

debug_program

以调试模式启动程序。

  • 参数
    • path (字符串):要调试的程序路径

exec_program

不带调试地执行程序。

  • 参数
    1. path (字符串):要执行的程序路径

attach_debugger

连接到正在运行的进程。

  • 参数
    • mode (字符串):连接模式
    • processId (数字,可选):要连接的进程ID

断点

set_breakpoints

在文件中设置行断点。

  • 参数
    • file (字符串):源文件路径
    • lines (数组):断点所在的行号

set_function_breakpoints

设置函数断点。

  • 参数
    • functions (数组):函数名称

执行控制

continue

继续程序执行。

  • 参数
    • threadId (数字,可选):要继续的线程ID

next

跳过当前行。

  • 参数
    • threadId (数字):线程ID

step_in

进入函数调用。

  • 参数
    • threadId (数字):线程ID

step_out

跳出当前函数。

  • 参数
    • threadId (数字):线程ID

pause

暂停程序执行。

  • 参数
    • threadId (数字):线程ID

状态检查

threads

列出被调试进程中的所有线程。

stack_trace

获取线程的堆栈跟踪。

  • 参数
    • threadId (数字):线程ID
    • startFrame (数字,可选):起始帧索引
    • levels (数字,可选):要检索的帧数

scopes

获取堆栈帧的变量作用域,并自动获取每个作用域内的所有变量。

  • 参数
    • frameId (数字):堆栈帧ID
  • 返回:格式化的显示,包括:
    • 所有可用的作用域(局部变量、参数、全局变量等)
    • 每个作用域内变量的名称、类型和值
    • 可进一步检查的复合类型的变量引用

variables

获取作用域内的变量。

  • 参数
    • variablesReference (数字):变量引用

evaluate

计算表达式。

  • 参数
    • expression (字符串):要计算的表达式
    • frameId (数字,可选):帧上下文
    • context (字符串,可选):计算上下文

set_variable

设置变量值。

  • 参数
    • variablesReference (数字):变量引用
    • name (字符串):变量名称
    • value (字符串):新值

额外工具

loaded_sources

列出所有已加载的源文件。

modules

列出已加载的模块。

disassemble

反汇编内存位置的代码。

  • 参数
    • memoryReference (字符串):内存地址
    • instructionOffset (数字,可选):指令偏移量
    • instructionCount (数字):指令数量

exception_info

获取异常信息。

  • 参数
    • threadId (数字):线程ID

disconnect

从调试器断开连接。

  • 参数
    • terminateDebuggee (布尔值,可选):是否终止被调试进程

configuration_done

信号配置完成。

贡献

欢迎贡献!请随意提交Pull Request。

许可证

MIT

致谢