MCP over MQTT:EMQX 开启物联网 Agentic 时代

news2025/4/16 23:28:39

前言

随着 DeepSeek 等大语言模型(LLM)的广泛应用,如何找到合适的场景,并基于这些大模型构建服务于各行各业的智能体成为关键课题。在社区中,支持智能体开发的基础设施和工具层出不穷,其中,Anthropic 推出的 MCP 在连接 LLM 与多源数据方面表现尤为突出。

本文将通过以下几个问题,探讨 MCP 在推动物联网智能化转型方面的潜力与应用前景:

  • 能否利用 MCP 为大量设备赋予智能化的能力?
  • 在物联网场景下,MCP 是否存在一些短板?
  • 如何通过 MQTT 与 MCP 的深度集成,快速将新旧设备接入 AI 应用生态?

MCP 概览

MCP(Model Context Prototol)是由 Anthropic 公司在 2024 年 11 月份推出的开放标准协议‌‌,旨在建立 LLM 与外部数据源、工具和服务之间的标准化通信框架,解决数据孤岛问题,提升 AI 应用与多源信息的交互效率‌。其主要的技术架构与核心组件如下:

  • MCP Hosts‌:发起请求的 LLM 应用程序(例如 Claude Desktop、IDE 工具等)。
  • MCP Clients‌:在主机内运行的协议客户端,与服务器保持 1:1 连接‌。
  • MCP Servers‌:提供上下文、工具和提示信息的轻量级程序,支持本地和远程资源访问(如文件、数据库、API)。

MCP 技术优势与特性

  • 开发简化‌: 一次编写可多次集成,无需为每个新工具重写定制代码‌。
  • 动态交互‌: 支持实时上下文更新与交互,提升响应效率‌。
  • 安全可控‌: 内置访问控制机制,仅允许 LLM 通过明确定义的接口执行授权操作‌。
  • 扩展灵活‌: 通过新增 MCP Server 即可接入新功能,类似「插件化」扩展‌。

MCP 的 AI 应用场景

  • 智能 IDE‌: 通过 MCP 连接代码库、文档,实现上下文感知的编程辅助‌。
  • 数据分析‌: 安全访问本地数据库,执行 SQL 查询并生成可视化报告‌。
  • 工作流集成‌: 与企业内部系统(如 CRM、ERP)集成,自动执行复杂任务‌。

自 MCP 推出以来,与其相关的 Server 服务快速增长。截至目前,https://mcp.so/servers 上共计有 4245 个相关服务,包含数据/数据库类、云平台、浏览器自动化等多种类型。基于这些服务,各种 Client 应用能够根据自身需求,轻松连接不同的外部数据源及工具,并利用 AI 的推理能力对工作流进行编排和调度,实现智能化应用的快速开发。

MCP 在 IoT 场景中的应用前景

物联网设备通过数据上报让数字世界能够感知实际物理环境,同时,通过暴露的操作接口,允许人类或数字世界对物理世界的设备进行控制和操作,以满足用户的特定需求。当前,大多数物联网系统主要依赖 MQTT 协议进行交互,而 MCP 架构设计与物联网的「物模型」概念非常吻合,这种天然的匹配让 MCP 在物联网领域大有可为,既能兼容现有 MQTT 系统,又能更好地连接设备和 AI 应用。

物模型介绍

物模型是物理空间中实体(如传感器、车载装置、楼宇、工厂等)在云端的数字化表示,它通过属性、服务和事件三个维度来描述实体的特性、功能及其对外提供的信息,从而完成产品功能的定义。

  • 属性: 设备的实时状态数据。例如环境监测设备显示的温度和湿度、智能设备的开关状态等。
  • 服务: 设备可执行的操作指令。服务调用支持设置输入参数(执行条件)和输出参数(执行结果)。例如空调的温度调节、电机的启停控制等。
  • 事件: 设备主动上报给云端的信息。包含需要被外部感知和处理的信息、告警和故障,支持多参数上报。例如设备故障报警、环境异常预警等。

MCP 提供的能力

  • 资源(Resources): 可供客户端读取的数据内容,例如 API 返回的数据或文件内容等。
  • 工具(Tools): 在用户批准后,由大型语言模型(LLM)调用的功能模块。
  • 提示词(Prompts): 预设的模板,以辅助用户完成特定任务。

对比物模型的三个维度和 MCP 提供的能力,可以看出其对应关系:

物模型的属性和事件对应 MCP 的资源,为 LLM 理解物理设备提供了元数据和实时的状态信息;物模型的服务对应 MCP 的工具,允许 LLM 在用户授权后访问相关的信息或调用设备功能。

物模型与 MCP 的高度相似性,为构建 AI 时代的物联网系统提供了可行的结合点:

设备厂商可以提供与设备相关的 MCP 服务,也可以直接将现有的物模型接口(如 HTTP 接口)封装成 MCP 服务,并提供对应的资源、工具和提示词;智能手机等终端应用可以根据用户需求,灵活定义或者编排工作流,自动调用设备的 MCP 服务进行相关操作。

基于 MCP 为 AI 系统提供的设备接入能力,终端用户得以通过自然语言等方式直接与物理设备进行智能交互。例如:在智能家居场景中,用户可以使用自然语言和手机 App 对话「我一个小时后到家,把客厅的温度调整到 25 度,湿度保持在 40」。

  • MCP 出现之前,该功能的实现需要开发者针对不同的设备型号和版本进行繁琐的接口适配。
  • MCP 出现之后,诸如 DeepSeek 等 LLM 可以根据用户的自然语言描述,自动理解设备提供的能力,智能调度相关的 MCP 服务,实现设备控制和管理,无需人工编写特定规则或代码,提升了设备之间的互操作性和智能化水平。

MCP 在 IoT 场景中的限制

当前,MCP 协议的设计主要基于标准输入和输出 (stdio) 和 HTTP + SSE 两种方式,前者适合在本地的 MCP Client 与 Server 之间的调用,后者更适合网络远程通信。

在 IoT 场景中,理想的实现方式是在设备端部署 MCP Server,由移动应用等客户端作为 MCP Host 通过 MCP Client 与 MCP Server 进行交互,实现智能编排和调用。然而,在实际应用中存在多种制约:

  • HTTP 和 SSE 协议对设备资源要求较高,中低端设备受限于存储、计算和电力条件难以支持。
  • 设备通常部署在移动、野外、工厂等网络条件较差的环境,现有方案无法保证服务的可靠性。
  • 物联网已经基于 MQTT 建立起完整的生态,引入 SSE 需要额外构建权限访问控制体系,增加系统负担。
  • 对于仅支持 MQTT 协议的客户端设备,为使用 MCP 协议需要额外引入对 HTTP 的支持。
  • 物联网设备的规模通常达到数万至数十万量级,当前 MCP Client 直连 MCP Server 的设计模式,难以管理大量的设备。

MCP over MQTT 方案构想

为了解决上述问题,EMQ 提出 MCP over MQTT 方案,希望从底层协议上为设备的智能化升级提供帮助。

该方案为不同配置的设备提供差异化支持。

对计算能力受限的设备,提供两种不同的方案:

  • 外置代理方案: 在 EMQX 外部开发和部署 MCP Server,通过 MQTT 协议处理相关的物联网数据,并通过 MCP over MQTT 协议与 MCP Client 进行交互。
  • 内置代理方案: 在 EMQX 内部实现代理 MCP Server,由其代理相关设备的操作。

对于具有较高计算、存储能力的设备,直接提供 MCP over MQTT SDK 开发 MCP Server 的原生方案。

MCP over MQTT 方案将底层网络协议从 HTTP + SSE 转换为 MQTT,显著提升了弱网环境下的通信可靠性。同时,EMQX 作为消息中间件,能够为海量 MCP Server 提供完整的服务发现能力,以及内置的认证、权限管理等功能,提高系统的安全性和稳定性。

外置代理方案

在这里插入图片描述

  • MCP Server(Device 代理)

    • 设备通过 MQTT 协议把数据上报给 EMQX,MCP Server 通过订阅相关主题获得设备信息,并利用 MCP 提供的资源(resources)或者工具(tools)将上传的数据暴露出来。
    • 设备控制报文同样通过 MQTT 协议经由 EMQX 传递给设备,对外通过 MCP over MQTT 协议把这些工具(tools)暴露出来。
  • App 应用端

    • 通过 MCP over MQTT 协议经由 EMQX 与远程的 MCP Server 进行通信,获取设备相关的状态,以及调用控制指令。
    • 也可以通过标准的 MCP 和其他 MCP Server 进行通信,实现与其他系统的集成。

这一方案的最大优势在于,既有的物联网设备无需任何改造即可获得 AI 交互能力,完整保留了 MQTT 协议在低功耗和弱网环境下的固有优势。结合 EMQX 提供的高并发连接和高可用特性,该方案能够快速构建生产可用的智能物联网应用,有效解决了传统设备智能化升级的兼容性和实施成本问题。

内置代理方案

在这里插入图片描述

代理方案相较于外置方案,核心改进在于将 MCP Server 直接集成到 EMQX 内部运行,并提供一些内置的工具和能力来提升系统性能(而非减少 EMQX 和 MCP Server 之间跨越的节点数)。同时,由于 MCP Server 作为 EMQX 的内置组件运行,显著降低了运维复杂度,使得 MCP Server 应用的开发和管理更加便捷高效。

原生(Native)方案

在这里插入图片描述

原生方案面向具备高性能计算和存储能力的高附加值新型设备(如智能汽车、3D 打印机等),通过在设备端原生集成 MCP 服务,直接采用 MCP over MQTT 协议与 EMQX 建立通信连接。该方案中,MCP Client 通过标准化的 MCP over MQTT 协议直接与设备端的 MCP Server 进行交互,实现端到端的智能化控制。例如:

现在有两台 3D 打印机,service-name 分别为:

  • 3D-Printer/ACH301/EECF7892AB1
  • 3D-Printer/ACH301/CAED99C2EE2

其中 3D-Printer/ACH301/ 是分层级的设备类型,而 EECF7892AB1, CAED99C2EE2 是设备 ID。

客户端(移动端 App) 首先查询当前用户名的权限,比如,通过查询得知只能访问 ACH301 型号的打印机。然后通过订阅相关的主题来获取 ACH301 打印机支持的 tools(即该打印机的对外提供的能力),App 就可以实现对这个设备的智能化调用。

这种新型的智能化物联网平台架构,适用于 M2M 的场景: 设备厂商可以在设备里内置功能完善的 MCP Server(包括建议的提示词模板),物联网平台采购设备之后,无需为每种设备单独编写指令,通过统一的客户端智能化访问,实现了专业化的分工:

  • 设备厂商专注于设备侧功能的实现;
  • 物联网平台专注于提升智能客户端(包括语音交互等)的用户体验。

MCP over MQTT 协议初探

特性

MCP over MQTT 将会在保留 MCP 原有功能的基础上,增加以下能力:

  • 服务发现:通过 MQTT 协议的保留消息和遗嘱消息等特性,MCP Clients 可以自动发现可用的 MCP Servers。
  • 服务端线性伸缩:通过 MQTT 协议的共享订阅特性,MCP Server 在保持服务状态(Stateful)的情况下,实现了线性的扩容和缩容。
  • 中心化认证:依赖 MQTT Broker 作为中心化的消息中间件,有更多成熟的认证和鉴权方案可用。

未来,通过在 MQTT Broker 中集成 MCP Server 插件的方式,还可以进一步简化 MCP Server 部署难度并优化数据传输效率。

限制

MCP over MQTT 协议主要面向远程部署 MCP Server 的场景,其架构设计依赖于中心化 MQTT Broker 的支撑。虽然本地部署的 MCP Server 也能够使用 MCP over MQTT 协议,但可能会增加部署上的复杂性。

总结和展望

目前,EMQ 已完成 MCP over MQTT 技术方案的初步验证,并构建原型系统进行测试。研发团队正聚焦协议架构的标准化设计与工程实现,下一阶段将针对关键的技术节点展开深度验证与性能优化。

我们可以预见,这一方案的落地将为物联网领域开启一个崭新的 Agentic 时代:EMQX Platform 提供协议适配与中心化服务管理能力,解决数据孤岛与碎片化瓶颈;DeepSeek 等 LLM 提供自然语言理解与推理能力,将用户需求动态转化为设备可执行的操作流。

通过两者结合,企业可以将海量异构设备无缝接入基于 MCP 的 AI 生态,大幅降低老旧设备智能化改造成本,同时获得快速构建跨场景、跨系统的智能应用能力。基于 MCP over MQTT 的 Agentic IoT 将真正实现从「万物互联」到「万物智联」的转变,重塑企业的智能化转型之路。

版权声明: 本文为 EMQ 原创,转载请注明出处。 原文链接:https://www.emqx.com/zh/blog/mcp-over-mqtt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2329272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ACM代码模式笔记

系列博客目录 文章目录 系列博客目录1.换行符 1.换行符 nextInt()、nextDouble() 等不会消耗换行符: 当使用 nextInt() 或 nextDouble() 读取数字时,它只读取数字部分,不会消耗掉输入后的换行符。 nextLine() 会读取并消耗换行符&#xff1a…

[王阳明代数讲义]具身智能才气等级分评价排位系统领域投射模型讲义

具身智能才气等级分评价排位系统领域投射模型讲义 具身智能胆识曲线调查琴语言的行为主义特性与模式匹配琴语言的"气质邻域 "与气度,云藏山鹰符号约定 琴语言的"气质邻域 "与气度,一尚韬竹符号约定 琴语言的"气质邻域 "与…

【Block总结】PlainUSR的局部注意力,即插即用|ACCV2024

论文信息 标题: PlainUSR: Chasing Faster ConvNet for Efficient Super-Resolution作者: Yan Wang, Yusen Li, Gang Wang, Xiaoguang Liu发表时间: 2024年会议/期刊: 亚洲计算机视觉会议(ACCV 2024)研究背景: 超分辨率(Super-Resolution, S…

【C++】从零实现Json-Rpc框架(2)

目录 JsonCpp库 1.1- Json数据格式 1.2 - JsonCpp介绍 • 序列化接口 • 反序列化接口 1.3 - Json序列化实践 JsonCpp使用 Muduo库 2.1 - Muduo库是什么 2.2 - Muduo库常见接口介绍 TcpServer类基础介绍 EventLoop类基础介绍 TcpConnection类基础介绍 TcpClient…

FastAPI依赖注入:链式调用与多级参数传递

title: FastAPI依赖注入:链式调用与多级参数传递 date: 2025/04/05 18:43:12 updated: 2025/04/05 18:43:12 author: cmdragon excerpt: FastAPI的依赖注入系统通过链式调用和多级参数传递实现组件间的解耦和复用。核心特性包括解耦性、可复用性、可测试性和声明式依赖解析…

【STM32单片机】#5 定时中断

主要参考学习资料: B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接:https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装:STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…

OrbStack 作为 Mac 用户的 Docker 替代方案

推荐使用 OrbStack 作为 Mac 用户的 Docker 替代方案 在现代开发环境中,容器化技术已经成为了软件开发的重要组成部分。对于 Mac 用户来说,Docker Desktop 是一个广泛使用的工具,但它并不是唯一的选择。本文将推荐 OrbStack 作为 Docker Desktop 的替代方案,并探讨其优势。…

运行小程序报错

[ app.json 文件内容错误] app.json: ["tabBar"]["list"] 不能超过 5 项(env: Windows,mp,1.06.2206090; lib: 3.7.12) 他的意思大概是,微信小程序 app.json 文件中的 tabBar.list 配置项超过了 5 项。这是微信小程序的限制,tabBar…

深入剖析丝杆升降机工作原理,解锁工业传动奥秘

丝杆升降机,在工业设备的大舞台上扮演着不可或缺的角色,被广泛应用于机械制造、自动化生产线、建筑施工等众多领域。它能够精准实现重物的升降、定位等操作,为各类工业生产提供了稳定可靠的支持。想要深入了解丝杆升降机,就必须探…

【51单片机】2-3【I/O口】震动传感器控制LED灯

1.硬件 51最小系统LED灯模块震动传感器模块 2.软件 #include "reg52.h"sbit led1 P3^7;//根据原理图(电路图),设备变量led1指向P3组IO口的第7口 sbit vibrate P3^3;//震动传感器DO接P3.3口void Delay2000ms() //11.0592MHz {…

医疗思维图与数智云融合:从私有云到思维图的AI架构迭代(代码版)

医疗思维图作为AI架构演进的重要方向,其发展路径从传统云计算向融合时空智能、大模型及生态开放的“思维图”架构迭代,体现了技术与场景深度融合的趋势。 以下是其架构迭代的核心路径与关键特征分析: 一、从“智慧云”到“思维图”的架构演进逻辑 以下是针对医疗信息化领域…

【JS】接雨水题解

题目 思路 首先我们要明确如何计算每条柱子的接水量: 每条柱子对应接到的雨水量该柱子左边最大值和右边最大值中的较小值-该柱子本身的高度。举例:第二条柱子自身高度为0,左边最大值为1,右边最大值为3,取较小值1-自身…

线代[12]|《高等几何》陈绍菱(1984.9)(文末有对三大空间的分析及一个合格数学系毕业生的要求)

文章目录 一、概述二、平面仿射几何的基本概念三、平面射影几何的基本概念四、变换群和几何学五、二次曲线的射影理论、仿射理论和度量理论六、射影几何公理基础七、非欧几里得几何概要八、自我测试题九、欧氏解析几何、仿射解析几何、射影解析几何与其他(博主借助A…

第3课:状态管理与事件处理

第3课:状态管理与事件处理 学习目标 掌握useState Hook的使用理解组件事件处理机制实现表单输入与状态绑定完成任务添加功能原型 一、useState基础 1. 创建第一个状态 新建src/Counter.js: import { useState } from react;function Counter() {co…

【速写】Transformer-encoder-decoder深度解析

文章目录 一、理论分析1. Transformers概述2. Transformer的输入部分具体是如何构成?2.1 单词 Embedding2.2 位置 Embedding 3 自注意力原理3.1 自注意力结构3.2 QKV的计算3.3 自注意力的输出3.4 多头注意力 4 Encoder结构4.1 AddNorm4.2 前馈4.3 组成Encoder 二、代…

MyBatis八股文-执行流程、延迟加载、一级与二级缓存

(一)执行流程 mybatis-config.xml核心配置文件的作用: 在MyBatis框架的核心配置文件中需要去指定当前的环境配置、指定需要操作的是哪个数据库,并且输入当前的用户名与密码,只有配置了他才能真正操作数据库。同时还去加载了SQL映射文件&#…

基于Spark的哔哩哔哩舆情数据分析系统

【Spark】基于Spark的哔哩哔哩舆情数据分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本项目基于Python和Django框架进行开发,为了便于广大用户针对舆情进行个性化分析处…

【Linux】日志模块实现详解

📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…

Java基础:面向对象高级(四)

内部类(类中五大成分之一) 四种形式 成员内部类【了解】 静态内部类【了解】 局部内部类【了解】 匿名内部类【重点】 枚举 泛型 什么是泛型 泛型类-模拟ArrayList 泛型接口-操作学生,老师增删改查 泛型方法 泛型擦除和注意事项

easy-poi 一对多导出

1. 需求: 某一列上下两行单元格A,B值一样且这两个单元格, 前面所有列对应单元格值一样的话, 就对A,B 两个单元格进行纵向合并单元格 1. 核心思路: 先对数据集的国家,省份,城市...... id 身份证进行排序…