用MCP替代本体建模:把设备能力变成LLM工具

工业自动化里描述设备能力,长期依赖本体、资产管理壳(AAS)等显式语义模型。这类建模工作量大、易出错,还需要语义建模专家,建出来的表示也未必方便大模型使用。一篇工作论文提出另一种思路:用模型上下文协议(MCP)把能力直接暴露成 LLM 可调用的工具,让自然语言描述承担一部分原本由形式化模型承担的工作。

MCP 是什么:客户端—服务器 + JSON-RPC

MCP 是连接 LLM 与外部资源、提示模板和工具(可执行函数)的开放标准。它采用客户端—服务器架构:MCP 服务器暴露功能接口、元数据和调用机制;MCP 客户端(例如基于 LLM 的智能体)在运行时查询服务器、发现可用操作,并以结构化参数发起调用。通信基于 JSON-RPC 2.0。其关键价值是解耦模型与外部功能——LLM 不需要预先训练工具知识,而是执行时按目标和上下文选择工具。这让它适合动态、模块化的生产环境。

两类服务器:算得出来的,和动得了的

论文按效果把能力分成物理与虚拟两类,对应两种 MCP 服务器。直接 MCP 服务器承载纯虚拟或计算型能力,技能在 MCP 主机本地执行,例如计算、换算、数据分析或决策逻辑;网关 MCP 服务器作为中介,通过 HTTP、OPC UA、ROS 2 等接口调用外部资源上的真实控制逻辑,把物理能力或外部数据包装成工具。调用路径上,用户请求与可用服务器列表一起进入 LLM,模型选定功能后由客户端发起调用;走网关时,调用还会经过外部请求与返回结果的处理。

能力、技能、约束怎么落进代码

在这套架构里,一个能力就是函数声明,其用途、约束和语义用自然语言描述与代码注释说明,代替传统能力模型;能力的属性由函数参数和返回值表达,数据类型、单位、用途写在注释里。约束分两类:属性约束写在函数内部,用断言或前置条件表达,违反时抛出结构化错误供 LLM 解读,例如钻孔直径不超过 50;转移约束是多个能力之间的全局约束,无法由单个能力检查,只能用文字描述,例如“只能在能力 X 之后使用”,由 LLM 在调用时理解。技能是能力的具体实现;状态机与底层控制逻辑保持不变,被替换的是技能接口——由代码级文档和 MCP 元数据取代逐方法、逐参数的显式建模。

实验室验证:四个场景

验证在实验室规模的制造系统上完成:Claude Desktop 作为 MCP 客户端,模型为 Sonnet 4,三个 MCP 工具分别对应主轴转速计算(直接服务器,按材料与钻头直径查表)、钻孔(网关服务器,经 OPC UA 触发真实设备)、移动机器人运输(ROS 2 接口,Neobotix MMO-700)。四个场景覆盖标准流程、不支持的钻头直径、工件位于不同工位、材料名称变体(stainless steel 与 stainless)。结果显示,LLM 能自行推断先算转速再钻孔、先运输再加工,能在报错后向用户澄清或纠正名称重试,全程没有硬编码控制流。

边界与下一步

作者明确这只是一次初步验证,可靠性与鲁棒性仍是开放问题,实验也未考虑真实产线的通信延迟与并发冲突。未来方向包括用规划者、验证者、谈判者等多智能体分工替代单一编排者,以及让 LLM 识别缺失功能、生成新的 MCP 工具代码、注册后再纳入任务计划。对工厂而言,MCP 降低了工具接入门槛,但把安全边界写进函数约束、把跨能力顺序写进描述,仍是不能省的人工工作。

资料来源:Beyond Formal Semantics for Capabilities and Skills: Model Context Protocol in Manufacturing — arXiv(2025)。本文为技术要点整理/编译,非原文全文。