Modbus MCP Server について
産業用 Modbus データを標準化し、コンテキストを付加する MCP サーバーです。AI エージェントを産業用 IoT システムに接続します。産業オートメーション用途を想定し、TCP、UDP、シリアル接続に対応しています。
主な機能
- 01保持レジスタとコイルの読み取りと書き込み
- 02入力レジスタの読み取り
- 03複数の保持レジスタの一括読み取り
- 04TCP、UDP、シリアル接続のサポート
- 05環境変数による接続設定
活用シーン
- 01AI エージェントによる産業機器のレジスタ値の読み取り
- 02自然言語によるコイルの状態切り替え
- 03カスタマイズ可能なプロンプトによるレジスタ値の分析
MCP 対応
read_register や write_coil などのツールと analyze_register プロンプトを通じて、Modbus 機器の読み取りと書き込みを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Modbus MCP サーバー
Modbus データを標準化して文脈化し、AI エージェントと産業用 IoT システムのシームレスな統合を可能にする MCP サーバーです。
特長
- Modbus ツール:
- 保持レジスターの読み取り/書き込み(
read_register、write_register)。 - コイルの読み取り/書き込み(
read_coils、write_coil)。 - 入力レジスターの読み取り(
read_input_registers)。 - 複数の保持レジスターの読み取り(
read_multiple_holding_registers)。
- 保持レジスターの読み取り/書き込み(
- プロンプト:カスタマイズ可能なプロンプトを使って Modbus レジスターの値を分析します(
analyze_register)。 - 柔軟な接続:環境変数を使って設定することで、TCP、UDP、シリアル経由の Modbus に対応します。
要件
- Python:3.10
- 依存関係と仮想環境の管理に使用する uv。
インストール
-
uvをインストールする:curl -LsSf https://astral.sh/uv/install.sh | sh -
リポジトリをクローンする:
git clone https://github.com/kukapay/modbus-mcp.git cd modbus-mcp -
依存関係をインストールする:
uv sync
設定
サーバーは環境変数で指定したパラメーターを使って Modbus デバイスに接続します。これらの変数を .env ファイルまたはシェル環境に設定してください。
環境変数
| 変数 | 説明 | デフォルト | 必須 |
|---|---|---|---|
MODBUS_TYPE | 接続タイプ:tcp、udp、または serial | tcp | はい |
MODBUS_HOST | TCP/UDP のホストアドレス | 127.0.0.1 | TCP/UDP の場合 |
MODBUS_PORT | TCP/UDP のポート | 502 | TCP/UDP の場合 |
MODBUS_DEFAULT_SLAVE_ID | スレーブ ID | 1 | TCP/UDP の場合 |
MODBUS_SERIAL_PORT | シリアルポート(例:/dev/ttyUSB0、COM1) | /dev/ttyUSB0 | シリアルの場合 |
MODBUS_BAUDRATE | シリアルのボーレート | 9600 | シリアルの場合 |
MODBUS_PARITY | シリアルのパリティ:N(なし)、E(偶数)、O(奇数) | N | シリアルの場合 |
MODBUS_STOPBITS | シリアルのストップビット数 | 1 | シリアルの場合 |
MODBUS_BYTESIZE | シリアルのデータビット数 | 8 | シリアルの場合 |
MODBUS_TIMEOUT | シリアルのタイムアウト(秒) | 1 | シリアルの場合 |
.env ファイルの例
TCP の場合:
MODBUS_TYPE=tcp
MODBUS_HOST=192.168.1.100
MODBUS_PORT=502
MODBUS_SLAVE_ID=1
シリアルの場合:
MODBUS_TYPE=serial
MODBUS_SERIAL_PORT=/dev/ttyUSB0
MODBUS_BAUDRATE=9600
MODBUS_PARITY=N
MODBUS_STOPBITS=1
MODBUS_BYTESIZE=8
MODBUS_TIMEOUT=1
使用方法
Claude Desktop へのインストール
設定ファイル:
{
"mcpServers": {
"Modbus MCP Server": {
"command": "uv",
"args": [ "--directory", "/path/to/modbus-mcp", "run", "modbus-mcp" ],
"env": { "MODBUS_TYPE": "tcp", "MODBUS_HOST": "127.0.0.1", "MODBUS_PORT": 502 },
}
}
}
ツールの使用
注:自然言語への対応は、プロンプトを解析してツールに対応付けるクライアントの機能によって異なります。MCP Inspector では構造化された JSON が必要ですが、以下の例では、会話形式の入力がどのように変換されるかを示しています。
-
保持レジスタの読み取り:
- プロンプト:
Modbus 保持レジスタ 0 の値を読み取ってください。 - MCP Inspector の JSON:
{ "tool": "read_register", "parameters": {"address": 0, "slave_id": 1} } - 期待される出力:
Value: <register_value>
- プロンプト:
-
保持レジスタへの書き込み:
- プロンプト:
Modbus 保持レジスタ 10 に値 100 を設定してください。 - MCP Inspector の JSON:
{ "tool": "write_register", "parameters": {"address": 10, "value": 100, "slave_id": 1} } - 期待される出力:
Successfully wrote 100 to register 10
- プロンプト:
-
コイルの読み取り:
- プロンプト:
アドレス 0 から始まる最初の 5 つの Modbus コイルの状態を確認してください。 - MCP Inspector の JSON:
{ "tool": "read_coils", "parameters": {"address": 0, "count": 5, "slave_id": 1} } - 期待される出力:
Coils 0 to 4: [False, False, False, False, False]
- プロンプト:
-
コイルへの書き込み:
- プロンプト:
Modbus コイル 5 をオンにしてください。 - MCP Inspector の JSON:
{ "tool": "write_coil", "parameters": {"address": 5, "value": true, "slave_id": 1} } - 期待される出力:
Successfully wrote True to coil 5
- プロンプト:
-
入力レジスタの読み取り:
- プロンプト:
アドレス 2 から始まる 3 つの Modbus 入力レジスタの値を読み取ってください。 - MCP Inspector の JSON:
{ "tool": "read_input_registers", "parameters": {"address": 2, "count": 3, "slave_id": 1} } - 期待される出力:
Input Registers 2 to 4: [<value1>, <value2>, <value3>]
- プロンプト:
-
複数の保持レジスタの読み取り:
- プロンプト:
Modbus 保持レジスタ 0 から 2 までの値を取得してください。 - MCP Inspector の JSON:
{ "tool": "read_multiple_holding_registers", "parameters": {"address": 0, "count": 3, "slave_id": 1} } - 期待される出力:
Holding Registers 0 to 2: [<value1>, <value2>, <value3>]
- プロンプト:
ライセンス
このプロジェクトは MIT ライセンスのもとで公開されています。詳細は LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。