Embedded Debug MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Embedded Debug MCPshow target status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Embedded Debug MCP — 嵌入式串口调试工具
基于 MCP 协议的嵌入式 Linux 目标板串口调试工具。通过 Dev Host ser2net 连接目标板, pyserial 直连(无 socat),提供启动日志捕获、自动登录、崩溃检测、U-Boot 中断、 继电器复位等功能。
架构概览
Build Machine Dev Host
┌──────────────────────┐ ┌──────────────────────┐
│ Claude Code │ │ ser2net │
│ ┌─────────────────┐ │ TCP:2000 │ TCP:2000 → /dev/ttyUSB0│
│ │ MCP Server ├──┼────────────→│ (目标板串口) │
│ │ (stdio, 子进程) │ │ TCP:2001 │ TCP:2001 → /dev/ttyUSB1│
│ │ pyserial 直连 │ ├────────────→│ (CH340 继电器) │
│ └─────────────────┘ │ └──────────────────────┘
└──────────────────────┘Related MCP server: mcp-qemu-lab
快速开始
1. 前提
组件 | 说明 |
Dev Host | 运行 ser2net,暴露目标板串口 (TCP:2000) 和继电器 (TCP:2001) |
Python ≥ 3.11 | 构建机器上安装 |
| Python 包管理器 |
2. 配置
在 SDK 项目根目录创建 .target.conf:
# 必填: 串口连接
RK_DEV_HOST_IP=192.168.1.189
RK_SERIAL_PORT=2000
# 可选: 自动登录
RK_LOGIN_USER=root
RK_LOGIN_PASS=mypassword
# 可选: 继电器复位 (直连 ser2net,无需 SSH)
RK_RELAY_PORT=2001
RK_RESET_CHANNEL=2
RK_MASKROM_CHANNEL=1Claude Code 启动时自动检测 .target.conf → 自动生成 .mcp.json → 启动 MCP Server。
3. 基本用法
启动后在 Claude Code 中直接使用 MCP Tools:
# 查状态
serial_get_state
→ {state: "booted", boot_number: 3, ...}
# 向目标发命令 (仿 labgrid marker 模式)
serial_send_command "uname -a"
# 看日志
serial_get_logs(lines=50, pattern="error|panic")
serial_list_logs # 列出所有启动日志
# 等待启动完成
serial_wait_pattern "login:" timeout=120
# 硬件复位
serial_reset(wait_boot=true)
# 进入 U-Boot 提示符
serial_enter_ubootMCP Tools 参考
Tool | 功能 |
| 在目标上执行 shell 命令 (marker echo 模式) |
| 获取目标状态和元数据 |
| 检索串口日志 (支持过滤) |
| 列出所有归档启动日志 |
| 硬件复位 + 日志切割 |
| 强制进入 U-Boot 交互提示符 |
| 阻塞等待串口输出中出现指定模式 |
| 手动切割日志 (不复位) |
| 增量获取新输出 (长轮询) |
| 获取当前目标配置 |
状态指示器
Statusline 显示当前目标状态:
显示 | 含义 |
| 目标正常通信 |
| 启动进行中 |
| 登录完成,shell 就绪 |
| U-Boot 提示符 |
| Kernel panic/BUG/Oops |
| 目标无响应 |
| 串口连接断开 |
(不显示) | MCP Server 未运行 |
日志
启动日志存储在项目根目录的 .dut-serial/logs/ 下:
{project}/.dut-serial/
├── .boot_count # 当前 cycle 编号
├── target-state # 当前状态
└── logs/
├── boot-001_20260610_140500.log
├── boot-002_20260610_143200.log
└── serial.current.log → boot-002_*.log一次上电→掉电 = 一个
boot-NNN.log默认保留最近 10 个日志
单文件超过 100MB 自动切割
检测 U-Boot SPL 自动触发切割
多 Claude Code 实例
每 Claude Code 实例启动自己的 MCP Server。同 host:port 互斥:
Claude A → MCP Server A → host:2000 ✅
Claude B → MCP Server B → host:2000 ❌ 被拒绝 (PID xxx already owns this target)
Claude C → MCP Server C → host:2001 ✅ 不同端口,允许A 退出后释放锁 → B 可以重试。
配置参考
.target.conf
# ── 串口连接(必填)──
RK_DEV_HOST_IP=192.168.1.189
RK_SERIAL_PORT=2000
RK_SERIAL_PROTOCOL=raw # "raw" | "rfc2217"
RK_SERIAL_BAUDRATE=1500000
# ── 自动登录(可选)──
RK_LOGIN_USER=root
RK_LOGIN_PASS=
# ── 继电器控制(可选)──
RK_RELAY_PORT=2001
RK_RESET_CHANNEL=2
RK_MASKROM_CHANNEL=1
# ── 监控参数 ──
RK_HANG_TIMEOUT=60 # 判定挂死的无输出秒数 (默认 60)
RK_HANG_HYSTERESIS=3 # 滞后确认次数 (默认 3)
RK_MAX_ARCHIVED_LOGS=10 # 保留日志数 (默认 10)
RK_MAX_LOG_FILE_SIZE=100 # 单文件最大 MB (默认 100)
# ── U-Boot 中断策略 ──
# RK_UBOOT_INTERRUPT_STRATEGY=aggressive # "lava" (默认) | "aggressive"典型工作流
监控启动
serial_reset(wait_boot=false)
serial_wait_pattern("U-Boot SPL", timeout=30)
serial_wait_pattern("Linux version", timeout=60)
serial_wait_pattern("login:", timeout=120)
# 自动登录后
serial_send_command("cat /proc/device-tree/model")崩溃诊断
serial_get_state
# → {state: "crashed"}
serial_get_logs(lines=200, pattern="panic|BUG|Oops|Call trace")U-Boot 交互
serial_enter_uboot
serial_send_command("version")
serial_send_command("mmc list")
serial_send_command("printenv bootcmd")日志审查
serial_list_logs
# 对比两次启动
serial_get_logs(archive=1, pattern="error|fail") # 上一次
serial_get_logs(archive=0, pattern="error|fail") # 当前故障排除
现象 | 原因 | 解决 |
状态栏不显示 | 无 | 检查项目根目录是否有 |
| 连不上 ser2net | 检查 Dev Host IP/端口; |
| 目标无输出 |
|
| 内核崩溃 | 查看日志: |
| 目标 shell 未就绪 | 等待 |
第二个 Claude Code 被拒 | 同 host:port 互斥 | 退出第一个实例或等它释放锁 |
高波特率丢数据 | 流控不匹配 | 降低波特率或启用 rfc2217 + RTSCTS |
依赖
fastmcp >= 3.0.0 # MCP server framework
pyserial >= 3.5 # serial.serial_for_url("socket://")
pexpect >= 4.9 # PtxExpect 继承
attrs >= 23.0 # 数据类装饰器参考
设计文档:
docs/design/embedded-debug-mcp-v4.mdReview:
docs/design/embedded-debug-mcp-v4-review.md
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bitshelf/serial-debug-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server