Back to MCP directory
publicPublicdnsLocal runtime

iot-edge-mcp-server

工业物联网与边缘计算的MCP服务器,通过HTTP端点提供11种工具,实现AI驱动的工业自动化、预测性维护和智能工厂操作,支持MQTT、Modbus等多种协议。

article

README

🚀 IoT/Edge MCP Server

这是一款适用于工业物联网、边缘计算和自动化领域的模型上下文协议(MCP)服务器。 它能将工业基础设施转变为可由人工智能协调的系统,通过 HTTP 端点提供 11 种强大工具,实现对物联网、数据采集与监控系统(SCADA)和可编程逻辑控制器(PLC)的全面控制。非常适合由人工智能驱动的工业自动化、预测性维护和智能工厂运营。

MseeP.ai Security Assessment Badge Featured Article

✨ 主要特性

  • 🏭 多协议支持 - 为工业系统提供统一接口:

    • 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,你可以:

  1. 自然语言控制 - 例如“检查所有压力传感器,若有异常则发出警报”
  2. 复杂自动化 - AI 可以编排多步骤的工业流程
  3. 预测性维护 - AI 分析趋势并预测故障
  4. 能源优化 - AI 优化设备使用以提高效率
  5. 事件响应 - AI 处理报警并执行应急程序

无需学习复杂的工业协议 - PolyMCP 和 AI 会处理一切!

🚀 使用案例

  • 智能工厂 - 由 AI 驱动的生产线优化
  • 建筑自动化 - 智能 HVAC 和照明控制
  • 能源管理 - 实时能耗优化
  • 预测性维护 - 设备故障预测
  • 质量控制 - 自动异常检测
  • 应急响应 - 由 AI 管理的事件处理

专为 PolyMCP 设计

如果你觉得这个仓库有用,请给它点个星 ⭐!

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client