作者|沙丘智库研究团队
来源|沙丘社区(www.shaqiu.cn)
以下内容节选自沙丘智库《企业是否应采用MCP协议?》
2023年6月,OpenAI在Chat Completions API中添加function calling功能,允许开发者通过自然语言指令触发预定义函数。结合function calling后,大模型相当于拥有了可以调用函数的能力,进而实现与外部的交互。
2024年11月,Anthropic发布并开源Model Context Protocol协议 (模型上下文协议,简称MCP),相当于在function call的基础上提供了一套标准协议,将API调用流程进一步抽象。
随后,MCP协议在供应商和终端用户群体中的关注度迅速增长,国内外科技大厂积极拥抱MCP生态。国外OpenAI、Google等相继宣布支持MCP协议,作为MCP Client方入局。国内百度、阿里巴巴、腾讯等云厂商和大模型厂商也开始支持MCP协议。大厂的纷纷入局使MCP或成为行业通用标准。
对于已经在构建AI应用的企业来说,MCP旨在解决一个他们可能还没意识到的问题:尽管AI开发平台允许大模型访问API和数据源,但这种集成通常是每个平台专有的。MCP标准化了大模型与外部资源的之间的集成,这种标准化使得不同平台之间的集成更加一致和高效,减少了因平台差异带来的复杂性。
随着MCP热度的不断提升,企业可能会产生疑问:是否应采用MCP?
01
MCP介绍
MCP的主要功能是实现基于LLM的应用与外部数据源和工具之间的无缝集成,而无需复杂的集成代码。
LLM的一个重要特性是能够通过function calling来调用外部工具或服务。在MCP出现之前,大模型调用外部工具的方式有如使用不同的钥匙,而MCP则为function calling提供了一个标准化的接口,使得LLM能够更高效地与外部资源交互。
MCP遵循“客户端-服务端”架构,核心部分包括:MCP主机(MCP Host)、MCP客户端(MCP Client)、MCP服务端(MCP Server)和MCP通信(MCP Communication)。
(1)MCP主机(MCP Host)
MCP Host是指支持调用MCP工具的AI应用,例如聊天机器人、AI驱动的IDE等,负责选择并调用MCP Client,一个Host可以连接多个MCP Client。
(2)MCP客户端(MCP Client)
MCP Client是MCP Host与MCP Server之间通信的桥梁,通过发送MCP请求与MCP Server进行交互。MCP Client有两种核心特性:
· 根目录(Roots):提供了一种资源共享的机制,使得MCP Client和本地MCP Server可以访问相同的文件位置,提高数据访问效率和安全性;
· 采样(Sampling):允许MCP Server请求LLM进行采样,例如文本补全或生成,增强了MCP Server的灵活性和功能性。
(3)MCP服务端(MCP Server)
工具能力的封装者,提供标准化接口供Client调用,执行Infra层数据库调用查询、浏览器搜索,也可调用垂类行业应用(如地图、笔记、支付等)。部署靠近资源端,如数据库主机、云服务器等。
MCP Server为AI 应用(即MCP Host)所需交互的数据源、功能和服务提供暴露接口。对于远程服务,MCP Server介于MCP Client的MCP请求和AI应用所访问的服务接口之间。MCP Server有三个主要特性,对于MCP Server的实现来说是可选的:
· 工具(Tools):这些是可以执行的函数,使大模型能够检索信息或对本地资源或远程系统(如数据库和API)采取行动;
· 资源(Resources):使服务器能够向LLM提供数据(如文档和图像)以供上下文使用;
· 提示词(Prompts):服务器可以暴露给客户端以传递给LLM的模板。提示词可以是静态的或动态的,并且可以包括多个步骤(聊天上下文)。
(4)MCP通信(MCP Communication)
MCP Client和MCP Server 之间使用双向的 JSON-RPC 2.0 进行通信。当前支持 stdio和Streamable HTTP 两种传输方式,用户也可以自定义传输方式:
· stdio:提供对本地MCP Server的访问;
· Streamable HTTP:通过HTTP POST为远程MCP Server提供访问。
通过MCP Communication ,AI应用从MCP Server中检索工具定义列表,并通过提示将其传递给LLM,然后LLM的响应可以要求AI应用调用这些工具中的任何一个(带有参数或数据)。
02
MCP的价值和应用场景
MCP的目标是实现基于LLM的应用与数据源和工具之间的无缝集成,使开发者可以更轻松地将大模型应用与各种外部资源(如数据库、API、文件系统等)连接起来,从而扩展应用程序的功能。MCP预期将产生如下价值:
第一,增强上下文感知能力。MCP允许AI应用和AI Agent通过连接多样化的数据源来访问相关的上下文信息。这可以通过爬取网页或基于现有文档自动生成MCP Server来实现。例如,coding Agent可以使用MCP Server访问控制台日志和其他实时数据,从而更高效地进行调试。这种增强的上下文感知能力对于创建更自主、更智能的AI系统来说至关重要,这些系统能够代表用户执行任务;
第二,简化接口设计。MCP简化了将数据源和服务集成到大模型应用的过程。开发者可以将工具和资源定义为MCP Server,使得基于LLM的应用能够在需要时自动识别和使用这些工具和资源,减少了对多个自定义集成的需求,并使得工具之间能够保持一致的上下文;
第三,新兴的生态系统和市场。一个围绕MCP的生态系统正在形成,出现了很多MCP Server工具平台。例如百度千帆平台支持开发者开发自己的MCP Server,并发布的Server广场,支持免费托管。这些平台旨在使开发者更容易发现、共享和构建新的MCP Server。这一层对于标准化访问高质量MCP Server来说至关重要,允许AI Agent安全地访问一系列服务。GitHub(https://github.com/modelcontextprotocol/servers)上提供了很多写好的server可以直接复用,包括从与云服务和数据库交互到控制软件应用的各种服务。
为了建立MCP能力,企业必须采取如下两个关键行动:
第一,利用开发工具中的MCP Client功能探索MCP的优势和风险。百度、阿里等众多大模型开发平台都提供了MCP Client功能,可以帮助企业快速启动并运行MCP相关的开发工作。企业应该将MCP的优势与当前使用的AI开发平台进行对比,通过这种比较,可以更清晰地了解MCP在实际应用中的优势和潜在风险,从而做出更明智的技术决策。
第二,为了简化和扩展AI Agent的开发,建议企业对内部工具和数据源实施MCP服务。一些系统和数据源可能已经提供了MCP Server,企业可以评估这些MCP Server的功能和性能;对于那些尚未提供MCP Server的系统和数据源,企业可以利用相关工具安全地构建自己的MCP Server。企业构建的MCP Server应能够支持多种大模型应用的function calling,满足不同场景下的需求。
03
MCP带来的风险
MCP在以下领域存在潜在风险:
第一,一致性。MCP Client和MCP Server的标准都包含多个可选项。因此,用户可以使用的功能取决于所使用的host。MCP展示了一些客户端示例,每个客户端支持不同的MCP功能,从而允许与MCP Server进行不同程度的集成。
第二,稳定性。MCP的第一个版本于2024年11月5日发布,但一些SDK发生彻底的变化。最新版本于2025年3月26日发布,增加了基于OAuth 2.1的授权框架,替换了HTTP传输,增加了对JSON-RPC批处理的支持,还进行了一些其他的更改。随着标准逐渐接近企业级应用,未来版本的迭代是不可避免的。
第三,应用安全。自定义MCP Client和MCP Server给企业带来了新的风险,可能会成为新的攻击面,而且MCP协议本身设计的较为宽松。当前可以采取的一些安全措施包括对速率的限制、输入和输出清理、传输层安全要求以及OAuth授权。
第四,软件供应链安全。第三方MCP Server和第三方工具可能会引入新的软件供应链风险,因此这些组件应该被视为具有较高被攻击风险的资产。虽然MCP协议标准要求验证输入和清理输出,但当前大多数MCP Server的实现依赖于服务器集成的后端服务。如果后端服务存在安全漏洞,可能会导致整个系统的安全性受到影响。
第五,其他标准的竞争。尽管MCP目前发展势头正盛,但其他的一些标准也在出现,例如Google 的A2A、AGNTCY的ACP和AGP、LangChain的agent-protocol,这些标准可能会挑战MCP的主导地位,或者在某些应用(特别是AI Agent)中使MCP的采用变得更加复杂。
第六,对function call能力的依赖。MCP的有效性在很大程度上依赖于底层LLM正确理解和使用提供的工具描述和参数的能力。即使MCP提供了标准化的接口,但如果LLM在上下文管理或指令遵循方面存在问题,可能会导致工具使用不正确或出现“幻觉”。 LLM API设计方面的创新,特别是支持function call的API设计,可能会削弱MCP的价值,甚至使其变得多余。
以上内容节选自沙丘智库《企业是否应采用MCP协议?》
*更多生成式AI研究可前往“沙丘智库”小程序查阅
*有任何需求可咨询客服微信:zimu738

