OpenAI 官宣全面支持MCP协议,至此MCP已得到业界广泛的认可。正逐步成为AI应用架构的基础协议。 做为AI应用架构的USB-C,MCP原理是怎样的?对实际业务又有何影响呢? 本文以MCP原理解读及业务实践为切入点,探索AI应用架构在业务领域落地的路径。
大模型很长时间面临认知边界和工具使用的双重约束:其知识体系受限于预训练阶段的静态数据沉淀并缺少完成任务的工具。而传统Function Call存在先天性的不足:线性指令执行机制带来的性能瓶颈与异构接口标准带来的兼容性瓶颈。这种局面在 Anthropic 2024.11 发布 Model Context Protocol 后得到改变——该协议重新定义了大语言模型与现实世界的交互范式。
Function Call,标杆开源项目是 Langchain Tools,它提供了"All In One"的工具箱,号称大模型的瑞士军刀。
而MCP的设计思路则不同,它遵循微内核架构的设计理念:定义架构和协议标准。号称工具调用的USB-C标准。
标准发布后开源生态活跃,MCP 官方及三方组件累计已达到4000+
官方MCPServer:GitHub - modelcontextprotocol/servers: Model Context Protocol Servers
基于这一框架,大语言模型突破了原有束缚:动态语义对齐机制将工具理解准确率提升至新量级,指令编排引擎则实现了高并发任务的智能调度。MCP通过标准化接口的语义映射能力,将离散的API调用转化为具备上下文感知的协作指令集。
2024年11 月 24 日
2024年12月
2025年3月初
2025年3月11日
2025年3月12日
解读:Manus 产品形态上让人眼前一亮。而在 Manus 发布之前,完成特定领域任务的AI Agent 已经投入实际的生产工作(如AI编码工具Cursor、Cline)。Manus 的关键词是 "通用、复杂任务"。
2025年3月17日
PR已于3.24合入。
解读:1. 按需建立流式通道:会话初始化阶段仅需常规HTTP请求,当检测到需要持续交互(如工具执行进度反馈)时,服务器自动触发SSE升级机制。2. 无状态运行支持: 服务器无需长期维护连接状态,处理完请求即可释放资源,适合Serverless架构。
2025年3月27日
2025H1 MCP官方计划支持以下能力:
OAuth2授权&鉴权能力、服务注册与发现、无状态操作(支持serverless场景)
Package管理、沙箱环境(通过隔离提升安全性)、MCP Server注册表
分层代理系统:通过命名空间与拓扑感知支持多级代理树结构。
交互式工作流:优化跨代理层级的权限管理、用户信息请求及输出定向(用户而非模型)。
流式结果:支持长任务实时结果推送,提升响应效率。
开放标准共建:推动社区主导的标准制定,鼓励AI厂商平等参与治理,满足多样化应用需求。 多模态支持:拓展音频、视频等非文本格式的兼容性。
这些都是MCP 架构工程化落地很需要的能力。
纸上得来终觉浅,了解到MCP概念后,我使用 Cline(VSCode插件)体验了MCP Server开发、配置和使用的过程。
这里使用 Claude Sonnet 大模型和MCP模板快速实现了几个MCP Server: openweather:基于openwheather api 查询天气信息。 note-sqlite:使用 sqlite 保存、查询笔记。
MCP Server 需要实现大模型友好的接口定义,核心的接口是:
接口名称 | 功能描述 |
---|---|
list_tools | 返回工具清单及JSON Schema描述(含权限说明) |
call_tool | 执行工具调用(需参数验证) |
list_resources | 返回可访问资源列表(文件路径/API端点) |
read_resource | 获取指定资源内容(支持分页) |
list_resource_templates | 提供动态资源模板 |
将开发好的MCP Server 添加到Cline插件的MCP Server配置文件。
在Cline对话框输入任务:"查询并记录天气"。任务执行情况如下:
3.1. 意图识别与任务分解
Cline 将用户prompt 和可用工具列表作为入参传递给LLM,LLM执行意图识别与任务分解。
可以看到,大模型将任务分解为两个主要步骤:
在此步骤大模型的输出是:任务执行的工作流(查询天气->保存笔记)及Tool Call参数。
3.2. 查询天气数据
Cline 根据大模型返回的工作流及Tool Call参数,调用get_current_weather 查询天气信息:
3.3. 数据处理与格式化
Cline 将"查询天气"的结果加入到上下文中传递给大模型,大模型将其转化为调用save_note工具的参数。
3.4. 记录天气数据
Cline 使用大模型返回的 Tool Call 参数调用save_note工具保存笔记:
3.5. 结果呈现
Cline 将"保存笔记"的结果加入到上下文传递给大模型,大模型返回任务总结:
为了验证大模型对同类工具的选择机制,我又开发、配置了一个weather-sqlite 服务,专门用于记录天气信息。
在查询网天气信息后,在note-sqlite和weather-sqlite 都可用的前提下,选择了后者用于保存天气信息。以下是大模型给出的决策理由:
接下来看一下大模型和MCP工具集是如何协同完成用户特定任务的。
1. MCP Host (如Claude Desktop、Cursor IDE、Cline)可以看做是一个AI Agent。调用LLM执行意图识别,制定任务计划。然后调用MCP Server 完成任务流中的一个一个子任务。同时负责管理与用户的会话。
2. MCP Server 即大模型友好的工具集。通过类似OAS标准的Schema标注,让大模型能很好地理解工具的功能范围及使用方法。MCP Server需要有安全控制机制,以保障接口/资源不被越权访问。
3. MCP Client 即通信中间件。MCP Client 是MCP Host 引用的组件,负责与MCP Server 建立连接,并处理 JSON-RPC/SSE 等协议交互。
这里花了一点时间完整地探究了一下Cline 完整地梳理了Cline 处理用户请求的流程。主要涉及两个阶段:
初始化阶段:
MCP Host启动时基于配置与MCP Server 建立连接,获取并缓存工具/资源的元数据描述(如接口定义JSON Schema)。
任务处理阶段:
MCP Host调用大模型做意图识别和任务规划。大模型结合用户prompt及上下文信息、可用工具列表动态规划任务流程并适配 Tool Call 参数。该阶段采用ReAct循环机制,当参数不完整或输出结果置信度低于阈值时启动用户协同修正流程。
这里展开说一些关键技术细节
3.1 统一语义空间
MCP Server通过 Schema(类 OAS3标准) 明确定义工具的能力范围及接口字段(包含类型、校验规则及自然语言描述等)。
下面是一个示例Schema:
可以看到接口定义了两个字段:city 和 days。两个字段均有明确的描述信息和校验规则。接口自身的功能描述信息也有在Schema中标注。
大模型基于用户意图动态规划工具调用指令流。并根据上下文信息、工具的 Input Schema 生成调用参数。实现自然语言与工具调用的语义对齐。
3.2 双向通讯协议
通过双向通讯机制MCP Host 不仅可以通过RPC调用工具集,还可以实时感知工具和资源的变更。目前支持STDIO、Streamable HTTP两种通讯协议。覆盖了本地进程间通讯和远端通讯的场景。
日志/文件处理是一个典型的应用场景。
3.3 微内核架构
得益于MCP微内核架构,任何支持 MCP 的 AI 应用(MCP Host)均可直接配置并使用应用市场的MCP Server(官方、三方),无需预编码适配。类似于 USB 设备插入即用。
Cline MCP Server配置文件示例:
为了探索AI应用架构在QQ机器人场景落地的路径。我遵循MCP提供的思路,搭建了一个的AI Agent DEMO机器人。
机器人基于MCP协议接入工具集,基于大模型的意图识别和动态规划能力完成用户任务的过程,采用ReAct模式
迭代处理用户任务,直至任务完成。
共涉及3个服务:MCP Host(即机器人服务端)和2个MCP Server(包含查询天气的工具、制定行程计划的工具)。
验证截图如下:
机器人首先提示用户补全信息,然后调用MCP Server工具集完成了"查询天气 -> 制定行程"的任务流程。最后调用大模型输出了任务总结。
由于token成本的原因,demo机器人未开放体验。
实际业务场景中智能体需要响应用户各种各样的请求,比如:搜索、画图、拍照解题、文档处理等等。单Agent架构难以支撑,难以扩展。我们把目光投向了时下热度很高的Multi-Agent架构。
我们调研了:LangManus、OpenManus、OWL、Tars等完整产品形态的开源框架。同时也调研了一些更轻量的后台框架,比如eino 。这些框架在这些框架有一些共同点:引入了多Agent动态协同、上下文管理、任务流编排与执行等能力。核心逻辑都采用了ReAct模式进行循环迭代。都引入一套处理特定任务的工具集(如搜索、文档处理),同时支持MCP扩展。
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。