mcp-serial-bridge
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., "@mcp-serial-bridgeList serial ports, connect to /dev/ttyUSB0 at 115200 baud, and run uname -a"
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.
mcp-serial-bridge
シリアル通信を介して外部デバイスを操作するための MCP(Model Context Protocol)サーバーです。
AI エージェントが list_ports / connect / write_and_read の 3 ツールを通じてシリアルポートを直接制御できます。
モデム、計測器、組み込みボード、レトロコンピュータなど、シリアルインタフェースを持つあらゆる機器を対象にできます。
前提
ローカル MCP サーバー: このサーバーはユーザーのマシン上でローカルプロセスとして動作します。クラウドやリモートでの動作は想定していません。シリアルポートに物理的にアクセスできる PC 上で実行してください。
Visual Studio Code (VSCode) + GitHub Copilot: MCP クライアントとして VSCode(GitHub Copilot Agent モード)を使用することを前提としています。他の MCP 対応クライアントからも利用できますが、本ドキュメントの手順は VSCode を基準に記載しています。
Related MCP server: Serial MCP Server
動作要件
Python 3.11 以上
macOS / Windows / Linux
セットアップ
git clone https://github.com/46nori/mcp-serial-bridge.git
cd mcp-serial-bridgeuv を使う場合(推奨)
macOS / Linux:
# uv のインストール(未インストールの場合)
curl -LsSf https://astral.sh/uv/install.sh | shWindows (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 syncvenv + 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: Restart Server を実行すると serial-bridge が利用可能になります。
設定ファイルの詳細は技術詳細を参照してください。
使用例
ユーザーはツールを直接呼び出しません。 AI エージェント(GitHub Copilot)に自然言語で指示を出すと、AI が必要なツールを判断して順番に呼び出します。
操作の流れ:
ユーザー → 自然言語で指示 → AI エージェント → MCP ツール → シリアルデバイス結果は AI の返答としてチャットに表示されます。
汎用 AT コマンド機器(モデム・Wi-Fi モジュールなど)
ユーザーが AI に伝える内容:
「シリアルポートを確認して、AT コマンドデバイスに 9600bps・改行コード CR+LF で接続し、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 に伝える内容:
「COM3 に 115200bps で接続して(改行は 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 に伝える内容:
「/dev/ttyUSB0 に 115200bps で接続して(改行は 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 生ストリーム │
└────────────────────────────────────────────────────┘stderr — VSCode Output パネル
MCP サーバーの stderr は VSCode の Output パネル(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
指定したポートにシリアル接続します。すでに接続中の場合は安全に切断してから再接続します。
引数 | 型 | 既定値 | 説明 |
| string | 必須 |
|
| int |
| 通信速度 (bps) |
| string |
| コマンド末尾に付加する改行コード |
line_ending の選び方:
値 | 意味 | 主な用途 |
| CR only(既定) | 組み込み機器・レガシーシリアル機器 |
| CR+LF | Windows 系機器・一部のモデムや計測器 |
| LF only | Linux/UNIX シェル・現代的な機器 |
接続後に変更する場合は connect を再実行してください(write_and_read に個別指定はできません)。
write_and_read
コマンドを送信し、応答を受信して返します。事前に connect が必要です。
引数 | 型 | 既定値 | 説明 |
| string | 必須 | 送信するコマンド文字列 |
| string |
| この文字列が受信に現れるまで待機 |
| float |
| 最大待機時間(秒) |
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"]
}
}
}Windows:
{
"servers": {
"serial-bridge": {
"type": "stdio",
"command": "${workspaceFolder}/.venv/Scripts/python.exe",
"args": ["${workspaceFolder}/src/server.py"]
}
}
}Windows で
uvや.venvを作成した直後に反映されない場合は、VSCode の統合ターミナルを開き直すか MCP: Restart Server を再実行してください。
MCP プロトコル
AI とサーバー間は MCP (JSON-RPC 2.0) over stdio で通信します。たとえば connect の呼び出しは以下のような JSON になります。ユーザーがこの 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 に対応した任意の MCP クライアントから利用できます。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"]
}
}
}クライアント | 設定ファイルのパス |
Claude Desktop (macOS) |
|
Claude Desktop (Windows) |
|
Cursor |
|
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI assistants to communicate with serial port devices, supporting port management, data transmission in text/binary modes, interactive terminal sessions, and automatic reconnection.Last updated1411MIT
- AlicenseAqualityDmaintenanceEnables LLMs to communicate with hardware devices via serial ports. Provides tools for listing ports, opening/closing connections, reading/writing data, and controlling serial signals.Last updated8MIT
- AlicenseAqualityCmaintenanceAllows AI agents to interact with serial devices via RS232/UART, enabling port listing, connection, read/write, control line manipulation, and protocol specification for automated debugging and testing.Last updated2713MIT
- Alicense-qualityCmaintenanceEnables AI agents to communicate with UART/serial devices, offering tools for port management, data read/write, and protocol handling.Last updatedMIT
Related MCP Connectors
Give AI agents real phone numbers, messages, and voice calls via MCP.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/46nori/mcp-serial-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server