Go Delve调试器MCP服务器
允许LLM与Delve Go调试器交互的MCP服务器。
描述
您可以在以下网址找到一个工作示例 示例.md.
特性
- 启动Go程序的调试会话
- 在代码中设置断点
- 单步执行代码(下一步,介入,退出)
- 在调试会话的上下文中计算表达式
- 检查变量和堆栈跟踪
- 管理多个调试会话
安装
先决条件
- 达到1.21或更高
- 已安装Delve调试器(
go install github.com/go-delve/delve/cmd/dlv@latest)
安装
go install github.com/xhd2015/dlv-mcp/cmd/dlv-mcp@latest用法
启动MCP服务器:
dlv-mcp --listen :9097然后在以下位置配置MCP服务器 http://localhost:9097/sse,在Cursor或任何MCP客户端中。
检查MCP服务器
bunx @modelcontextprotocol/inspector dlv-mcp可用工具
调试会话管理
start_debug:启动新的调试会话
- program:要调试的Go程序路径 - args:程序的命令行参数(可选) - mode:调试模式(debug, test,或 exec,默认值: debug)
terminate_debug:终止调试会话
- session_id:要终止的调试会话的ID
list_debug_sessions:列出活动调试会话
断点管理
set_breakpoint:在调试会话中设置断点
- session_id:调试会话的ID - file:要在其中设置断点的源文件(绝对路径) - line:设置断点的行号
执行控制
continue:在调试会话中继续执行
- session_id:调试会话的ID
next:在调试会话中跳过当前行
- session_id:调试会话的ID
step_in:在调试会话中进入函数
- session_id:调试会话的ID
step_out:在调试会话中退出功能
- session_id:调试会话的ID
检查
evaluate:在调试会话中计算表达式
- session_id:调试会话的ID - expression:要评估的表达式 - frame_id:堆栈帧ID(可选,默认值:0)
工作流示例
- 启动调试会话:
start_debug program=/path/to/program.go- 设置断点:
set_breakpoint session_id=session-123456 file=/path/to/program.go line=15- 继续断点:
continue session_id=session-123456- 计算表达式:
evaluate session_id=session-123456 expression="myVariable"- 跨过一条线:
next session_id=session-123456- 终止会话:
terminate_debug session_id=session-123456建筑
服务器是使用以下组件构建的:
- MCP服务器层:使用mark3labs/mcp-go实现模型上下文协议
- DAP客户端层:与Delve的DAP服务器通信
- 会话管理:维护和管理调试会话
检查MCP服务器
bunx @modelcontextprotocol/inspector go run ./cmd/dlv-mcp使用演示客户端
我们创建了一个演示客户端,展示了如何以编程方式使用调试器mcp服务器。演示:
- 启动MCP服务器
- 启动调试会话
./testdata/hello.go - 尝试设置断点并执行调试命令
- 正确终止会话和服务器
要运行演示:
go run ./demo/main.go演示客户端展示了如何:
- 使用JSON-RPC启动并与MCP服务器通信
- 使用正确的格式发送工具调用
- 解析和处理响应
- 优雅地处理错误
结账 demo/main.go 和 demo/README.md 有关实施的更多详细信息。
许可证
MIT许可证

