Token导航 LogoToken导航TokenDH.com
MCP Serial Bridge logo
开发工具stdio官方级别未说明来源级核验

MCP Serial Bridge

MCP Server

一个通过串行通信控制外部设备的MCP服务器,使AI代理能够通过串行端口直接与设备交互。

工具数

3

提示词数

0

GitHub Stars

1

资源数

0
开发工具PythonClaude设备控制Claude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

46nori

提供方

46nori

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv .venv

详细介绍

mcp串行桥

用于通过串行通信操作外部设备的MCP(Model Context Protocol)服务器。 AI代理 list_ports / connect / write_and_read 而需要与环境混合的每条反射光线,进行环境采样。

适用于所有具有串行接口的设备,包括调制解调器、测量器、嵌入式板和复古计算机。

前提

  • 本地MCP服务器:此服务器在用户的计算机上作为本地进程运行。不考虑在云或远程运行。请在可物理访问串行端口的电脑上运行。
  • Visual Studio代码(VSCode)+GitHub副本:假定使用VSCode(GitHub Copilot Agent模式)作为MCP客户端。其他支持MCP的客户机也可以使用,本文档的步骤以VScode为基准进行了说明。

动作要件

  • Python 3.11 以上
  • macOS/Windows/Linux

安装,安装

git clone https://github.com/46nori/mcp-serial-bridge.git
cd mcp-serial-bridge

使用uv时(推荐)

macOS/Linux:

# uv のインストール(未インストールの場合)
curl -LsSf https://astral.sh/uv/install.sh | sh

Windows(PowerShell):

您可以直接从VSCode集成终端运行。使用外部PowerShell也没有问题。
# uv のインストール(未インストールの場合)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Windows注意事项: uv 安装后,在当前打开的PowerShell中 uv 命令可能无法识别。 在这种情况下,请关闭并重新打开VSCode的集成终端,或者重新启动VSCode,然后继续。

在这两种环境中,安装后请重新打开新壳,然后执行以下操作:。

# uv が使えることを確認
uv --version

# 依存パッケージのインストールと仮想環境の作成
uv sync

使用venv+pip时

在不能使用uv的环境中也可以使用标准的venv。

macOS/Linux:

python3 -m venv .venv
.venv/bin/pip install "mcp[cli]>=1.9.0" "pyserial>=3.5"

Windows(PowerShell):

py -3 -m venv .venv
.\.venv\Scripts\pip install "mcp[cli]>=1.9.0" "pyserial>=3.5"
无论采用哪种方法,虚拟环境 .venv/ 中所述修改相应参数的值。

如果您没有对Linux上的串行端口的访问权限 dialout 请添加到组中。

sudo usermod -aG dialout $USER
# 反映には再ログインが必要

启动服务器

.vscode/mcp.json 包含在存储库中。 在macOS/Linux上可以直接使用。 在Windows中,Python的执行文件位置不同command.venv/Scripts/python.exe 中所述修改相应参数的值。

命令调色板(Cmd+Shift+P / Ctrl+Shift+P)开始 MCP:重新启动服务器 执行时 serial-bridge 将条目添加到文档注册表。

有关配置文件的详细信息,请参见技术详细来修改标记元素的显示属性。

______________________________________________________________________

使用例

用户不直接调用工具。 如果用自然语言向AI代理(GitHub Copilot)发出指示,则会判断需要AI的工具并按顺序调用。

操作の流れ:
  ユーザー → 自然言語で指示 → AI エージェント → MCP ツール → シリアルデバイス

结果将作为AI的回复显示在聊天中。

通用AT命令设备(调制解调器、Wi-Fi模块等)

用户告诉AI的内容:

“请检查串行端口,使用9600bps的换行代码CR+LF连接到AT命令设备,并使用AT命令进行沟通确认和AT+GMR获取版本。”

AI在内部调用的工具参数(参考):

{ "name": "list_ports", "arguments": {} }
{ "name": "connect",        "arguments": { "port": "/dev/cu.usbserial-10", "baudrate": 9600, "line_ending": "\r\n" } }
{ "name": "write_and_read", "arguments": { "command": "AT",     "wait_for": "OK", "timeout": 3 } }
{ "name": "write_and_read", "arguments": { "command": "AT+GMR", "wait_for": "OK", "timeout": 5 } }

______________________________________________________________________

测量仪器、传感器(仅限CR)

用户告诉AI的内容:

“以115200bps连接COM3(换行仅限CR)READ?请用命令获取测量值“

AI在内部调用的工具参数(参考):

{ "name": "connect",        "arguments": { "port": "COM3", "baudrate": 115200, "line_ending": "\r" } }
{ "name": "write_and_read", "arguments": { "command": "READ?", "wait_for": "\n", "timeout": 2 } }

______________________________________________________________________

Linux/Raspberry Pi串行控制台(仅限LF)

用户告诉AI的内容:

“以115200bps连接/dev/ttyUSB0(换行仅限LF),请执行uname-a”

AI在内部调用的工具参数(参考):

{ "name": "connect",        "arguments": { "port": "/dev/ttyUSB0", "baudrate": 115200, "line_ending": "\n" } }
{ "name": "write_and_read", "arguments": { "command": "uname -a", "wait_for": "$", "timeout": 5 } }

______________________________________________________________________

监视通信

本服务器为MCP本地服务器stdout专用于JSON-RPC协议是。 通信的观测分为以下3种手段。

┌────────────────────────────────────────────────────┐
│  AI エージェント (VSCode)                           │
│      ↕ stdout/stdin  (JSON-RPC 2.0専用)            │
│  mcp-serial-bridge                                  │
│      ├─ stderr  → VSCode Output パネル              │
│      ├─ logs/serial_YYYYMMDD.log  → 詳細ログ        │
│      └─ logs/rx_stream.log  → RX 生ストリーム       │
└────────────────────────────────────────────────────┘

标题-VScode Output面板

MCP服务器的stderr是VScode的 输出 面板(serial-bridge ),模板名称将采用不同的格式。 所有发送和接收和连接事件都将按方向输出。

[SYS] Connected to /dev/cu.usbserial-110 at 19200 baud
[TX] AT\r
[RX] AT\r\nOK\r\n

特点:由于加入了VScode附加的时间戳,所以在长通信中可能很难看到。

______________________________________________________________________

logs/serial_YYYYMMDD.log —详细日志

将所有TX/RX/SYS事件记录到带时间戳的文件中。 已转义换行符和控制字符,以便以后可以正确跟踪通信过程。

[2026-03-10T12:34:56.123] [SYS] Connected to /dev/cu.usbserial-110 at 19200 baud
[2026-03-10T12:34:57.001] [TX] AT\r
[2026-03-10T12:34:57.089] [RX] AT\r\nOK\r\n

用途:调试、通信步骤的记录等

______________________________________________________________________

logs/rx_stream.log —RX原始流

只将从设备接收到的原始数据在没有时间戳的情况下放入文件追记做。\ (数据转换为UTF-8)

想要实时显示通信内容时:

touch logs/rx_stream.log
tail -f logs/rx_stream.log

如果要捕捉到更多文件:

tail -f logs/rx_stream.log | tee logs/session_$(date +%H%M%S).log

用途:作为纯粹的串行监视器使用·记录设备的输出

工具参考

list_ports

返回当前连接的串行端口列表。 connect 调用之前必须执行并使用 device 请确认名字。

在macOS中,内核内部 /dev/tty.* 除外,应用程序用的 /dev/cu.* 列表框中,此格式对应于条目“无”。

返回值示例:

[
  {
    "device": "/dev/cu.usbserial-110",
    "description": "USB2.0-Serial",
    "hwid": "USB VID:PID=1A86:7523"
  }
]

______________________________________________________________________

connect

串行连接到指定的端口。如果已连接,请安全断开连接,然后重新连接。

引数既定値说明
portstring必须list_ports 获得 device
baudrateint19200通信速度 (bps)
line_ending字符串"\r" 在命令末尾附加的换行代码

line_ending 的选择方法:

值|含义|主要用途| | --- | --- | --- | | "\r" 默认值:嵌入式和传统串行设备 | "\r\n" |CR+LF|Windows系机器・一部分调制解调器或测量器| | "\n" Linux/UNIX壳牌现代设备

连接后变更时 connect 重新运行(write_and_read 中所述修改相应参数的值。

______________________________________________________________________

write_and_read

发送命令,接收并返回响应。事先 connect 中所述修改相应参数的值。

引数既定値说明
command 必需/要发送的命令字符串
wait_for字符串"" 等待该字符串出现在接收中
timeout浮子5.0最大待机时间(秒)
  • wait_for 中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长。
  • 提示字符串(例如: "> ", "OK", "#"),可在机器响应结束之前正确待机。
  • 发送前清除接收缓冲区,因此不会混入前命令的剩余数据。

______________________________________________________________________

技术详细

VScode MCP配置文件

.vscode/mcp.json 包含在存储库中,VScode会自动读取。${workspaceFolder} 变量在VScode运行时展开,因此不需要手动展开路径。

macOS/Linux:

{
  "servers": {
    "serial-bridge": {
      "type": "stdio",
      "command": "${workspaceFolder}/.venv/bin/python",
      "args": ["${workspaceFolder}/src/server.py"]
    }
  }
}

窗户:

{
  "servers": {
    "serial-bridge": {
      "type": "stdio",
      "command": "${workspaceFolder}/.venv/Scripts/python.exe",
      "args": ["${workspaceFolder}/src/server.py"]
    }
  }
}
在Windows上 uv.venv 如果创建后未立即反映,请重新打开VScode集成终端或 MCP:重新启动服务器 重新启动交互渲染。

MCP协议

AI和服务器之间 标准输入上的MCP(JSON-RPC 2.0) 进行动态观察时的轴心点。例如 connect 的调用如下所示。用户不需要写这个JSON。

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "connect",
    "arguments": {
      "port": "/dev/cu.usbserial-10",
      "baudrate": 9600,
      "line_ending": "\r\n"
    }
  }
}

从其他支持MCP的客户端使用

type: stdio 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。VScode的 ${workspaceFolder} 因为不能使用变量绝对路径中所述修改相应参数的值。

Claude Desktop示例 (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "serial-bridge": {
      "command": "/Users/yourname/mcp-serial-bridge/.venv/bin/python",
      "args": ["/Users/yourname/mcp-serial-bridge/src/server.py"]
    }
  }
}

客户机设置文件路径 | --- | --- | | 克劳德桌面版 (macOS)| ~/Library/Application Support/Claude/claude_desktop_config.json | | 克劳德桌面版 (Windows)| %APPDATA%\Claude\claude_desktop_config.json | | 光标 | .cursor/mcp.json 或全局 ~/.cursor/mcp.json |

目录标签

目录标签

开发工具PythonClaude设备控制串行通信本地部署AI集成MCP服务器

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

3

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP