278 查看 · 2026-07-07 更新
Modbus MCP 服务器
一个标准化和上下文化 Modbus 数据的 MCP 服务器,使 AI 代理能够与工业物联网系统无缝集成。
特性
- 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: bash curl -LsSf https://astral.sh/uv/install.sh | sh -
克隆仓库: bash git clone https://github.com/kukapay/modbus-mcp.git cd modbus-mcp
-
安装依赖: bash uv sync
配置
服务器使用通过环境变量指定的参数连接到 Modbus 设备。在 .env 文件或 shell 环境中设置这些变量。
环境变量
| 变量 | 描述 | 默认值 | 是否必需 |
|---|---|---|---|
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 桌面版安装
配置文件:
json { "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: json { "tool": "read_register", "parameters": {"address": 0, "slave_id": 1} }- 预期输出:
Value: <register_value>
-
-
写入保持寄存器:
-
提示:
将Modbus保持寄存器10设置为值100。
-
MCP Inspector JSON: json { "tool": "write_register", "parameters": {"address": 10, "value": 100, "slave_id": 1} }
-
预期输出:
成功将100写入寄存器10
-
-
读取线圈状态:
-
提示:
检查从地址0开始的前5个Modbus线圈的状态。
-
MCP Inspector JSON: json { "tool": "read_coils", "parameters": {"address": 0, "count": 5, "slave_id": 1} }
-
预期输出:
线圈0到4: [False, False, False, False, False]
-
-
写入线圈:
-
提示:
打开Modbus线圈5。
-
MCP Inspector JSON: json { "tool": "write_coil", "parameters": {"address": 5, "value": true, "slave_id": 1} }
-
预期输出:
成功将True写入线圈5
-
-
读取输入寄存器:
-
提示:
从地址2开始读取3个Modbus输入寄存器的值。
-
MCP Inspector JSON: json { "tool": "read_input_registers", "parameters": {"address": 2, "count": 3, "slave_id": 1} }
-
预期输出:
输入寄存器2到4: [<value1>, <value2>, <value3>]
-
-
读取多个保持寄存器:
-
提示:
获取Modbus保持寄存器0至2的值。
-
MCP Inspector JSON: json { "tool": "read_multiple_holding_registers", "parameters": {"address": 0, "count": 3, "slave_id": 1} }
-
预期输出:
保持寄存器0至2: [<value1>, <value2>, <value3>]
-
许可证
本项目采用MIT许可证。详情请参见LICENSE。
来源
- 来源:github
- 链接:https://github.com/kukapay/mudbus-mcp