README
🚀 嵌入式调试器MCP服务器
一款专业的模型上下文协议(MCP)服务器,用于结合probe-rs进行嵌入式调试。为AI助手提供针对嵌入式系统的全面调试功能,支持包括ARM Cortex - M、RISC - V微控制器在内的嵌入式系统,并可与真实硬件集成。
✨ 主要特性
- 🚀 生产就绪:与真实硬件集成,具备22种全面的调试工具
- 🔌 多探针支持:支持J - Link、ST - Link V2/V3、DAPLink、Black Magic Probe等调试探针
- 🎯 完整的调试控制:可进行连接、暂停、运行、复位、单步执行等操作
- 💾 内存操作:支持以多种数据格式读写闪存和RAM
- 🛑 断点管理:支持硬件和软件断点,并可进行实时控制
- 📱 闪存编程:可完成闪存擦除、编程、验证等操作
- 📡 RTT双向通信:具备实时传输功能,拥有交互式命令/响应系统
- 🏗️ 多架构支持:支持ARM Cortex - M、RISC - V架构,且经过STM32集成测试
- 🤖 AI集成:与Claude等AI助手完美兼容
- 🧪 全面测试:所有22种工具均在真实的STM32G431CBTx硬件上进行了验证
🏗️ 架构
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP客户端 │◄──►│ 嵌入式调试器MCP │◄──►│ 调试探针硬件 │
│ (Claude/AI) │ │ │ │ │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌──────────────────┐
│ 目标设备 │
│ (ARM/RISC - V) │
└──────────────────┘
🚀 快速开始
前提条件
硬件要求:
- 调试探针:支持J - Link、ST - Link V2/V3、DAPLink等兼容的调试探针
- 目标开发板:STM32或其他支持的微控制器开发板
- 连接方式:使用USB线缆连接调试探针和目标开发板
软件要求:
- Rust 1.70+
- 与probe - rs兼容的调试探针驱动程序
安装
# 从源代码克隆并构建
git clone https://github.com/adancurusul/embedded-debugger-mcp.git
cd embedded-debugger-mcp
cargo build --release
基本用法
配置MCP客户端
Claude桌面端配置示例
添加到Claude桌面端配置文件中:
Windows示例:
{
"mcpServers": {
"embedded-debugger": {
"command": "C:\\path\\to\\debugger-mcp-rs\\target\\release\\embedded-debugger-mcp.exe",
"args": [],
"env": {
"RUST_LOG": "info"
}
}
}
}
macOS/Linux示例:
{
"mcpServers": {
"embedded-debugger": {
"command": "/path/to/debugger-mcp-rs/target/release/embedded-debugger-mcp",
"args": [],
"env": {
"RUST_LOG": "info"
}
}
}
}
其他工具(如cursor、Claude Code等)的示例,请参考相应工具的文档。
🎯 尝试STM32演示
我们提供了一个全面的STM32 RTT双向演示,展示了所有功能:
# 进入示例目录
cd examples/STM32_demo
# 构建固件
cargo build --release
# 结合MCP服务器进行完整的调试体验
演示展示内容:
- ✅ 交互式RTT通信:发送命令并获取实时响应
- ✅ 所有22种MCP工具:在真实的STM32硬件上进行了完整验证
- ✅ 斐波那契计算器:通过控制命令实现实时数据流传输
- ✅ 硬件集成:在STM32G431CBTx + ST - Link V2上进行了测试
与AI助手的使用示例
列出可用的调试探针
请列出系统上可用的调试探针
连接并烧录固件
使用ST - Link探针连接到我的STM32G431CBTx,然后烧录位于examples/STM32_demo/target/thumbv7em-none-eabi/release/STM32_demo的固件
交互式RTT通信
请连接RTT并显示终端通道的数据。然后发送命令 'L' 来切换LED状态。
内存分析
从地址0x08000000读取64字节的内存并分析数据格式
测试所有22种MCP工具
请帮助我使用我的STM32开发板测试所有22种MCP嵌入式调试工具。首先连接到探针,然后系统地测试每个工具类别:探针管理、内存操作、调试控制、断点、闪存操作、RTT通信和会话管理。
🛠️ 完整工具集(22种工具)
所有工具均在真实的STM32硬件上进行了测试和验证:
🔌 探针管理(3种工具)
| 工具 | 描述 | 状态 |
|------|------|------|
| list_probes | 发现可用的调试探针 | ✅ 生产就绪 |
| connect | 连接到探针和目标芯片 | ✅ 生产就绪 |
| probe_info | 获取详细的会话信息 | ✅ 生产就绪 |
💾 内存操作(2种工具)
| 工具 | 描述 | 状态 |
|------|------|------|
| read_memory | 以多种格式读取闪存/RAM | ✅ 生产就绪 |
| write_memory | 写入目标内存 | ✅ 生产就绪 |
🎯 调试控制(4种工具)
| 工具 | 描述 | 状态 |
|------|------|------|
| halt | 停止目标执行 | ✅ 生产就绪 |
| run | 恢复目标执行 | ✅ 生产就绪 |
| reset | 硬件/软件复位 | ✅ 生产就绪 |
| step | 单指令步进 | ✅ 生产就绪 |
🛑 断点管理(2种工具)
| 工具 | 描述 | 状态 |
|------|------|------|
| set_breakpoint | 设置硬件/软件断点 | ✅ 生产就绪 |
| clear_breakpoint | 清除断点 | ✅ 生产就绪 |
📱 闪存操作(3种工具)
| 工具 | 描述 | 状态 |
|------|------|------|
| flash_erase | 擦除闪存扇区/芯片 | ✅ 生产就绪 |
| flash_program | 烧录ELF/HEX/BIN文件 | ✅ 生产就绪 |
| flash_verify | 验证闪存内容 | ✅ 生产就绪 |
📡 RTT通信(6种工具)
| 工具 | 描述 | 状态 |
|------|------|------|
| rtt_attach | 连接到RTT通信 | ✅ 生产就绪 |
| rtt_detach | 断开RTT连接 | ✅ 生产就绪 |
| rtt_channels | 列出可用的RTT通道 | ✅ 生产就绪 |
| rtt_read | 从RTT上行通道读取数据 | ✅ 生产就绪 |
| rtt_write | 向RTT下行通道写入数据 | ✅ 生产就绪 |
| run_firmware | 完成部署 + RTT | ✅ 生产就绪 |
📊 会话管理(2种工具)
| 工具 | 描述 | 状态 |
|------|------|------|
| get_status | 获取当前调试状态 | ✅ 生产就绪 |
| disconnect | 干净地终止会话 | ✅ 生产就绪 |
✅ 22/22工具 - 在真实硬件上成功率达100%
🌍 支持的硬件
调试探针
- J - Link:Segger J - Link(所有型号)
- ST - Link:ST - Link/V2、ST - Link/V3
- DAPLink:与ARM DAPLink兼容的调试探针
- Black Magic Probe:Black Magic Probe
- FTDI:基于FTDI的调试探针
目标架构
- ARM Cortex - M:M0、M0+、M3、M4、M7、M23、M33
- RISC - V:各种RISC - V内核
- ARM Cortex - A:基本支持
🏆 生产状态
✅ 完全实现并测试
当前状态:生产就绪
- ✅ 完整的probe - rs集成:使用所有22种工具进行真实硬件调试
- ✅ 硬件验证:在STM32G431CBTx + ST - Link V2上进行了测试
- ✅ RTT双向通信:支持实时命令的全交互式通信
- ✅ 闪存操作:完整的擦除、编程、验证工作流程
- ✅ 会话管理:支持多会话,具备强大的错误处理能力
- ✅ AI集成:与MCP协议完美兼容
🙏 致谢
感谢以下开源项目:
- probe - rs - 嵌入式调试工具包
- rmcp - Rust MCP SDK
- tokio - 异步运行时
📄 许可证
本项目采用MIT许可证。详情请参阅LICENSE文件。
⭐ 如果本项目对您有帮助,请给我们一个Star!
微信扫一扫