Proxus Industrial MCP Server

io.github.proxusiiotplatform由 GitHub 账号 proxusiiotplatform 发布v0.1.0-beta.7更新于 Oct 31, 2026

Read-only Modbus TCP and OPC UA access to PLCs and industrial devices, with connection diagnostics

概览

AI 生成的概览

以只读方式通过 Modbus TCP 和 OPC UA 访问 PLC 与工业设备,并提供连接诊断和寄存器映射。

可以做什么
  • 列出已配置设备及其端点、ISA-95 路径和连接状态
  • 读取 Modbus 原始寄存器与位,并在 1–60 秒内轮询某地址观察其变化
  • 按常见字节序将最多 16 个寄存器解码为 int、uint、float32 或 float64
  • 浏览 OPC UA 节点,读取或监视最多 50 个变量及其类型、质量、状态码和时间戳
  • 逐步诊断设备无法连接的原因,并给出下一步建议
  • 查找、查看并校验寄存器映射,按名称读取带单位的工程值
适用场景
适合需要让助手通过 Modbus TCP 或 OPC UA 查看 PLC、电表、变频器或逆变器实时数值,或排查设备无法连接的场景,且完全不必担心写入现场设备。
运行要求
作为本地进程运行:使用发布页的平台二进制文件或已发布的容器镜像,由 MCP 客户端带配置文件路径启动。需要一份列出设备(主机、协议、可选映射)的 JSON 配置,并能通过网络访问这些设备。OPC UA 需要存放证书的 PKI 目录;密码通过 password_env 指定的环境变量提供。
安装前请注意
设计上为只读,无法向设备写入。OPC UA 信任从不自动建立,需先与服务器管理员核对证书指纹,再把文件移入 trusted。密码不得写入配置文件,只能放在 password_env 指定的环境变量中。二进制文件尚未代码签名,macOS 和 Windows 首次运行需手动放行。映射校验只生成报告和预填的 issue 链接,由你自行提交,不会自动发送。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Proxus Industrial MCP Server,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[图片] Proxus Industrial MCP Server

Gives AI assistants such as Claude Desktop, Cursor and VS Code read-only access to industrial devices. Supports Modbus TCP and OPC UA (Basic256Sha256, Aes128_Sha256_RsaOaep or Aes256_Sha256_RsaPss with Sign or SignAndEncrypt, or unsecured; anonymous or user-name login).

[An AI assistant reads a PLC, decodes a meter value and diagnoses a device that does not answer]

Condensed from a real session against simulated devices (docs/demo.json). More at proxus.io/tools/industrial-mcp-server.

Tools

ToolWhat it does
list_devicesConfigured devices, endpoint, ISA-95 path, connection state
read_addressRaw registers or bits: hr:0, ir:10, coil:5, di:0 or 40001
watch_addressPolls a Modbus address for 1–60 s and summarises how it moved, decoded as uint16, int16, uint32, int32 or float32 in any byte order
decode_registersUp to 16 registers read every common way: int16/32, uint, float32 in ABCD/CDAB/BADC/DCBA, float64 in both word orders
browseChildren of an OPC UA node (default: Objects folder)
read_nodesUp to 50 OPC UA variables with data type, quality, status code and source timestamp
watch_nodesWatches up to 20 OPC UA variables for 1–60 s through a subscription: every change, plus first, last, min, max and average
diagnose_connectionWhy a device can't be reached: name, TCP, protocol handshake, security and certificates, login, a test read, identity and clock, step by step with the next thing to try
find_device_mapSearches the register map library by vendor, model or alias, e.g. PM5560
get_device_mapA map's registers (key, address, type, byte order, unit, scale), filtered by a search word
read_namedReads registers by key from the device's map and returns engineering values with units
verify_device_mapChecks the device's map against the real device and prepares a hardware verification report (read-only)

Nothing can write to a device.

Register maps

With a register map the assistant reads voltage_l1_n instead of guessing that hr:0-1 is a word-swapped float. A map lists every register of a device model: address, data type, byte order, scale (fixed, or a SunSpec scale-factor register), unit and the meaning of enumerated values, with the vendor document it comes from. The binaries include the open Modbus Register Maps collection (energy meters, power analysers, drives, inverters); each release also attaches it as register-maps.json.gz.

Give a Modbus device its map in the configuration, by id or as the path of a map's JSON file:

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

maps_dir adds maps (or replaces built-in ones with the same id) from a folder of JSON files, as python3 tools/maps.py build in the collection writes them. A map that does not exist stops the server at start-up with the reason. Maps tell the assistant how to read a register, never to write one: read_named only reads.

Verify a map on your device

Most maps are transcribed from vendor documents. Ask your assistant to verify the device's map: verify_device_map reads every register once (read-only), checks that the values are plausible (floats, frequency, voltage, power factor, energy counters, model) and asks you to compare two values with the device's display. The result is a report and a link that opens a prefilled issue in the map collection; you submit it under your own GitHub account, and a bot adds you to the map's verified list. Nothing is sent without you, and the report holds check results only, no addresses, host names or serial numbers.

OPC UA security

Set security_mode (sign_and_encrypt, sign or none) and security_policy (Basic256Sha256, Aes128_Sha256_RsaOaep or Aes256_Sha256_RsaPss) per device. Certificates live in pki_dir (default pki/ next to the configuration file), in the layout most OPC UA tools use:

FolderHolds
own/This server's application certificate, created on first use (private key readable only by you)
trusted/Server certificates you approved
rejected/Server certificates seen but not approved

Trust is never automatic, in either direction:

  1. On the first connection the server's certificate lands in rejected/ and the tool answers with its SHA-256 thumbprint. Confirm the thumbprint with the server's administrator, then move the file to trusted/.
  2. If the server answers BadCertificateUntrusted or BadSecurityChecksFailed, it has not trusted this client yet. proxus-mcp certificate --config <file> prints this server's certificate file and thumbprint to trust on the server.

Passwords never go in the configuration file: password_env names the environment variable that holds them. Errors carry the OPC UA StatusCode name, the specification's description and a suggested next step.

Install

Download the archive for your platform from the releases page, unpack it, and point your MCP client at the proxus-mcp binary (see Claude Desktop below). Each archive has a .sha256 file next to it. The binaries are not code-signed yet: on macOS run xattr -d com.apple.quarantine proxus-mcp once after unpacking, and on Windows choose "More info, Run anyway" the first time.

proxus-mcp --version prints the version.

Docker

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

The image reads /config/proxus-mcp.json and speaks MCP over stdin/stdout, so an MCP client starts it with docker as the command and run -i --rm -v <folder>:/config ghcr.io/proxus-io/proxus-mcp:<version> as the arguments. Devices on the host are reachable as host.docker.internal; on Linux add --network host to reach the plant network directly. Images are published for linux/amd64 and linux/arm64.

Build

Needs the .NET 10 SDK. The protocol drivers come from the Proxus.Drivers NuGet packages (Apache-2.0).

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

The result is one native file, artifacts/osx-arm64/proxus-mcp (about 10 MB).

Claude Desktop

Add to claude_desktop_config.json:

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

Copy proxus-mcp.example.json as a starting configuration.

Tests

  • dotnet test tests/Proxus.Mcp.Tests: unit tests, no devices needed.
  • tests/smoke/run_all.sh: the published binary against Modbus and OPC UA simulators (see tests/smoke/README.md).
  • CI (.github/workflows/ci.yml) runs both and publishes Native AOT binaries for linux-x64, linux-arm64, win-x64 and osx-arm64.

Licence

Apache-2.0, see LICENSE.

来源:README.md,提交 362a7a4

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:该软件包类型无法在沙箱中运行。

版本历史

2
  1. v0.1.0-beta.7最新Oct 31, 2026
  2. v0.1.0-beta.5Oct 30, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分