Go调试服务器

一个基于TypeScript的MCP服务器,为Go程序提供完整的Delve调试器接口,支持调试、跟踪和分析功能。

  • by dwisiswant0
  • TypeScript
  • 本地部署
  • 21 星标
  • 更新于
在 GitHub 查看 dwisiswant0/delve-mcp

使用说明

深入研究mcp

用于Delve调试器集成的MCP服务器

这是一个基于TypeScript的MCP服务器,为Go程序的Delve调试器提供了一个完整的接口。它通过MCP工具实现所有主要的Delve命令和功能。

特性

资源

  • 通过以下方式列出和访问调试会话 delve:// URI
  • 每个会话都有关于其类型、目标和端口的元数据
  • 会话详细信息和状态的JSON表示

工具

使用以下工具调试、跟踪和分析Go程序:

  • 调试命令(debug, attach, exec, test)
  • 岩芯倾倒分析
  • 程序跟踪
  • 使用重播调试 rr
  • DAP服务器支持
  • 有条件的断点管理
  • 执行控制(continue, step, next)
  • 变量检查和评估
  • 后端选择(native, lldb, rr)
  • 日志记录配置
  • 会话管理

环境设置

服务器需要:

  • 使用Delve安装(go install github.com/go-delve/delve/cmd/dlv@latest)
  • 重播功能:Mozilla rr (https://github.com/mozilla/rr)
  • Node.js和npm

安装

要安装Delve MCP服务器,请执行以下操作:

npm install @dwisiswant0/delve-mcp

发展

安装依赖项:

npm install

构建服务器:

npm run build

对于自动重建的开发:

npm run watch

配置

要与Claude Desktop一起使用,请添加服务器配置:

  • 在Linux上: ~/.config/Claude/claude_desktop_config.json.
  • 在MacOS上: ~/Library/Application Support/Claude/claude_desktop_config.json.
  • 在Windows上: %APPDATA%/Claude/claude_desktop_config.json.
{
  "mcpServers": {
    "delve-mcp": {
      "command": "/path/to/delve-mcp/build/index.js"
    }
  }
}

可用工具

调试命令

  • debug -在当前目录或指定包中调试Go包
  • attach -通过PID附加到正在运行的进程
  • exec -执行并调试预编译的二进制文件
  • test -调试当前包或指定包中的测试
  • core -检查具有相关可执行文件的核心转储文件
  • dap -启动调试适配器协议(DAP)服务器
  • replay -重播rr跟踪记录
  • trace -使用函数匹配跟踪程序执行

控制命令

  • setBreakpoint -使用可选条件设置断点
  • removeBreakpoint -删除现有断点
  • continue -继续程序执行
  • next -跳到下一行
  • step -进入函数调用
  • stepout -退出当前功能
  • variables -列出当前作用域中的局部变量
  • evaluate -在当前作用域中计算表达式

配置命令

  • version -获取Delve版本信息
  • setBackend -配置调试后端(native, lldb, rr)
  • configureLogging -配置调试日志记录组件

使用示例

启动调试会话

// Debug current package
{ name: "debug" }

// Debug with specific package and build flags
{
  name: "debug",
  arguments: {
    package: "./cmd/myapp",
    buildFlags: "-tags=integration"
  }
}

管理断点

// Set a breakpoint
{
  name: "setBreakpoint",
  arguments: {
    sessionId: "abc123",
    file: "main.go",
    line: 42,
    condition: "count > 5"
  }
}

检查状态

// List variables
{
  name: "variables",
  arguments: {
    sessionId: "abc123"
  }
}

// Evaluate expression
{
  name: "evaluate",
  arguments: {
    sessionId: "abc123",
    expr: "myVar.Field"
  }
}

许可证

MIT。