
Serial MCP
io.github.qarnet由 GitHub 帳號 qarnet 發布v0.9.3更新於 Oct 24, 2026
MCP server for serial port communication. 25 tools, resources, prompts, and stdio/HTTP transports.
概覽
讓助理開啟、讀取、寫入並解析序列埠,用於 UART 與 USB 序列埠嵌入式裝置。
- 可以做什麼
- 提供 25 個序列埠工具:裝置探索(list_ports、list_connections)、連線生命週期(open、close、reconnect、reconfigure)以及 I/O(read、write、transact、capture_boot、flush)。常開的環形緩衝區持續擷取接收位元組,分幀與解析器涵蓋行、分隔符、長度前綴、起訖符、SLIP、COBS,以及 AT、JSON、shell、NMEA-0183、Modbus ASCII,並支援總和檢查碼驗證。裝置設定檔可持久保存學到的設定,日誌可匯出為 JSONL。
- 適用情境
- 適合助理需要透過序列埠直接與微控制器、Arduino 或 STM32 開發板等嵌入式目標通訊的情境,包括開機載入程式重置與開機橫幅擷取。適用於命令與回應互動、非請求資料讀取以及協定感知解析,而非一般序列埠監看工具。
- 執行需求
- 以本機程序在使用者機器上執行(僅桌面端),預設使用 stdio,也可用 --transport=http 走 HTTP。可透過 Cargo、Nix 或各平台預先建置的執行檔安裝。在 Linux 上,使用者需加入 dialout 群組才能存取序列埠。未宣告任何帳號、API 金鑰或環境變數。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Serial MCP,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
serial-mcp for UART and USB serial access
[GitHub Release] [crates.io] [Rust] [License]
serial-mcp is an MCP server for direct access to serial ports. It reads,
writes, and streams UART or USB-serial data to microcontrollers, Arduino boards,
STM32 chips, and other embedded targets. Reads use timeouts and pattern matching
instead of blocking on a serial monitor.
The server provides always-on RX capture. It decodes TX and RX frames using line, delimiter, length-prefixed, start/end, SLIP, and COBS formats. It provides AT, JSON, shell, NMEA-0183, and Modbus ASCII parsers.
Protocol presets provide checksum validation. The server also supports auto-reconnect, event logging, DTR/RTS, BREAK, and flow control. MCP clients can use these features with serial bootloaders, resets, and embedded boards.
Quick start
- Install the server. See Install for Cargo, Nix, and prebuilt binary options.
- Connect an agent. Follow the agent configuration guide, or use the example below.
- Discover devices. Call
list_ports()and inspectprofile_matches. The result shows what a bareopenwould reuse. - Open a port. Call
open(port=...)with only the port. Baud defaults to 115200/8-N-1. The server reuses the most recently used high-confidence profile for a known device. It creates a durable generated profile for a new device. - Talk to the device. Use
transact()for command and response exchanges. Useread()for buffered or unsolicited data. Usewrite()for send-only operations.
Capabilities
Tool catalog (25 tools)
Resources and prompts
Install
Cargo (all platforms)
Nix
Prebuilt binary
No toolchain is required. Each release publishes one binary per platform. The
latest/download URLs resolve to the newest release.
On Linux, add your user to the dialout group for port access:
Connect an agent
For client-specific setup, see the agent configuration guide. It covers Claude Code CLI, Claude Desktop, Cursor, VS Code, Zed, opencode, Codex, Hermes, and HTTP transport.
Quick example (Claude Code, Linux/macOS)
Core workflow
Use this sequence for common work: discover, open, talk, verify the learned profile, then use advanced tools when needed.
- Call
list_ports(). Itsprofile_matchesentries correspond toports.selectedmeans a bareopenreusesselected_profile.ambiguousmeans equal-ranked profiles requireopen_profile.duplicate,ineligible, andnonemean a bare open starts fresh or transient.
- Call bare
open(port=...). The result includes theprofilebinding. The binding reports its name, source, confidence, persistence, generated flag, revision, and dirty state. - Use
transact(data=..., match=..., timeout_ms=...)to write and await a response in one call. Useread()for buffered or unsolicited data. - After
reconfigure,set_flow_control, or connection-modeconfigure, inspectprofile_persistence. It reportspersisted,not_needed,transient, orfailed. Also inspect the updatedprofilebinding. - Call
close(). A clean close retries a dirty binding as a safety measure.
For boot and reset capture, call capture_boot. It handles Arduino auto-reset,
power-cycle banners, and boot prompts.
The call purges unread OS input. It marks the RX live edge. It can pulse DTR/RTS,
with guaranteed release. It captures only post-mark bytes on a private cursor.
The result is bounded in memory and does not write a file. See RX and
reading for the from cursor model. See Device
profiles for profile behavior.
Protocols
The protocol field supplies framing and parser defaults for both directions.
NMEA and Modbus ASCII presets validate checksums:
Field precedence is explicit call field, call-time preset, connection default, then connection preset. The Protocol guide documents this order, checksum behavior, and the framing and parser reference.
Key concepts and guides
Transports and options
CLI options
The profile store is one TOML file shared by every session. Use --profiles-path
for an isolated store. See Device profiles.
Persistent capture
export_log writes portable .jsonl filenames into the --capture-dir root.
It never accepts arbitrary paths and never overwrites files. See Persistent
capture.
MCP compatibility
serial-mcp supports MCP 2025-11-25. This version uses the legacy session
lifecycle.
It also supports MCP 2026-07-28. This version uses modern discovery and
stateless requests with SEP-2549 cache fields. Both stdio and HTTP transports
support the port allowlist.
CI runs official conformance checks and Inspector interoperability checks. The
validation tools come from the committed npm lockfile. CI installs them with
npm ci --ignore-scripts. It runs them as local binaries, never through npx.
An actual historical rmcp 1.7.0 client tests backward compatibility over HTTP
and stdio. Run the complete local and CI version gate with:
Development
Before pushing or opening a pull request, run cargo fmt --all. CI runs
cargo fmt --all -- --check once in standalone Ubuntu format job first.
Formatting failures block dependent expensive Nix, build/test/Clippy, and MCP
conformance jobs.
Production-path real-PTY fixture tests run on Linux. macOS and Windows run normal Rust build/test/clippy plus controlled-backend coverage.
Documentation and status
The product backlog tracks planned and in-progress work, and the documentation index links user guides, reference contracts, and reports. Report issues and feature requests on the tracker.
- CHANGELOG.md
- AGENTS.md, contributor guidelines
MCP registry
The package is available on the MCP Registry as:
mcp-name: io.github.qarnet/serial-mcp
License
MIT. See LICENSE.
來源:README.md,提交 a76f02f
工具
0版本歷史
1- v0.9.3最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分