返回市场
调试-mcp

调试-mcp

作者:xhd201513 星标更新:2025-03-10

项目介绍

Go Delve 调试器 MCP 服务器

一个允许大型语言模型(LLMs)与 Delve Go 调试器交互的 MCP 服务器。

描述

该项目实现了一个 Model Context Protocol (MCP) 服务器,该服务器与 Delve Go 调试器集成,使AI助手能够调试Go应用程序。该服务器提供了一组工具,允许LLMs启动、控制和与调试会话进行交互。

您可以在EXAMPLE.md中找到一个工作示例。

特性

  • 启动Go程序的调试会话
  • 在代码中设置断点
  • 单步执行代码(下一步、步入、步出)
  • 在调试会话上下文中评估表达式
  • 检查变量和堆栈跟踪
  • 管理多个调试会话

安装

先决条件

  • 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

然后在http://localhost:9097/sse配置MCP服务器,例如在Cursor或其他MCP客户端中。

检查MCP服务器

bunx @modelcontextprotocol/inspector dlv-mcp

可用工具

调试会话管理

  • start_debug: 启动一个新的调试会话

    • program: 要调试的Go程序路径
    • args: 程序的命令行参数(可选)
    • mode: 调试模式(debugtestexec,默认: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)

示例工作流程

  1. 启动调试会话:

    start_debug program=/path/to/program.go
    
  2. 设置断点:

    set_breakpoint session_id=session-123456 file=/path/to/program.go line=15
    
  3. 继续到断点:

    continue session_id=session-123456
    
  4. 评估表达式:

    evaluate session_id=session-123456 expression="myVariable"
    
  5. 跳过一行:

    next session_id=session-123456
    
  6. 终止会话:

    terminate_debug session_id=session-123456
    

架构

服务器使用以下组件构建:

  • MCP服务器层:使用mark3labs/mcp-go实现Model Context Protocol
  • DAP客户端层:与Delve的DAP服务器通信
  • 会话管理:维护和管理调试会话

检查MCP服务器

bunx @modelcontextprotocol/inspector go run ./cmd/dlv-mcp

使用演示客户端

我们创建了一个演示客户端,展示了如何编程地使用调试器-MCP服务器。演示包括:

  1. 启动MCP服务器
  2. 启动对./testdata/hello.go的调试会话
  3. 尝试设置断点并执行调试命令
  4. 正确终止会话和服务器

要运行演示:

go run ./demo/main.go

演示客户端展示了如何:

  • 使用JSON-RPC启动并与MCP服务器通信
  • 使用正确的格式发送工具调用
  • 解析和处理响应
  • 优雅地处理错误

查看demo/main.godemo/README.md以获取更多关于实现的详细信息。

许可证

MIT 许可证