Serial Console MCP: AI for telecom equipment and any serial device について
serial-console-mcpは、AIアシスタントをルーター、無線機などのシリアル機器に接続し、コンソール操作を可能にします。汎用シリアル通信と端末処理に加え、機器プロトコル用のツールを備えています。
主な機能
- 01ポート列挙と複数接続の管理
- 02プロンプトまでの出力読み取り
- 03生バイトとVT100画面の処理
- 04JunosとIOSの操作スキル
- 05CAT、CI-V、GS-232の解析
活用シーン
- 01ルーターの状態確認と設定変更
- 02無線機の周波数やモードの確認・設定
- 03アンテナローテーターの回転と方位確認
- 04BIOS、UPS、実験機器のシリアルメニュー操作
MCP 対応
シリアルポートの検出・接続、入出力、画面表示、セッション記録、プロトコル解析のツールを提供するMCPサーバーです。他のMCPクライアントからstdioで起動できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
30掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
serial-console-mcp
既存のコンソールポートを使って、通信機器の設定をAIで行います。
MIT ライセンス · Python 3.10+ · ステータス:0.3.2、Juniper EX2200 のコンソールで実機検証済み
serial-console-mcp は、Claude などのAI アシスタントを、ネットワークやラジオ局を稼働させる機器、そしてシリアルポートを備えたあらゆる機器のシリアルコンソールに接続します。
- ルーターとスイッチ。 Juniper(Junos)および Cisco(IOS、IOS-XE)のコンソールポートとクラフトポートに対応しています。ログイン、状態の確認、安全策を設けた設定変更(Junos の
commit confirmed、IOS のreload in)、および接続時の状態への復元ができます。 - 無線機。 CI-V 経由の Icom と Xiegu、テキスト CAT プロトコル経由の Kenwood、Yaesu、Elecraft に対応しています。無線機の識別、周波数とモードの読み取りや設定ができます。
- アンテナローテーター。 Yaesu GS-232 と、それに対応する多数のコントローラーに対応しています。方位の読み取り、回転、停止ができます。
- シリアルポートを備えたその他の機器。 通信機器に限定されません。このサーバーは生のバイト列をやり取りし、ANSI 出力を整形したり、VT100/xterm の画面全体を維持したりできるため、IoT ゲートウェイ、警報・入退室管理パネル、UPS や PDU のメニュー、実験機器、産業用コントローラー、Linux や BIOS のコンソール、マイクロコントローラーにも対応します。
やりたいことを自然な言葉で伝えるだけです。アシスタントはこのサーバーを介してコンソールを操作し、Claude Desktop は各手順の承認を求めます。同梱の操作スキルによって、Junos と IOS の基本(プロンプトが示すモード、モードへの入り方と抜け方、日常的な質問への回答に使う show コマンド)を学習できます。
Juniper のサポートは、実機の EX2200 コンソールで検証済みです。Cisco、CI-V、CAT、ローテーターのサポートはベンダーのプロトコル仕様に基づいていますが、この環境ではまだ実機で検証されていません。その他の機器タイプでは、機器固有のヘルパーではなく汎用ツールを使います。
プログラミングの知識は必要ありません。 インストール後は、Claude にいつもどおり話しかけるだけです。
あなた: どのシリアルポートが見えますか? Claude: 2つ見つかりました。1つは COM4 の Silicon Labs CP210x のようです。おそらくお使いのデバイスです。
あなた: COM4 に 9600 ボーで接続してください。 Claude: 接続しました。
あなた: ログインして、バージョンを表示してください。
仕組み(重要なポイント)
シリアルコンソールは、単純な一問一答のチャネルではありません。入力した内容がそのまま返され、通知なしのメッセージ(ログやインターフェースの状態変化)が自動で出力されることがあり、何ページもの出力を返すこともあります。そのため、ポートを開いた時点でバックグラウンドリーダーがデータを継続的に読み取り、バッファーに格納します。これにより Claude は次の操作ができます。
- コマンドを送信する(書き込むだけで、応答の終了を推測しません)。次に、
- プロンプト(
#、>、login:など)が現れるまで読み取ることで、長い応答も途中で切らずに全体を取得する。 - ストリーミング出力や通知なしの出力を取得するため、待機中のデータを読み取る。
これは minicom や expect が使うのと同じ方式で、インタラクティブな CLI を適切に扱えます。
ツール
| ツール | 説明 |
|---|---|
list_serial_ports | 説明と USB ハードウェア ID を含むポート一覧を表示し、ここで開いているポートに印を付けます |
list_presets | デバイスファミリーごとの一般的な設定:Cisco/Juniper/Linux コンソール、全画面コンソール(BIOS、BMC、メニュー)、Kenwood/Elecraft/Yaesu CAT、Icom と Xiegu CI-V、ローテーター、Arduino、NMEA GPS |
connect / reconnect_last / disconnect | 名前でポートを開きます。デフォルトは 9600 8N1、フロー制御なしです。ボーレート、データビット、パリティ、ストップビット、RTS/CTS、XON/XOFF、行末、プロンプトはすべて設定可能で、プリセットから読み込むこともできます。複数のポートを同時に使用できます |
send_keys / screen | 名前で Ctrl-C、Esc、Tab、矢印キー、F キーを押します。全画面コンソール(BIOS、BMC、メニュースイッチ、vi)の VT100/xterm 画面を表示します |
send_text / send_hex | ASCII 行(CR/LF/CRLF/なし)または生の 16 進バイト列を書き込みます。書き込み専用です |
read_until_prompt | バッファー内の出力を、リテラルまたは正規表現のプロンプトまで返し、残りは保持します。auto_reply は --More-- のページを読み進めます |
read_available | テキストと 16 進数で、到着済みのデータを返します |
query_text | バッファーをクリアして送信し、プロンプトが表示されるか、行がアイドル状態になるまで読み取ります |
expect | 1 回の呼び出しで、送信と待機を行うステップをスクリプト化したリストです。ログインやコマンドシーケンスに使用します |
set_lines / pulse_line / send_break | DTR と RTS を制御します(PTT、Arduino のリセット)。BREAK を送信します |
capture_start / capture_stop / get_transcript | セッションをファイルに記録します(生データ、またはタイムスタンプ付き TX/RX)。ローリングトランスクリプトを再読み込みします |
port_in_use_by / detect_baud | ポートを使用中のプログラムを確認します。読み取り可能なテキストが得られるボーレートを確認します |
cat_build / cat_parse | Kenwood、Elecraft、Yaesu の ; コマンド:周波数設定の作成、ID、FA、MD、IF、エラー応答のデコード |
civ_build / civ_parse / civ_freq | Icom CI-V フレーム:作成、デコード(エコーと応答、BCD 周波数、モード、PTT)、変換 |
rotator_build / rotator_parse | GS-232 ローテーターコマンド(読み取り、移動、停止、速度)と位置応答 |
clear_buffer / status | 管理機能です。status は、制御線の状態とともに開いているすべてのポートを表示します |
ポートは名前(「rig」、「rotator」)で開きます。ツールはデフォルトで、最後に
使用したポートを使います。各接続にはターミナルモードがあります。dumb(生バイト、デフォルト)、
ansi(色とエスケープシーケンスを除去し、CR/バックスペースによる上書きを適用します。
デバイスがスペースとバックスペースで画面を書き直した後も、表示どおりの行で
プロンプトを照合します。コンソールプリセットで使用)、または
xterm/vt100(screen で読み取れる実際の画面です。
pip install 'serial-console-mcp[screen]' が必要です。デスクトップ拡張機能には含まれています)。受信バッファーは
ポートごとに 4 MB に制限されています。デバイスのストリームを何時間も読み取らずにいると、
古いバイト列が破棄され、その数が status に表示されます。
操作スキル
skills/ にある 3 つのスキルファイルは、fldigi-mcp のスキルと同じように、
エージェントに操作上の規律を教えます。これらを ~/.claude/skills/ またはプロジェクトの
.claude/skills/ にコピーしてください。
| スキル | 内容 |
|---|---|
serial-console | コンソールのモデル、6 つのルール、ターミナルモード、キー、プリセット |
junos-operating | プロンプトから判別する Junos のモード(% シェル、> 運用、# 設定)、BSD シェルからの脱出と復帰、configure exclusive、show | compare、commit confirmed、rollback、cli -c と start shell、EX2200 で確認済みのヘルスおよびインターフェース表示コマンド(show chassis routing-engine、show interfaces terse/brief) |
ios-operating | IOS のモード(>、#、(config)#)、enable/configure terminal/end、安全策としての reload in 10、write memory、日常的な表示コマンド(show ip interface brief、show processes cpu sorted) |
環境変数
| 変数 | 効果 |
|---|---|
SERIAL_CONSOLE_READ_ONLY=1 | 読み取り形式のコマンド(show、ID;、CI-V の読み取り)を除く書き込みを拒否し、制御線の変更も拒否します |
SERIAL_CONSOLE_ALLOW=<regex> | 読み取り専用の許可リストを上書きします |
SERIAL_CONSOLE_IDLE_MINUTES=15 | 指定した時間アイドル状態のポートを自動的に閉じます(デフォルト:無効) |
サーバーの設定を claude_desktop_config.json の "env" の下に設定します。
インストール
- リリースページから
serial-console-mcp.mcpbをダウンロードします。 同じファイルを Mac、Windows、Linux で使用できます。 - Claude Desktop で Settings → Extensions → Advanced settings → Install Extension… に進み、ファイルを選択します。短い設定フォームで読み取り専用モードとアイドルタイムアウトを設定できます。どちらも有効にしない限りオフです。
- 新しいチャットで、**「どのシリアルポートが見えますか?」**と入力します。Claude がポートを一覧表示したら完了です。
ターミナルも、Python も、手動で設定する項目もありません。
0.3.x の .pkg または .exe インストーラーからアップグレードしますか? Claude Desktop がサーバーを 2 つ起動しないように、まず古いコピーを削除してください。Mac では次のコマンドを実行します。
"/Library/Application Support/SerialConsoleMCP/serial-console-mcp" configure --remove
sudo rm -rf "/Library/Application Support/SerialConsoleMCP"
Windows では、Settings → Apps で Serial Console MCP をアンインストールします。その後、Claude Desktop を終了して再起動します。
PyPI からのインストール
Python 3.10 以降と uv または pipx がすでにインストールされている場合は、拡張機能を使わずにインストールできます。
uvx serial-console-mcp --version # fetches and runs it
uvx serial-console-mcp configure --command uvx --arg serial-console-mcp
または
pipx install serial-console-mcp
serial-console-mcp configure --command "$(which serial-console-mcp)"
configure は claude_desktop_config.json に serial-console エントリーを書き込みます(既存の設定とマージし、最初に古いファイルをバックアップします)。
Claude Desktop を終了して再起動します。serial-console-mcp configure --remove で設定を元に戻せます。他の MCP クライアントも、stdio 経由で同じコマンドを起動できます。
ソースからのインストール(開発者向け)
git clone https://github.com/sbrunner-atx/serial-console-mcp.git
cd serial-console-mcp
uv sync # or: python3 -m venv .venv && . .venv/bin/activate && pip install -e . pytest
uv run pytest # fake serial port, no hardware needed
uv run serial-console-mcp configure --command "$PWD/.venv/bin/serial-console-mcp"
パッケージは src/serial_console_mcp/ にあります。server.py は MCP サーバー、configure.py は Claude Desktop の登録スクリプトです。manifest.json はデスクトップ拡張機能を記述するファイルで、npx @anthropic-ai/mcpb pack でビルドできます。BUILD.md では、提供終了となった .pkg および .exe インストーラーについて説明しています。
使い方
自然な言葉で依頼できます。例:
- 「シリアルポートを一覧表示して。」
- 「/dev/cu.usbserial-10 のコンソールに 9600 ボーで接続して。」
- 「/dev/cu.BLTH に 38400 ボー、データビット 8、パリティなし、ストップビット 1、XON/XOFF フロー制御で接続して。」
- 「kenwood-cat プリセットを使って Kenwood に接続し、rig という名前を付けて。もう一方のポートでローテーターに接続して。」
- 「admin としてログインして show version を実行して」(
expectを 1 回呼び出し:復帰、ログイン、パスワード、コマンド)。 - 「この機器のボーレートはいくつ?」(
detect_baud)。 - 「rig のキーを 2 秒間押して」(確認後に
pulse_line("RTS", 2000))。 - 「IC-7300 に周波数を問い合わせて」(
civ_build、send_hex、read_available、civ_parse)。 - 「TS-590 は何にチューニングされている?」(
query_text("FA;")、cat_parse)。 - 「ローテーターを 45 度に回して確認して」(
rotator_build、query_text、rotator_parse)。 - 「このコンソールセッションをファイルに記録して。」
- 「Ctrl-C を送って。ping がまだ実行中だから。」(
send_keys) - 「BIOS コンソールを 115200 で開いて画面を見せて。2 行下に移動して Enter を押して。」(
screen-consoleプリセット、screen、send_keys) - 「前回と同じポートに再接続して。」(接続を記憶しています)
- 「復帰を送ってから、ログインプロンプトが表示されるまで読み取って。」
- 「admin としてログインして
show interfaces terseを実行し、全件を表示して。」 - 「今、デバイスが出力しているものをそのまま読み取って。」
- 「終わったら切断して。」
ルーターやスイッチのコンソールでは、待機するプロンプトを Claude に伝えてください(多くの場合、特権モードでは # 、ユーザーモードでは > )。Claude はそのプロンプトを検出するまで読み取ります。Icom の無線機(CI-V)では、Claude に伝えてください。無線機が必要とする 16 進数コマンドを送信できます。
うまく動作しない場合
「シリアルポートが見つかりません。」
- デバイスの電源は入っていますか?
- USB ケーブルは充電専用ではなく、データ通信に対応したケーブルですか?(よくある見落としです。)
- Windows の場合は、デバイス マネージャーを開き、**ポート(COM と LPT)**を確認してください。何も表示されない場合は、ケーブルのドライバー(多くの場合、FTDI、CP210x、または CH340)が必要です。
「ポートを開けませんでした」/「アクセスが拒否されました。」
- シリアルポートを使用できるプログラムは一度に 1 つだけです。ターミナル(PuTTY/minicom/screen)、WSJT-X、コンテスト用ログソフト、デバイス付属のソフトウェアなど、ポートを使用している可能性のあるものをすべて終了してください。
Claude がシリアルポートにまったくアクセスできないと言います。
- インストール後、Claude Desktop を完全に終了してから再起動したことを確認してください。
- 新しいチャットを開始し、「どのシリアルポートが見えますか?」ともう一度尋ねてください。
接続できましたが、コマンドを送っても応答がありません。
- ほとんどの場合、ボーレートか、機器に適した行末文字が正しくありません。Unix 系のコンソールでは通常、改行(LF)を使い、無線機では通常、復帰(CR)を使います。Claude にまず復帰を送信して、新しいプロンプトを表示するよう頼んでください。
安全性について
このツールは、あなたが(Claude を通じて)送信するよう指示した内容を、ケーブルで接続されているデバイスにそのまま送信します。Claude Desktop ではツール呼び出しごとに承認を求められるため、実行前にすべてのコマンドを確認できます。内容をよく読んでください。ルーターや無線機のコンソールセッションでは、設定変更、再起動、送信が行われる可能性があります。このサーバーは、どのコマンドが危険かを推測しません。問題がありそうな場合は拒否し、アシスタントに入力させたくない操作には、実際のターミナルを使ってください。
ライセンス
MIT。LICENSEを参照してください。
73!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。