Token导航 LogoToken导航TokenDH.com
Pygdbmi MCP Server logo
AI代理stdio官方级别未说明来源级核验

Pygdbmi MCP Server

MCP Server

一个基于pygdbmi开发的MCP服务器,用于通过MCP协议调用GDB进行动态调试,支持远程调试和断点管理。

工具数

17

提示词数

0

GitHub Stars

4

资源数

0
PythonAI代理工作流自动化

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

cnitlrt

提供方

cnitlrt

最后核验

2026/5/17 20:19

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run pygdbmi-mcp-server

详细介绍

pygdbmi-mcp-server

English | 中文

这是一个基于 pygdbmi 开发的 MCP (Model Context Protocol) 服务器,旨在通过 MCP 协议调用 GDB 进行动态调试。

本项目部分代码参考自 pwnomcp

功能特性

本服务器提供了一系列 MCP 工具,用于与 GDB 进行交互:

分类工具说明
调试控制execute执行任意 GDB/pwndbg 命令。
调试控制run运行加载的二进制文件。
调试控制interrupt中断正在运行的程序。
调试控制finish运行直到当前函数返回。
调试控制step_control执行步进命令 (continue, next, step, nexti, stepi)。
远程调试target_remote连接到远程调试目标 (如 gdbserver)。
远程调试disconnect断开远程连接。
文件与会话管理set_file加载用于调试的二进制文件。
文件与会话管理set_poc_file设置 PoC 文件 (通过 set args 传递给二进制文件)。
文件与会话管理get_session_info获取当前调试会话信息。
断点管理set_breakpoint在指定位置设置断点。
断点管理list_breakpoints列出所有断点。
断点管理delete_breakpoint按编号删除断点。
断点管理toggle_breakpoint切换断点的启用/禁用状态。
状态检查get_context获取调试上下文 (寄存器, 堆栈, 反汇编, 代码, 回溯)。
状态检查get_memory读取指定地址的内存。
状态检查disassemble反汇编指定地址。

安装与使用

1. 克隆仓库

git clone https://github.com/cnitlrt/pygdbmi-mcp-server
cd pygdbmi-mcp-server

2. 配置环境

在项目根目录下创建或修改 .env 文件,配置服务器监听地址和传输模式:

PORT=1111
HOST="0.0.0.0"
# TRANSPORT 可选 "streamable-http" (SSE/HTTP) 或 "stdio" (标准输入输出)
# 若未设置,服务器会在非交互式 stdin(例如 Codex MCP)下自动选择 stdio
TRANSPORT="streamable-http"

可选调试器配置:

# 调试器可执行文件路径或命令名
# Windows 一般使用 gdb.exe,Linux/macOS 可使用 pwndbg 或 gdb
GDB_PATH="gdb"

3. 安装依赖

本项目推荐使用 uv 进行依赖管理和环境配置。

# 创建虚拟环境 (建议使用 Python 3.13 或更高版本)
uv venv --python 3.13

# 激活虚拟环境 (Linux/macOS)
source .venv/bin/activate
# Windows
# .venv\Scripts\activate

# 安装项目及其依赖
uv pip install -e .

4. 运行服务器

uv run pygdbmi-mcp-server

也可以通过参数指定传输模式:

uv run pygdbmi-mcp-server --transport streamable-http
uv run pygdbmi-mcp-server --transport stdio

Windows 说明

  • 在 Windows 上,服务默认使用 gdb(不再默认依赖 pwndbg)。
  • pwndbg 专有命令不可用,get_context 会自动降级为标准 GDB 命令。
  • get_memory 已改为标准 GDB x/... 输出,无需 pwndbg 也可使用。

远程连接(SSE/HTTP)

让服务器监听公网/局域网地址并使用 streamable-http:

uv run pygdbmi-mcp-server --transport streamable-http --host 0.0.0.0 --port 1111

默认 SSE 端点为 /mcp,因此远程地址通常是:

http://:1111/mcp

配置

codex

[mcp_servers.gdb]
url = "http://127.0.0.1:1111/mcp"

antigravity

{
    "mcpServers": {
        "gdb": {
            "serverUrl": "http://127.0.0.1:1111/mcp/",
            "disabled": false
        }
    }
}

mcp-server

{
	"servers": {
		"gdb-mcp-server": {
			"url": "http://127.0.0.1:1111/mcp",
			"type": "streamable-http"
		}
	},
	"inputs": []
}

5. 远程调试示例

使用 target_remote 连接到 gdbserver 进行远程调试:

# 在远程机器或另一个终端启动 gdbserver
gdbserver localhost:1234 /path/to/binary

# 通过 MCP 工具进行调试:
# 1. 使用 set_file 加载符号文件(与远程二进制相同)
# 2. 使用 target_remote 连接到 gdbserver
#    示例: target_remote("localhost:1234")
# 3. 使用 set_breakpoint 设置断点
# 4. 使用 step_control("continue") 继续执行
# 5. 使用 disconnect 断开连接

远程调试特别适用于:

  • 嵌入式系统调试
  • 内核模块调试
  • 跨平台调试
  • Docker 容器内程序调试

目录标签

目录标签

PythonAI代理工作流自动化动态调试本地部署远程调试断点管理GDB交互MCP协议

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

17

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP