Modbus MCP 服务器
MCP 服务器可标准化和情境化 Modbus 数据,从而实现 AI 代理与工业物联网系统的无缝集成。
特征
- Modbus工具:
- 读/写保持寄存器(
read_register
, write_register
)。 - 读/写线圈(
read_coils
, write_coil
)。 - 读取输入寄存器(
read_input_registers
)。 - 读取多个保持寄存器(
read_multiple_holding_registers
)。
- 提示:使用可自定义的提示(
analyze_register
)分析 Modbus 寄存器值。 - 灵活的连接:支持通过 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
- 安装依赖项:
配置
服务器使用通过环境变量指定的参数连接到 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_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_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,但以下示例展示了对话输入的翻译方式。
- 读取保持寄存器:
- 迅速的:
Please read the value of Modbus holding register 0.
- MCP 检查器 JSON :
{
"tool": "read_register",
"parameters": {"address": 0}
}
- 预期输出:
Value: <register_value>
- 写入保持寄存器:
- 迅速的:
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
- 读取线圈:
- 迅速的:
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]
- 写入线圈:
- 迅速的:
- MCP 检查器 JSON :
{
"tool": "write_coil",
"parameters": {"address": 5, "value": true}
}
- 预期输出:
Successfully wrote True to coil 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>]
- 读取多个保持寄存器:
- 迅速的:
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 许可证。详情请参阅许可证。