GDB调试协议服务器

实现GDB 15.x功能的MCP服务器,为基于LLM的客户端提供逐步调试、断点管理、内存检查和远程目标控制。

  • by Chedrian07
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 Chedrian07/gdb-mcp

使用说明

gdb-mcp服务器

英语

概述

这 gdb mcp 该项目实现了一个模型上下文协议(MCP)服务器,该服务器向基于LLM的客户端公开了一组丰富的GDB15.x功能。它启动了一个互动 gdb 进程,通过MI2接口转发命令,并返回结构化响应,从而实现逐步调试、断点管理、内存检查和来自自动化代理的远程目标控制。

关键能力包括:

  • 异步GDB会话管理,自动空闲关闭(默认90秒,可通过配置 GDB_MCP_IDLE_TIMEOUT).
  • 简化了22个统一的MCP工具 (从62个减少),以提高LLM上下文效率,同时保持完整的GDB功能。
  • 高级工具整合了类似的操作: breakpoint_control, execution_step, data_control等等。
  • 令牌感知MI输出解析、错误传播和多步操作的命令批处理。
  • 对路径、地址、正则表达式过滤器和监视器/线程命令进行包装级别验证。使用 run_gdb_command 仅当您有意需要原始GDB控制台访问时。
  • 使用Python 3.12的容器化分发、基于UV的依赖管理和捆绑 gdb 用于可重复的环境。

建筑亮点

  • 工具整合: 62 → 22 工具(减少64.5%)提高了LLM上下文窗口的使用率
  • 统一接口:将类似的操作分组到具有动作参数的单个工具中
  • 全功能覆盖:通过整合的API保留所有GDB功能

仓库的规划

  • src/mcp-gdb/gdb_session.py –GDB MI解释器周围的异步包装器,具有结果解析和超时处理功能。
  • src/mcp-gdb/server.py MCP服务器定义,配备22个整合工具,提供全面的GDB访问。
  • docs/eng, docs/kor –文档工具使用的简明GDB功能参考。
  • mcp.json –参考Docker和本地MCP客户端配置 uv run 执行。
  • pyproject.toml –运行时和测试依赖元数据。
  • Dockerfile –通过以下方式建立生产形象 python:3.12-slim、UV包管理和预安装 gdb.
  • images/running_screen.png –Docker中运行的服务器的示例截图。

快速开始

# Build the container image
$ docker build -t gdb-mcp:latest .

# Run the MCP server (stdio transport)
$ docker run --rm -i \
    --cap-add=SYS_PTRACE \
    --security-opt seccomp=unconfined \
    -v "$PWD":/workspace \
    gdb-mcp:latest

服务器等待MCP兼容客户端(例如桌面LLM应用程序)通过stdio连接。连接后,您可以:

  1. 呼叫 start_session 启动GDB,可以选择指定目标二进制文件或参数。
  2. 使用以下工具 breakpoint_control, program_control, stack_control, data_control,或 remote_control 以驱动调试。
  3. 依靠 get_feature_reference / list_reference_topics 用于快速查找GDB文档。
  4. 可选设置 session_id 关于保持单独命名GDB会话的工具。
  5. 允许自动空闲监视器在不活动时关闭空闲会话。

对于MCP客户,复制和改编 mcp.json.更换 /absolute/path/to/debug/workspace 主机目录应显示为 /workspace Docker内部。

对于没有Docker的本地开发:

$ uv sync --extra dev
$ uv run gdb-mcp

配置

  • GDB_MCP_IDLE_TIMEOUT –会话停止前的不活动秒数(默认值 90).
  • GDB_MCP_LOGLEVEL –Python日志级别(INFO, DEBUG等等)。

开发笔记

  • 在本地安装依赖项: uv sync --extra dev.
  • 跑 uv run pytest 用于测试和 python -m compileall src 用于轻量级语法检查。
  • 参见 docs/eng/gdb-feature-list.md (英文)或 docs/kor/gdb-feature-list.md (韩语)用于扩展服务器时的工具覆盖。