关于 GDB MCP Server
MDB-MCP 是一个 MCP 服务,让 AI 助手能够驱动 GDB 或 LLDB 进行二进制程序调试与分析。它适合需要设置断点、查看内存和调用栈的开发者与安全研究人员。
主要功能
- 01启动 GDB 或 LLDB 调试会话
- 02执行任意 gdb 或 lldb 命令
- 03暂停正在运行的程序
- 04终止程序并关闭会话
- 05查询可用调试器及会话状态
适用场景
- 01让 AI 助手分析程序崩溃的原因(如段错误)
- 02在调试过程中设置断点并查看调用栈与内存
- 03结合 pwndbg 或 GEF 等 GDB 扩展进行分析
MCP 相关
该项目是 MCP 服务,向 MCP 客户端提供 debugger_status、debugger_start、debugger_command 等工具,用于控制调试会话。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MDB-MCP
一个为 AI 助手提供真实调试器的 MCP 服务。它驱动 GDB 或 LLDB,让助手能够像你一样设置断点、运行程序、读取内存和查看调用栈。
安装
你需要 uv 和至少一个调试器:
# Debian / Ubuntu
sudo apt install gdb lldb python3-lldb
# macOS (LLDB ships with the Xcode command line tools)
xcode-select --install
然后将服务添加到客户端。Claude Code 的配置:
claude mcp add mdb -- uvx --from git+https://github.com/smadi0x86/MDB-MCP mdb-mcp
Claude Desktop、Cursor 或 Windsurf 的配置:
{
"mcpServers": {
"mdb": {
"command": "uvx",
"args": ["--from", "git+https://github.com/smadi0x86/MDB-MCP", "mdb-mcp"]
}
}
}
VS Code 在 .vscode/mcp.json 的 "servers" 下使用相同的配置项,并添加 "type": "stdio"。在使用 WSL 的 Windows 上,将 "command": "wsl" 设为命令,并将 uvx 的完整路径放在 args 的开头。
工具
debugger_status which debuggers are usable, and the open sessions
debugger_start start a gdb or lldb session, optionally loading a program
debugger_command run any gdb or lldb command
debugger_interrupt pause a running program, like Ctrl-C
debugger_terminate kill the program and close the session
其他所有内容都是普通的调试器命令,因此 break main、bt、x/16gx $sp 和 frame variable 都可以使用。让程序继续运行的命令会等待程序停止(默认等待 10 秒,每次调用都可调整)。如果程序仍在运行,助手可以中断程序或继续等待。
Linux 上默认使用 GDB,macOS 上默认使用 LLDB。也可以明确指定其中任意一个。GDB 会加载你的 ~/.gdbinit,因此 pwndbg 和 GEF 仍可正常使用。
试用
make -C examples
然后询问你的助手 examples/crash 为什么会发生段错误(请提供绝对路径)。
配置
如果要使用 PATH 中的调试器以外的调试器,请在客户端配置中服务的 env 里设置:
"env": {
"MDB_GDB_PATH": "gdb-multiarch",
"MDB_LLDB_PATH": "/opt/homebrew/opt/llvm/bin/lldb"
}
故障排除
如果 LLDB 显示为不可用,debugger_status 会说明原因。在 Debian 和 Ubuntu 上,通常是缺少 python3-lldb,而它必须与 LLDB 版本匹配。
程序无法读取键盘输入。请改为从文件读取:
run < input.txt # gdb
process launch -i input.txt # lldb
如果在 Linux 上附加到正在运行的进程失败,请检查 /proc/sys/kernel/yama/ptrace_scope。值为 1 时,只允许调试子进程。
安全
调试器可以运行 shell 命令(shell、python、platform shell、script),而你调试的程序会以你的用户身份运行。只调试你信任的代码;除非处于沙箱中,否则请对 debugger_command 保持工具审批开启。
开发
uv sync
uv run pytest # tests for a missing debugger are skipped
uv run ruff check . && uv run ruff format --check .
上方的演示由 demo/record.py 通过真实的工具调用录制。有关如何重新生成演示,请参阅该文件的开头。
许可证
GPL-3.0
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
