modbus-mcp

MIT License
  • Linux
  • Apple

Integrations

  • Uses environment variables specified in a .env file for configuration of Modbus connection parameters.

Modbus MCP サーバー

Modbus データを標準化およびコンテキスト化し、AI エージェントと産業用 IoT システムのシームレスな統合を可能にする MCP サーバー。

特徴

  • Modbus ツール:
    • 読み取り/書き込み保持レジスタ ( read_registerwrite_register )。
    • 読み取り/書き込みコイル ( read_coilswrite_coil )。
    • 入力レジスタを読み取ります ( read_input_registers )。
    • 複数の保持レジスタを読み取ります ( read_multiple_holding_registers )。
  • プロンプト: カスタマイズ可能なプロンプト ( analyze_register ) を使用して Modbus レジスタ値を分析します。
  • 柔軟な接続: 環境変数を介して構成された TCP、UDP、またはシリアル経由の Modbus をサポートします。

要件

  • Python : 3.10
  • 依存関係と仮想環境の管理のためのuv

インストール

  1. uvをインストールします:
    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. リポジトリのクローンを作成します:
    git clone https://github.com/kukapay/modbus-mcp.git cd modbus-mcp
  3. 依存関係をインストール:
    uv sync

構成

サーバーは、環境変数で指定されたパラメータを使用してModbusデバイスに接続します。これらの変数は、 .envファイルまたはシェル環境で設定してください。

環境変数

変数説明デフォルト必須
MODBUS_TYPE接続タイプ: tcpudp 、またはserialtcpはい
MODBUS_HOSTTCP/UDPのホストアドレス127.0.0.1TCP/UDPの場合
MODBUS_PORTTCP/UDPのポート502TCP/UDPの場合
MODBUS_SERIAL_PORTシリアルポート(例: /dev/ttyUSB0COM1/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_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インスペクターでは構造化されたJSONが必要ですが、以下の例は会話型入力がどのように翻訳されるかを示しています。

  1. 保有台帳の読み取り:
    • プロンプト
      Please read the value of Modbus holding register 0.
    • MCP インスペクター JSON :
      { "tool": "read_register", "parameters": {"address": 0} }
    • 予想される出力: Value: <register_value>
  2. 保留レジスタへの書き込み:
    • プロンプト
      Set Modbus holding register 10 to the value 100.
    • MCP インスペクター JSON :
      { "tool": "write_register", "parameters": {"address": 10, "value": 100} }
    • 期待される出力: Successfully wrote 100 to register 10
  3. 読み取りコイル:
    • プロンプト
      Check the status of the first 5 Modbus coils starting at address 0.
    • MCP インスペクター JSON :
      { "tool": "read_coils", "parameters": {"address": 0, "count": 5} }
    • 予想される出力Coils 0 to 4: [False, False, False, False, False]
  4. コイルに書き込む:
    • プロンプト
      Turn on Modbus coil 5.
    • MCP インスペクター JSON :
      { "tool": "write_coil", "parameters": {"address": 5, "value": true} }
    • 期待される出力: Successfully wrote True to coil 5
  5. 入力レジスタの読み取り:
    • プロンプト
      Read the values of 3 Modbus input registers starting from address 2.
    • MCP インスペクター JSON :
      { "tool": "read_input_registers", "parameters": {"address": 2, "count": 3} }
    • 予想される出力: Input Registers 2 to 4: [<value1>, <value2>, <value3>]
  6. 複数の保持レジスタの読み取り:
    • プロンプト
      Get the values of Modbus holding registers 0 through 2.
    • MCP インスペクター JSON :
      { "tool": "read_multiple_holding_registers", "parameters": {"address": 0, "count": 3} }
    • 予想される出力: Holding Registers 0 to 2: [<value1>, <value2>, <value3>]

ライセンス

このプロジェクトはMITライセンスの下でライセンスされています。詳細はライセンスをご覧ください。

-
security - not tested
A
license - permissive license
-
quality - not tested

モドバスMCP

  1. Features
    1. Requirements
      1. Installation
        1. Configuration
          1. Environment Variables
          2. Example .env File
        2. Usage
          1. Installing for Claude Desktop
          2. Using Tools
        3. License

          Related MCP Servers

          View all related MCP servers

          ID: sgp6ly1fkx