使用说明
Go Delve调试器MCP服务器
允许LLM与Delve Go调试器交互的MCP服务器。
描述
该项目实现了 模型上下文协议(MCP) 与集成的服务器 Delve Go调试器 使AI助手能够调试Go应用程序。服务器公开了一组工具,允许LLM启动、控制调试会话并与之交互。
您可以在以下网址找到一个工作示例 示例.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:调试会话的IDfile:要在其中设置断点的源文件(绝对路径)line:设置断点的行号
执行控制
-
continue:在调试会话中继续执行session_id:调试会话的ID
-
next:在调试会话中跳过当前行session_id:调试会话的ID
-
step_in:在调试会话中进入函数session_id:调试会话的ID
-
step_out:在调试会话中退出功能session_id:调试会话的ID
检查
evaluate:在调试会话中计算表达式session_id:调试会话的IDexpression:要评估的表达式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许可证
