SuperAPI AI 工具集

embedded-debugger-mcp

Embedded Debugger MCP 是一个面向嵌入式调试的 Rust 服务器,提供 MCP 工具集、CLI 和 Codex/Claude 技能。它通过 probe-rs(原生)或 OpenOCD(经 GDB 远程串口协议)两种可互换后端,为 AI 助手暴露统一的工具集,涵盖探针发现、目标连接、核心控制、内存访问、断点、Flash 编程、RTT 通信以及 AI 崩溃诊断(diagnose_fault、unwind_exception)。支持 ARM Cortex-M、RISC-V 和 Xtensa(ESP32)目标,已在真实 ESP32-S3 上验证。

访问官网

工具介绍

Embedded Debugger MCP Server 是一个用 Rust 编写的嵌入式调试服务器。它通过 probe-rs(原生)或 OpenOCD(经 GDB Remote Serial Protocol)两种可互换的后端,向 AI 助手暴露单一 MCP 工具集,并附带一个小型 CLI 和一个用于命令驱动工作流的捆绑技能(skill),无需先配置 MCP 客户端即可使用。资料显示该项目已在真实的 ESP32-S3 上验证。

用途与定位 该工具面向嵌入式开发调试场景,让 AI 助手能够直接进行探针发现、目标连接、核心控制、内存访问、断点设置、Flash 编程、RTT 通信和崩溃诊断。它同时提供 CLI 命令用于环境检查、配置查看、探针列表、MCP 服务启动和技能提示交接。

主要能力

  • 一个 MCP 工具集,两种可互换后端(probe-rs 原生,或经 GDB RSP 的 OpenOCD),在 connect 时选择。
  • MCP 工具覆盖:探针发现、目标连接、核心控制、内存访问、断点、Flash 编程、RTT 通信、崩溃诊断(diagnose_fault、unwind_exception)。
  • CLI 命令用于环境检查、配置检查、探针列表、MCP 服务和技能提示交接。
  • 在 skills/embedded-debugger 提供 Codex/Claude Code 兼容技能。
  • 发布检查覆盖 rustfmt、clippy、测试、文档、打包和 STM32 演示构建。

后端与工具能力 工具运行在两个可互换引擎之一,在 connect 时选择:

  • backend: "probe-rs"(默认)——原生 probe-rs;完整 Flash 和 RTT 支持。
  • backend: "openocd"(实验性)——通过 GDB Remote Serial Protocol 连接到已运行的 openocd 的 GDB 端口(openocd_address,默认 127.0.0.1:3333)。面向 probe-rs 不覆盖的目标(例如经 openocd-esp32 的 Xtensa ESP32)。内存访问和 halt/run/step/reset 已在真实 ESP32-S3 上验证;Flash 和 RTT 仅限 probe-rs。寄存器读取目前使用 ARM gdb 寄存器编号,因此在 Xtensa 上 PC/SP 不正确(已知限制);diagnose_fault 和 unwind_exception 是 Cortex-M 专用的。启动 openocd 时需加 gdb_memory_map disable,否则它会在 GDB 连接时探测 Flash、失败并拒绝连接——例如 openocd -f board/esp32s3-builtin.cfg -c "gdb_memory_map disable"。AI 在两种后端下看到相同的工具集,只有 connect 参数变化。

崩溃诊断 崩溃后,暂停核心并让模型对证据进行推理:

  • halt,然后 diagnose_fault——在一次调用中读取 Cortex-M SCB 故障寄存器(CFSR/HFSR/MMFAR/BFAR/SHCSR/CPUID)以及 PC/SP/LR,并返回一个紧凑的结构化数据包,包含已置位的故障位。它报告证据,不断言根本原因。
  • unwind_exception 配合 elf_path——将崩溃映射到源代码行。在 probe-rs 后端这是完整的 DWARF 回溯(每帧包含函数 + 文件:行);在 OpenOCD 后端它读取异常栈帧并映射出错 PC / 调用者 LR。 两者都是 Cortex-M 专用的(SCB 寄存器、ARM 异常帧),不适用于 Xtensa(ESP32)目标。固件必须使用调试信息(.debug_line)构建才能进行源代码映射。

安全与限制

  • 除非启用 security.allow_flash_erase 或 flash.allow_erase,否则 Flash 擦除被禁用。
  • 内存写入由 security.allow_memory_write 控制。
  • 可选的内存范围限制使用配置中的目标内存区域。
  • 固件文件路径会被规范化,配置了 security.allowed_file_paths 时会对其检查,并检查大小限制。
  • 在实现目标特定的扇区映射之前,按任意地址进行扇区擦除会被拒绝。
  • flash_verify 支持原始数据比较。基于文件的验证请使用原始 BIN 文件或十六进制数据。

使用方式 需要 Rust 稳定工具链。硬件方面需要一个 probe-rs 兼容的调试探针,如 ST-Link、J-Link、DAPLink、Black Magic Probe 或受支持的基于 FTDI 的探针;或者一个正在运行的、暴露其 GDB 端口的 openocd(例如用于 ESP32 的 openocd-esp32)以使用 openocd 后端。还需要受支持的目标芯片和可工作的 SWD/JTAG 接线。捆绑的 STM32 演示固件检查需要 nightly Rust 加 rust-src。二进制文件位于 target/release/embedded-debugger-mcp。运行服务器可显式执行;为兼容性,不带子命令运行 embedded-debugger-mcp 也会通过 stdio 提供 MCP 服务。Windows 上请使用 .exe 路径和 Windows 路径分隔符。配置示例中展示了 MCP 客户端配置。

CLI 与技能模式 CLI 模式适用于在配置 MCP 客户端之前的设置检查、自动化和代理工作流。捆绑技能位于 skills/embedded-debugger,以普通 Codex 技能编写,并通过 .claude-plugin/plugin.json 打包为 Claude Code 版本。该技能从 CLI 检查开始,仅在 MCP 客户端可用时使用 MCP 工具。安装技能使用命令,--target 接受 codex、claude 或 both,分别安装到 ~/.codex/skills/embedded-debugger、~/.claude/skills/embedded-debugger 和 ~/.claude/plugins/local/embedded-debugger-mcp。除非传入 --force,否则不替换现有目录。可通过提示触发 Codex 技能,加载已安装的 Claude Code 插件包。仅技能环境也可将 skills/embedded-debugger 目录复制到本地技能目录。技能包验证命令分别验证仓库技能元数据、标准 SKILL.md 布局和 Claude Code 插件清单。

示例与检查 生成初始配置使用相应命令。STM32 RTT 演示位于 examples/STM32_demo,展示多通道 RTT 通信,作为硬件验证辅助,参见 examples/STM32_demo/README.md。发布前运行指定检查命令。

致谢与许可 致谢 probe-rs(嵌入式调试探针支持)、rmcp(Rust MCP SDK)、tokio(异步运行时)。本项目采用 MIT 许可证,参见 LICENSE。