Modbus MCP Server
项目简介
- 这是一个基于 MCP 的服务器实现,旨在将 Modbus 设备数据和控制能力以标准化的方式暴露给 LLM 客户端,便于AI驱动的自动化工作流在 BAS/ICS 环境中进行数据获取和设备控制。
主要功能点
- 资源(Resources):通过资源模板将 Modbus 寄存器与设备信息映射为可访问的资源,LLM 可以读取数据。
- 工具(Tools):提供对 Modbus 读写、掩码写等操作的工具接口,LLM 可以调用这些工具执行实际的设备操作。
- 提示(Prompts):内置帮助和错误处理提示,帮助引导对话与交互,提升鲁棒性。
- 安全与认证:可选使用 AuthKit Provider 实现基于 Web 的认证(在环境变量配置域和回调 URL 时开启)。
- 健康检查路由:实现一个健康检查端点,便于运维探测服务器就绪情况。
- 与 Modbus TCP 设备的实际通信:通过 pymodbus 的异步 TCP 客户端与现场设备进行交互,返回文本格式的结果。
安装步骤
- 确保环境中已安装 Python 3.9+。
- 安装所需依赖(示例,实际包管理请参考项目的安装文档):pip 安装 fastmcp、pymodbus、pydantic 等依赖。
- 安装或进入项目目录后,安装本服务:
- 直接安装发布包(如果有发布版)或使用源码安装方式。
- 启动服务器(示例方式,实际可使用 CLI 或直接在应用中运行):
- 可以直接通过 CLI 启动:modbus-mcp
- 或在代码中通过 ModbusMCP 实例启动,指定传输协议为 HTTP/Streamable HTTP 等。
服务器配置
以下配置用于 MCP 客户端连接到该 Modbus 服务器的最小必要信息,格式为 JSON,包含服务器名称、启动命令及参数,便于客户端在启动时进行连接。请注意,MCP 客户端本身不需要包含实现细节,只需要知道服务器的启动信息即可。
{ "server_name": "Modbus MCP Server", "command": "modbus-mcp", "args": [ "--host", "127.0.0.1", "--port", "8000" ] }
说明:
- server_name:服务器在环境中的唯一标识,与代码中 FastMCP 初始化时的名称保持一致,便于管理和监控。
- command:启动服务器的可执行命令或入口点,在本仓库实现中对应的是 CLI 命令 modbus-mcp。
- args:启动服务器时的参数,包含监听地址与端口等信息,确保 MCP 客户端能够连接到服务器提供的通信端口。
基本使用方法
- 启动后,服务器将对外暴露资源、工具和提示接口,LLM 客户端可以调用资源读取寄存器、执行写操作等。
- 如需对某一设备进行指定寄存器的读取或写入,请按照 MCP 客户端的调用规范进行参数传递(例如主机、端口、单元号、寄存器地址等)。
- 可选启用认证,若需要在生产环境中进行鉴权,请在环境变量中配置 AuthKit 的域名和回调地址,并提供相应的凭据。
- 可通过 MCP Inspector 等工具对服务器的资源、工具、提示等进行浏览和交互。