serial-hub
Click on "Deploy 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., "@serial-hubopen COM6 at 115200 and wait for the U-Boot prompt"
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.
serial-hub
让 任何 AI(workbuddy、VS Code 里的 Cline、Claude Desktop、Cursor、DSH……)都能和人类工程师共用同一条串口,自主地看输出、发命令、交互式调试嵌入式开发板上的 Linux。
┌──────────────────────────────────┐
人(浏览器)────▶│ serial-hub 守护进程(常驻) │◀── MCP ──▶ VS Code 的 AI (Cline)
Web 控制台 │ 唯一持有并独占串口的那一个对象 │
│ hub: 环形缓冲 + seq + 游标 │◀── MCP ──▶ workbuddy 的 AI
MobaXterm ────▶│ 控制 IPC(本地 TCP,换行 JSON) │
(TCP 桥,可选) └──────────────────────────────────┘
▲
└── CLI (serialctl) ── 任何"只能跑 shell"的 AI它解决什么
嵌入式工程师调板子时,人盯串口终端、AI 想帮忙却"看不见也摸不着"。serial-hub 把串口提升成一个常驻服务:人用 Web 控制台(xterm 终端),AI 通过 MCP 或 CLI 工具接入,双方共享同一个 SerialHub、同一条物理连接——AI 看到的 == 人看到的,AI 发的 == 人看到的,serial_expect_send 还能让 AI 在正确的毫秒发出命令(抢 U-Boot 倒计时、登录密码)。
Related MCP server: terminal-use-mcp
核心设计
单一真源:所有数据(设备输出、AI 发的、人敲的)进同一个按
seq严格递增的环形缓冲。任何客户端读到的都是同一份真相。独占而不互斥:串口只被守护进程打开一次;人和多个 AI 都是它的客户端,彼此不抢端口。
读取游标:每个会话/每个 CLI consumer 有独立游标,
read默认是"给我还没看过的部分"。原子 expect→send:
serial_expect_send在命中正则的同一 tick 内发字节,解决交互式提示的秒级竞态。上下文卫生:read/wait 有硬上限并显式报截断,绝不把整段
dmesg灌进模型上下文。
安装
cd serial-hub
npm install # serialport(N-API 预编译) + ws + @xterm/xterm + MCP SDK + zod
serialport有原生依赖;若在非 Electron 的普通 Node 下加载失败,先用内置VIRTUAL虚拟端口验证整条链路(见下)。
快速开始(无硬件自测)
# 1) 前台起守护进程(会打印 Web 控制台地址)
node bin/serial-hub.js
# → 人类 Web 控制台:http://127.0.0.1:48080/serial/
# → 控制 IPC:127.0.0.1:48555
# 2) 用 CLI 走一遍(虚拟板)
serialctl ports # 应看到 VIRTUAL 虚拟演示板
serialctl open VIRTUAL
serialctl wait "U-Boot" --timeout 5000
serialctl read
serialctl close人类打开 http://127.0.0.1:48080/serial/ 就能看到 xterm 终端,和 CLI/AI 共用同一个口。
三种接入方式
方式 | 适合谁 | 说明 |
MCP Server(推荐) | workbuddy、Cline 等支持 MCP 的 AI | 一次配置,工具即插即用 |
CLI ( | 只能执行 shell 命令的 AI | 零集成,直接跑命令 |
人类 Web 控制台 | 你 | xterm 终端,随时看/敲 |
接入 A:MCP Server(workbuddy / Cline / Claude Desktop / Cursor)
MCP Server 以 stdio 与宿主通信;首次被调用时若守护进程没在跑,会自动在后台拉起一个(长期存活,可被多个 AI 共用)。
把下面配置加到宿主的 MCP 配置里(把 D:\\AI-agent\\OUTPUT\\serial-hub 换成你的实际绝对路径):
VS Code Cline / Claude Desktop / Cursor(mcpServers JSON)
{
"mcpServers": {
"serial-hub": {
"command": "node",
"args": ["D:\\AI-agent\\OUTPUT\\serial-hub\\bin\\serial-hub-mcp.js"]
}
}
}workbuddy(支持 MCP 的客户端同理)——指向同一个入口:
{
"mcpServers": {
"serial-hub": {
"command": "node",
"args": ["D:\\AI-agent\\OUTPUT\\serial-hub\\bin\\serial-hub-mcp.js"]
}
}
}装好后,AI 侧会出现 11 个 serial_* 工具。把这本手册 docs/AI-INSTRUCTIONS.md 作为系统提示/知识喂给 AI(或让它读一遍),它就知道怎么正确使用了。
接入 B:CLI(任何能跑 shell 的 AI)
无需任何对接,直接命令。都打到同一个守护进程:
serialctl status # 状态 / 输入权 / 缓冲范围
serialctl ports # 列串口(含 VIRTUAL)
serialctl open COM6 --baud 115200 # 打开并独占
serialctl send "ls -l" # 发送(自动补 \r)
serialctl send --raw "0d" # 发送十六进制
serialctl keys ctrl-c enter # 发送按键序列
serialctl read [--since 42] [--max-bytes 65536] # 读"还没看过的"新输出
serialctl wait "login:" --timeout 10000 # 等输出匹配
serialctl expect-send "login:" "root" # 命中即发(竞态安全)
serialctl mark "开始烧写" # 插标记
serialctl signals --dtr 0 --rts 0 # DTR/RTS(复位板子)
serialctl daemon # 前台起守护进程(调试用)CLI 默认用固定游标 cli(多次调用共享)。给每个独立任务一个独立游标用 --consumer <id>。
接入 C:人类 Web 控制台
浏览器打开 http://127.0.0.1:48080/serial/(端口可用 SERIAL_HUB_WEB_PORT 改)。xterm 渲染设备输出,右侧"活动"栏显示谁在发、AI 在等什么。可保存记录为 txt。
配置(环境变量)
变量 | 默认 | 说明 |
|
| 控制 IPC 端口(仅 127.0.0.1) |
|
| 人类 Web 控制台端口 |
|
| ser2net 式 TCP/Telnet 桥端口;>0 时在 127.0.0.1 开启,MobaXterm 可 Telnet 连它当串口用 |
目录结构
serial-hub/
├─ bin/
│ ├─ serial-hub.js # 启动守护进程(人类控制台 + IPC + 可选桥)
│ ├─ serial-hub-mcp.js # MCP Server 入口(给 AI)
│ └─ serialctl.js # CLI 入口(给能跑 shell 的 AI)
├─ src/
│ ├─ daemon.js # 守护进程主体:hub + IPC + 控制台 + 桥
│ ├─ client.js # DaemonClient(换行 JSON over 本地 TCP)
│ ├─ cli.js # CLI 与 MCP 共用的连接层
│ ├─ cli-main.js # serialctl 命令实现
│ ├─ mcp-server.js # 11 个 serial_* MCP 工具(描述即说明书)
│ ├─ serial-api.js # 高层串口操作(MCP/CLI 共用,对齐 hub 语义)
│ ├─ keys.js # 按键名 → 字节
│ ├─ config.js # 端口等配置
│ ├─ console-http.js # 人类 Web 控制台(原生 http + ws)
│ └─ core/ # 与宿主无关的核心逻辑(从 DSH 插件复用)
│ ├─ hub.js # SerialHub:单一真源 / 环形缓冲 / 游标 / expectSend
│ ├─ transport.js # 真实串口 + 虚拟演示串口
│ ├─ console-page.js # xterm 控制台页面(纯函数)
│ ├─ bridge.js # TCP/Telnet 桥
│ └─ trust-fence.js # 信任围栏(防跨站 / DNS-rebinding)
├─ docs/
│ └─ AI-INSTRUCTIONS.md # ★ 给 AI 的使用手册
├─ test/ # 冒烟测试(虚拟板跑通整条链路)
└─ package.json测试
npm test # 用 VIRTUAL 虚拟板跑通 打开→U-Boot→登录→shell 全链路许可
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server that lets LLMs talk to serial devices: microcontrollers, routers, modems, embedded Linux, anything with a UART.2374 PyPI7MIT
- AlicenseBqualityDmaintenanceLocal + remote terminal interaction control MCP Server. Lets AI agents control interactive TUI programs the way a human would.299 npmMIT

sbl-probeofficial
AlicenseNot gradedqualityDmaintenanceSerial communication and protocol analysis MCP server that gives AI coding assistants direct access to serial ports for reading, writing, decoding, and capturing embedded device output.MIT- AlicenseNot gradedqualityDmaintenanceEnables humans and AI agents to collaboratively control serial ports via MCP tools or Web UI, with real-time data sharing across all participants.MIT