README
🚀 IoT/Edge MCP Server
这是一款适用于工业物联网、边缘计算和自动化领域的模型上下文协议(MCP)服务器。 它能将工业基础设施转变为可由人工智能协调的系统,通过 HTTP 端点提供 11 种强大工具,实现对物联网、数据采集与监控系统(SCADA)和可编程逻辑控制器(PLC)的全面控制。非常适合由人工智能驱动的工业自动化、预测性维护和智能工厂运营。
✨ 主要特性
-
🏭 多协议支持 - 为工业系统提供统一接口:
- MQTT:用于无线物联网传感器和执行器
- Modbus TCP/RTU:用于 PLC 和工业设备
- 与 InfluxDB 集成,处理时间序列数据
- 与 Redis 集成,实现实时缓存
- 支持模拟模式,无需硬件即可进行测试
-
📊 全面的传感器管理 - 监控和分析工业数据:
- 实时传感器读数(温度、压力、流量等)
- 历史数据及聚合统计(均值、最大值、最小值)
- 多传感器批量操作
- 质量指标和信号监控
-
⚡ 执行器控制 - 控制工业设备:
- 阀门控制(打开/关闭)
- 电机管理(启动/停止/调速)
- 泵操作
- PLC 寄存器操作
-
🚨 报警系统 - 企业级监控:
- 多优先级报警(低、中、高、严重)
- 自动阈值监控
- 报警确认跟踪
- 实时通知
-
🔒 生产特性 - 企业就绪:
- 命令安全的速率限制
- 全面的错误处理
- 连接池和自动重连
- 完整的审计日志
- 线程安全操作
🚀 快速开始
安装
# 克隆仓库
git clone https://github.com/llm-use/iot-mcp-server.git
cd iot-mcp-server
# 安装依赖
pip install -r requirements.txt
# 若无需硬件进行测试,使用模拟模式
pip install -r requirements-sim.txt
启动服务器
选项 1:模拟模式(无需硬件)
python IoT_mcp_sim.py
选项 2:生产模式(使用真实硬件)
# 在 iot_config.yaml 中配置设备
# 启动所需服务(MQTT、InfluxDB、Redis)
docker-compose up -d
# 启动服务器
python IoT_mcp.py
服务器将在 http://localhost:8000 启动。
💻 使用示例
基础用法
#!/usr/bin/env python3
import asyncio
from polymcp.polyagent import UnifiedPolyAgent, OllamaProvider
async def main():
# 初始化大语言模型(LLM)提供者
llm = OllamaProvider(model="gpt-oss:120b-cloud", temperature=0.1)
# 连接到 IoT MCP 服务器
agent = UnifiedPolyAgent(
llm_provider=llm,
mcp_servers=["http://localhost:8000/mcp"],
verbose=True
)
async with agent:
print("✅ IoT MCP Server 已连接!\n")
# 与 AI 聊天以控制工业系统
while True:
user_input = input("\n🏭 你: ")
if user_input.lower() in ['exit', 'quit']:
break
result = await agent.run_async(user_input, max_steps=5)
print(f"\n🤖 系统: {result}")
if __name__ == "__main__":
asyncio.run(main())
示例命令
连接成功后,你可以向 AI 代理发出以下请求:
- "检查所有温度传感器的状态,并报告任何异常情况"
- "过去 6 小时内,1 号水箱的平均压力是多少?"
- "打开主阀门并启动 1 号泵"
- "显示所有未确认的严重报警"
- "如果温度超过 50°C,启动冷却系统"
- "生成一份包含关键指标的班次结束报告"
- "监控振动传感器,若超出正常范围则发出警报"
- "通过分析电机使用模式优化能源消耗"
就是这么简单! PolyMCP 可以处理以下所有复杂任务:
- 工具发现和选择
- 多步骤工业流程自动化
- 实时监控和警报
- 复杂决策逻辑实现
📡 API 端点
服务器启动后,你可以访问以下内容:
- API 文档:
http://localhost:8000/docs - 列出所有工具:
http://localhost:8000/mcp/list_tools - 调用工具:
POST http://localhost:8000/mcp/invoke/{tool_name}
🛠️ 可用工具
查看所有可用工具(共 11 个工具)
传感器操作
read_sensor- 读取单个传感器的当前值read_multiple_sensors- 批量读取多个传感器get_sensor_history- 检索历史数据,可选择聚合方式
执行器控制
execute_actuator_command- 向执行器(阀门、电机、泵)发送命令
系统管理
get_device_topology- 查看完整的系统架构list_devices- 列出所有已注册设备及其状态get_system_status- 查看系统整体健康状况和统计信息
报警管理
get_active_alarms- 按优先级查看活动报警acknowledge_alarm- 确认报警已处理
PLC 操作
read_modbus_registers- 通过 Modbus 读取 PLC 寄存器write_modbus_register- 向 PLC 寄存器写入值
🔧 配置
基本配置 (iot_config.yaml)
mqtt:
broker: "localhost"
port: 1883
username: "iot_user"
password: "secure_password"
modbus:
devices:
- device_id: "plc_01"
name: "Main PLC"
type: "tcp"
host: "192.168.1.100"
port: 502
influxdb:
url: "http://localhost:8086"
token: "your-token"
org: "iot"
bucket: "sensors"
redis:
host: "localhost"
port: 6379
环境变量
export MQTT_BROKER="broker.hivemq.com"
export INFLUX_TOKEN="your-token"
export REDIS_HOST="localhost"
📋 要求
生产模式:
- Python 3.8 及以上版本
- MQTT 代理(Mosquitto、EMQX、HiveMQ 或任何支持 MQTT 3.1.1/5.0 的代理)
- InfluxDB 2.0 及以上版本(用于处理时间序列数据)
- Redis(用于缓存)
- 工业设备(支持 Modbus 的 PLC、物联网传感器)
模拟模式:
- Python 3.8 及以上版本
- 无需外部依赖!
🐛 故障排除
无法连接到 MQTT?
- 检查代理是否正在运行:
mosquitto_sub -h localhost -t '#' - 验证配置中的凭据
- 检查防火墙设置
Modbus 连接失败?
- 确保 PLC 可访问:
ping <plc_ip> - 验证设备上的 Modbus 是否启用
- 检查端口(TCP 通常为 502)
没有传感器数据?
- 检查 MQTT 主题是否与配置匹配
- 验证传感器是否正在发布数据
- 查看 Redis 缓存:
redis-cli get sensor:*
🏗️ 架构
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ IoT 传感器 │────▶│ MQTT │────▶│ │
└─────────────┘ │ 代理 │ │ │
└─────────────┘ │ IoT MCP │ ┌─────────────┐
┌─────────────┐ ┌─────────────┐ │ 服务器 │────▶│ PolyMCP │
│ PLCs │────▶│ Modbus │────▶│ │ │ AI 代理 │
└─────────────┘ └─────────────┘ │ │ └─────────────┘
│ │
┌─────────────┐ │ │ ┌─────────────┐
│ InfluxDB │◀────────────────────────│ │────▶│ Redis │
└─────────────┘ └─────────────┘ └─────────────┘
🤝 贡献
欢迎贡献代码!本项目展示了工业物联网与 MCP 协议的集成。
开发环境设置
# 克隆仓库
git clone https://github.com/llm-use/iot-mcp-server.git
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # 在 Windows 上使用 venv\Scripts\activate
# 安装开发依赖
pip install -r requirements-dev.txt
# 运行测试
pytest tests/
📝 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
🔗 相关项目
- PolyMCP - 使用自定义代理与 MCP 服务器进行简单高效交互的方式
- Model Context Protocol - 用于大语言模型工具集成的开放协议
- MQTT Protocol - 适用于物联网的轻量级消息协议
- Modbus Protocol - 工业通信协议
- Mqttcpp - 用于构建 MQTT 客户端和代理的轻量级快速 C++ 库
💡 为什么选择本项目?
这个 MCP 服务器弥合了 工业物联网 和 AI 代理 之间的差距。借助 PolyMCP,你可以:
- 自然语言控制 - 例如“检查所有压力传感器,若有异常则发出警报”
- 复杂自动化 - AI 可以编排多步骤的工业流程
- 预测性维护 - AI 分析趋势并预测故障
- 能源优化 - AI 优化设备使用以提高效率
- 事件响应 - AI 处理报警并执行应急程序
无需学习复杂的工业协议 - PolyMCP 和 AI 会处理一切!
🚀 使用案例
- 智能工厂 - 由 AI 驱动的生产线优化
- 建筑自动化 - 智能 HVAC 和照明控制
- 能源管理 - 实时能耗优化
- 预测性维护 - 设备故障预测
- 质量控制 - 自动异常检测
- 应急响应 - 由 AI 管理的事件处理
专为 PolyMCP 设计
如果你觉得这个仓库有用,请给它点个星 ⭐!
微信扫一扫