mcpField
P
Proxus Industrial MCP Server

Proxus Industrial MCP Server

ローカル
proxus.ioその他0今日更新

Proxus Industrial MCP Server について

Proxus Industrial MCP Server は、Modbus TCP と OPC UA 経由で PLC や産業機器への読み取り専用アクセスを AI アシスタントに提供します。レジスタのデコードや機器マップ、接続診断を備え、機器への書き込みには対応しません。

主な機能

  1. 01Modbus レジスタとビットの読み取り
  2. 02OPC UA ノードの参照と読み取り
  3. 03値の経時監視
  4. 04機器マップによるレジスタのデコード
  5. 05接続とセキュリティの診断
  6. 06機器上でのマップ検証

活用シーン

  1. 01産業機器の測定値の確認
  2. 02レジスタや変数の変化の追跡
  3. 03機器接続のトラブルシューティング
  4. 04機器レジスタマップの検証

MCP 対応

設定済み機器の検出、読み取り、監視、マップ参照、診断を MCP クライアント向けのツールとして公開します。機器へのアクセスはすべて読み取り専用です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"proxusiiotplatform-proxus": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/proxusiiotplatform/proxus-mcp:0.1.0-beta.7"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/proxusiiotplatform/proxus-mcp:0.1.0-beta.7

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/proxusiiotplatform/proxus-mcp:0.1.0-beta.7

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

README の画像 Proxus Industrial MCP Server

Claude Desktop、Cursor、VS Code などの AI アシスタントに、産業用デバイスへの読み取り専用アクセスを提供します。Modbus TCP および OPC UA(Sign または SignAndEncrypt を使用する Basic256Sha256、Aes128_Sha256_RsaOaep、Aes256_Sha256_RsaPss、またはセキュリティなし、匿名ログインまたはユーザー名によるログイン)に対応しています。

AI アシスタントが PLC を読み取り、メーターの値をデコードし、応答しないデバイスを診断します

シミュレートされたデバイスを使った実際のセッションを要約したものです(docs/demo.json)。詳細は proxus.io/tools/industrial-mcp-server をご覧ください。

ツール

ツール内容
list_devices設定済みのデバイス、エンドポイント、ISA-95 パス、接続状態
read_address生のレジスターまたはビット:hr:0、ir:10、coil:5、di:0、または 40001
watch_addressModbus アドレスを 1~60 秒間ポーリングし、値の変化を要約します。任意のバイト順で uint16、int16、uint32、int32、float32 としてデコードできます
decode_registers最大 16 個のレジスターを、一般的な方法で読み取ります:int16/32、uint、ABCD/CDAB/BADC/DCBA のバイト順による float32、両方のワード順による float64
browseOPC UA ノードの子ノード(デフォルト:Objects フォルダー)
read_nodesデータ型、品質、ステータスコード、ソースタイムスタンプを含む、最大 50 個の OPC UA 変数
watch_nodesサブスクリプションを通じて、最大 20 個の OPC UA 変数を 1~60 秒間監視します:すべての変化、および最初、最後、最小、最大、平均
diagnose_connectionデバイスに接続できない原因を、名前、TCP、プロトコルハンドシェイク、セキュリティと証明書、ログイン、テスト読み取り、識別情報、クロックの順に調べ、次に試すことを提示します
find_device_mapベンダー、モデル、または別名でレジスタマップライブラリを検索します。例:PM5560
get_device_mapマップのレジスター(キー、アドレス、型、バイト順、単位、スケール)。検索語で絞り込めます
read_namedデバイスのマップからキーを使ってレジスターを読み取り、単位付きの工学値を返します
verify_device_mapデバイスのマップを実機と照合し、ハードウェア検証レポートを作成します(読み取り専用)

デバイスへの書き込みはできません。

レジスタマップ

レジスタマップを使うと、hr:0-1 がワード順を入れ替えた float だと推測する代わりに、アシスタントは voltage_l1_n を読み取れます。 マップには、デバイスモデルのすべてのレジスターについて、アドレス、データ型、バイト順、スケール(固定値、または SunSpec のスケール係数レジスター)、単位、列挙値の意味と、出典となるベンダー文書が記載されています。バイナリーには、オープンな Modbus Register Maps コレクション(電力量計、電力分析計、ドライブ、インバーター)が含まれています。各リリースには register-maps.json.gz としても添付されています。

Modbus デバイスの設定で、ID またはマップの JSON ファイルのパスを指定して、そのマップを設定します。

"meter-1": { "protocol": "modbus-tcp", "host": "192.168.10.40", "map": "schneider-electric/pm5500-pm5600-pm5700" }

maps_dir では、コレクション内の python3 tools/maps.py build が出力する形式の JSON ファイルが格納されたフォルダーからマップを追加できます(同じ ID の組み込みマップは置き換えられます)。存在しないマップが指定された場合は、その理由を示してサーバーの起動を停止します。マップはアシスタントにレジスターの読み取り方法を伝えるものであり、書き込み方法を伝えるものではありません。read_named は読み取りのみを行います。

実機でマップを検証する

ほとんどのマップはベンダー文書から転記されています。アシスタントにデバイスのマップを検証するよう依頼してください。verify_device_map はすべてのレジスターを 1 回ずつ読み取り(読み取り専用)、値が妥当か(浮動小数点数、周波数、電圧、力率、積算電力量、モデル)を確認し、デバイスの表示と 2 つの値を比較するよう促します。結果はレポートと、マップコレクションに事前入力済みのイシューを作成するリンクです。イシューはご自身の GitHub アカウントから送信し、ボットが検証済みリストに追加します。お客様の操作なしに情報が送信されることはなく、レポートに含まれるのは確認結果のみで、アドレス、ホスト名、シリアル番号は含まれません。

OPC UA のセキュリティ

デバイスごとに security_mode(sign_and_encrypt、sign、または none)と security_policy(Basic256Sha256、 Aes128_Sha256_RsaOaep、または Aes256_Sha256_RsaPss)を設定します。証明書は pki_dir(デフォルトは設定ファイルと同じ場所にある pki/)に、ほとんどの OPC UA ツールで使われる次の構成で保存されます。

フォルダー内容
own/このサーバーのアプリケーション証明書。初回使用時に作成されます(秘密鍵は自分だけが読み取り可能です)
trusted/承認したサーバー証明書
rejected/受信したものの、承認していないサーバー証明書

どちらの方向でも、信頼が自動的に設定されることはありません。

  1. 初回接続時にサーバーの証明書が rejected/ に保存され、ツールは SHA-256 サムプリントを返します。サーバー管理者にサムプリントを確認してから、ファイルを trusted/ に移動します。
  2. サーバーが BadCertificateUntrusted または BadSecurityChecksFailed を返す場合、サーバーはまだこのクライアントを信頼していません。proxus-mcp certificate --config <file> を実行すると、サーバー側で信頼するための、このサーバーの証明書ファイルとサムプリントが表示されます。

パスワードを設定ファイルに記載することはありません。password_env には、パスワードを格納する環境変数名を指定します。エラーには OPC UA StatusCode 名、仕様書の説明、および推奨される次の手順が含まれます。

インストール

お使いのプラットフォーム用のアーカイブを リリース ページからダウンロードして展開し、MCP クライアントから proxus-mcp バイナリを指定します(下記の Claude Desktop を参照)。各アーカイブの隣には .sha256 ファイルがあります。バイナリにはまだコード署名がありません。macOS では展開後に一度 xattr -d com.apple.quarantine proxus-mcp を実行し、Windows では初回起動時に「詳細情報」を選択して「実行」を選びます。

proxus-mcp --version を実行すると、バージョンが表示されます。

Docker
docker run -i --rm -v "$PWD:/config" ghcr.io/proxus-io/proxus-mcp:<version>

このイメージは /config/proxus-mcp.json を読み込み、標準入力/標準出力で MCP 通信を行います。そのため、MCP クライアントではコマンドに docker を指定し、引数に run -i --rm -v <folder>:/config ghcr.io/proxus-io/proxus-mcp:<version> を指定して起動します。ホスト上のデバイスには host.docker.internal からアクセスできます。Linux では、プラントネットワークに直接接続するために --network host を追加します。イメージは linux/amd64 と linux/arm64 向けに公開されています。

ビルド

.NET 10 SDK が必要です。プロトコルドライバーは Proxus.Drivers NuGet パッケージ(Apache-2.0)から取得します。

dotnet publish src/Proxus.Mcp.Server -c Release -r osx-arm64 -o artifacts/osx-arm64

生成されるのは、1 つのネイティブファイル artifacts/osx-arm64/proxus-mcp(約 10 MB)です。

Claude Desktop

claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "proxus": {
      "command": "/absolute/path/to/proxus-mcp",
      "args": ["--config", "/absolute/path/to/proxus-mcp.json"]
    }
  }
}

proxus-mcp.example.json をコピーして、設定のひな形として使用します。

テスト

  • dotnet test tests/Proxus.Mcp.Tests:ユニットテスト。デバイスは不要です。
  • tests/smoke/run_all.sh:公開済みバイナリを Modbus および OPC UA シミュレーターでテストします(tests/smoke/README.md を参照)。
  • CI(.github/workflows/ci.yml)では両方のテストを実行し、linux-x64、linux-arm64、win-x64、osx-arm64 向けの Native AOT バイナリを公開します。

ライセンス

Apache-2.0。LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。