模型上下文协议(MCP)

模型上下文协议(MCP)

KDAIer Lv1

模型上下文协议(Model Context Protocol,简称 MCP)是2024年底Anthropic提出的一个开放标准,旨在统一大规模模型(LLM)与外部工具、数据源的交互方式。它类似于“AI 的 USB-C 接口”,为模型与各种外部资源提供一种通用、安全的通信机制。MCP 能让 AI 应用像使用 USB 设备一样,动态发现、选择并调用所需的工具和数据,而不再依赖于每个模型/工具组合单独硬编码的接口。随着 AI 工具集的快速增长,MCP 的出现极大地简化了 AI 系统的开发流程,使模型可以跨平台、跨模态地整合信息和能力。目前,MCP 已被 Anthropic、OpenAI、百度等多家机构采用,业内也涌现了如 MCP.so、Glama、PulseMCP 等第三方生态平台,为开发者提供了数千个现成的 MCP 服务器资源。本篇文章将基于论文《Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions》及相关权威资料,深入剖析 MCP 的架构、协议流程、通信机制、安全威胁及典型应用,并与 RAG 进行对比,最后展望其未来发展方向。

MCP

MCP 核心架构与组件

MCP 采用典型的客户端-服务器架构。其主要组成包括:

  • MCP Host(主机环境):这是运行 AI 模型或应用的环境,如 Claude Desktop 聊天应用、面向代码的智能 IDE(如 Cursor)、各种 AI 代理框架等。Host 内部嵌入 MCP 客户端,并集成交互界面及本地资源。主机环境负责接收用户输入,呈现对话或界面,并最终将用户请求交给 MCP 客户端。

  • MCP Client(协议客户端):内置于 Host 中的组件,负责同 MCP 服务器进行协议级通信。Client 与每个服务器之间通过一对一的连接进行通信,并在启动时执行功能发现。具体而言,Client 会向 MCP 服务器发出查询请求:“你拥有哪些功能?”服务器返回其 工具(Tools)资源(Resources)提示模板(Prompts) 等可用能力清单。在正式会话中,Client 接收来自 AI 模型的指令或决定,并根据请求选择合适的 MCP 服务器和工具,同时处理来自服务器的响应和通知,以确保数据和状态在 Host 与外部系统之间安全传递。MCP 客户端还负责对工具使用进行统计、采样等,以辅助性能优化和监控。

  • MCP Server(协议服务器):独立运行的小型服务程序,负责对外暴露具体功能模块和数据接口,并通过 MCP 协议与 Client 交互。每个 MCP 服务器通常专注于某一类工具或数据源的集成,例如对接 GitHub、Slack 或企业内部数据库等。MCP 服务器将能力分为三大类:工具(Tools)资源(Resources)提示(Prompts)

    • 工具(Tools):提供执行外部操作的能力,类似传统意义上的函数或 API。通过工具,MCP 服务器可以在模型请求时自动调用外部服务或 API,并返回结果给模型。例如,一款天气查询工具可让 AI 模型获取实时气象数据;一款数据库工具可让模型查询企业客户记录。相比于多个独立的函数调用接口,MCP 的工具机制使得功能发现和调用更加标准化和自动化。
    • 资源(Resources):向 AI 模型提供可查询的数据集和信息。资源可以是结构化数据库、文档库、日志、云端存储等,当模型需要访问数据时,MCP 服务器会检索并提供相应内容。举例来说,销售助理机器人可以通过资源访问产品手册或知识库;业务报告分析可能通过资源查询历史交易数据。
    • 提示模板(Prompts):预定义的交互模板或工作流示例,用于提高任务执行效率和输出的一致性。Prompt 在 MCP 服务器上配置后,可以被多个模型复用,例如客服机器人可能使用统一的自动回复模板来处理常见问题,数据标注任务可能使用固定格式的提示模板等,从而保证多次任务之间的风格和质量一致。

    MCP_workflow

图:MCP 协议的总体架构示意。MCP 通过标准化的 Client-Server 架构,将 Host(AI 应用环境)与外部工具、数据源无缝连接。Host 内的 MCP Client 负责与多个 MCP Server 建立 1:1 连接。各类 MCP Server 暴露 Tools、Resources、Prompts 等能力,可访问本地数据源或远程服务,并以 JSON-RPC 等协议与 Host 交换消息。

在 MCP 的整体架构中,**传输层(Transport Layer)*起到安全通信的作用。当前支持两种主要方式:**本地 STDIO**(适用于客户端与服务器运行在同一机器或环境中时的标准输入输出流通信)和*HTTP+SSE(适用于远程部署,使用 HTTP 请求与服务器交互,并通过 Server-Sent Events 进行实时推送)。所有 MCP 通信使用 JSON-RPC 2.0 标准封装,保证消息请求、响应和通知的结构一致。通信过程通常如下:客户端启动时依次连接所有配置的 MCP 服务器并发起功能发现请求,服务器返回其可用工具/资源列表;随后在正常会话中,客户端根据模型决策发出具体调用请求,服务器执行对应操作并将结果回传;同时,服务器还通过通知(notifications)机制向客户端推送状态更新或中间数据,保持双向实时同步。

MCP 服务器生命周期

MCP 服务器的安全与稳定运行贯穿其创建(Creation)、**运行(Operation)更新(Update)**三个生命周期阶段。如下图所示,各阶段对应不同的关键任务和潜在威胁:

MCP_server

图:MCP 服务器组件和生命周期。MCP 服务器由元数据、配置文件、工具列表、资源列表、提示模板等组件构成。在创建阶段需完成服务器注册、安装部署和代码完整性校验,防范名称冲突、安装包冒充或后门植入等风险;在运行阶段负责接收并执行工具调用、处理命令,并保证在沙箱中隔离执行,防止命令冲突或沙箱逃逸;在更新阶段则进行权限验证、版本管理和淘汰旧版等操作,以避免权限滥用或配置漂移。

  • 创建阶段:在此阶段,新服务器完成注册和部署。服务器必须被赋予唯一的名称和身份,以供客户端发现和连接。随后安装部署流程需确保正确引入所有配置文件、源代码和依赖包。关键环节之一是代码完整性验证:通过签名校验或哈希校验等手段,确保服务器代码未被篡改,防止后门植入。一旦完成创建阶段,服务器即可上线并响应客户端请求。
  • 运行阶段:服务器开始实际处理客户端请求并调度工具。在这一阶段,服务器按照请求定位并调用适当的工具或资源执行操作。例如,当模型发出查询天气的命令时,MCP 服务器会触发相应的天气查询工具,并返回结果。服务器还需处理命令解析(包括可能的多命令或斜线命令),并解决不同功能间的潜在命令名称冲突。为了安全性,工具执行被置于隔离的运行环境(沙箱)中,确保即使工具代码有缺陷或恶意行为,也无法危害宿主环境。在运行期间,服务器应保持稳定的执行环境,通过日志和监控捕捉异常,实现高可用的任务服务。
  • 更新阶段:随着时间推移,MCP 服务器需要引入新工具、修复漏洞或淘汰过时功能,故而进入更新流程。这包括修改服务器的权限配置,确保更新后权限边界正确无误,防止旧有权限被意外保留。同时,需要进行版本控制管理,管理好不同版本的兼容性,防止发布引入新的安全漏洞。对于旧版本的停用或卸载也很重要,以避免攻击者利用已知漏洞对旧版服务器进行攻击。整个更新过程中,应采用 CI/CD 流水线、版本签名等手段,保证更新的安全和一致性。

安全威胁模型与防护机制

由于 MCP 提供了 AI 系统与外部世界的直接接口,其每个阶段均潜藏安全风险。研究指出,MCP 的安全威胁主要可归纳如下:

  • 注册和部署阶段风险:恶意注册(名称冲突)导致用户连接到伪造服务器;恶意安装包(Installer Spoofing)诱导用户安装包含后门的服务器软件;代码篡改或签名绕过可能在服务器中植入恶意逻辑。
  • 运行阶段风险:工具和命令名称冲突可导致错误调用不安全工具;不安全的斜线命令解析可能引发权限提升或执行未授权指令;沙箱逃逸风险使得在服务器上执行的代码突破隔离,访问主机系统资源。
  • 更新阶段风险:权限持久化(Privilege Persistence)指过期的凭证或角色未及时撤销,攻击者可继续利用先前的授权操作;版本管理不当(Vulnerable Versions)会导致部署含有已知漏洞的旧版服务器;配置漂移(Configuration Drift)则使服务器配置随时间偏离安全基线,带来潜在漏洞。

针对上述威胁,需要采取多层防护措施:

  • 沙箱和最小权限:在运行阶段,将工具执行置于强隔离的沙箱环境中。可以使用容器(如 Docker)或虚拟化技术限制每个工具的系统访问权限,严格控制其网络和文件系统的可见性。如果可能,还应配置 ACL 策略,仅允许必要的外部通信。
  • 身份验证与签名:在创建和更新阶段,所有 MCP 服务器包和配置应经过数字签名和完整性校验。公私钥签名可防止安装包被篡改,而哈希校验可确认证书或版本文件无异常,避免后门代码混入。此外,实现权限管理系统,确保只有经过验证的客户端和服务器才能相互通信。
  • 命名空间和注册管理:通过集中式注册表或官方平台(如 MCP.so、Glama)来管理服务器名称空间。官方仓库应对发布的 MCP 服务器进行审计、评级,提供信誉和验证机制,减少同名冲突和恶意服务器传播的可能。
  • 监控与审计:部署详细的日志和审计机制,记录工具调用、权限变更以及配置更新等关键操作。一旦发生配置漂移或权限未撤销等问题,及时触发警报并回滚到安全状态。对于部署在云端(如 Cloudflare)的 MCP 服务,应采用多租户隔离和实时监测,以防敏感数据泄露。
  • 定期更新与自动化:通过自动化管道(CI/CD)快速发布补丁和更新,防止出现长期的漏洞窗口。使用版本控制和自动化测试确保更新不会引入新的冲突。同时,应提供老版本回滚警告和淘汰机制,避免长时间运行过时的软件。

典型应用场景

MCP 的设计目标是让各种 AI 应用能方便地调用外部工具和数据。以下几个场景充分体现了 MCP 的价值:

  • AI Agent(智能多步骤任务代理):现代 AI 代理需要跨多个系统自动执行复杂任务。借助 MCP,代理可以轻松发现并使用第三方工具。例如,一个处理客户升级请求的邮件代理可以按步骤调用不同工具:先用 classify_issue 工具识别问题类型,再用 fetch_customer_data 工具查询用户档案,然后用 draft_email 提示模板生成回复草稿,如有需要则用 create_ticket 工具在工单系统中提出新工单,最后用 send_email 工具发送最终邮件。这些工具可以是内部托管的 MCP 服务器上的功能,也可以是像工单系统、电子邮件服务、CRM 系统等外部服务通过 MCP 标准化接口暴露出的能力。MCP 让 AI 代理在多个任务之间无缝切换,无需为每种服务编写单独的集成代码。
  • IDE 编程助手:在软件开发领域,IDE 中集成的 AI 编码助手(如 Cursor、Codeium、JetBrains Copilot Studio)可以使用 MCP 来扩展功能。例如 Cursor 通过 MCP 让 AI 模型访问代码仓库、构建流水线、文档平台等资源。当开发者在 IDE 中输入指令时,AI 代理判断是否需要调用外部工具:若需要,它将通过 MCP 客户端向合适的服务器发送请求,由服务器定位工具并完成相应操作(如运行测试、执行代码分析、自动修改文件等),然后将结果返回给代理。这一流程自动化了重复性任务,减少了人为错误,提高了开发效率。
  • 企业工作流管理:对于企业级应用,MCP 能将知识库、日程、邮件、财务等系统接入智能代理。例如,客服自动化系统可以通过 MCP 访问内部知识库、客户数据库和邮件服务,实现智能问答与任务调度。金融机构可用 MCP 将交易平台与风控模型对接,自动执行风险评估和合规检查。举例来说,Cloudflare 推出的云端 MCP 服务使企业可以远程部署 MCP 服务器并通过 OAuth 控制访问。这样多个终端(Web、桌面、移动)都能安全调用中心化的 MCP 工具链,方便在组织级范围内进行 AI 驱动的工作流编排。
  • 其他场景:此外,还有诸多场景正在探索。例如,使用 MCP 的微软 Copilot Studio 可通过低代码方式构建支持多个 API 的自定义智能代理;MCP 还可用于将工业控制系统、安全监测平台等专业领域接入 AI 助手,实现领域自适应的对话和操作。当前市场上已有专为不同行业定制 MCP 服务器的案例,如金融平台采用 MCP 提高数据处理效率,支付平台(Stripe)通过 MCP 将支付 API 暴露给 AI 助手等。

MCP 与 RAG 的对比

在增强模型知识和能力方面,最常见的另一范式是检索增强生成(Retrieval-Augmented Generation,RAG)。RAG 通过在模型提示中插入检索到的文档来补充实时信息,而 MCP 则通过工具调用协议为模型提供交互能力。两者的区别主要体现在以下方面:

  • 上下文格式:RAG 通常将检索结果以纯文本形式拼接到 Prompt 中,作为模型的附加上下文。而 MCP 则采用结构化上下文,通过标准化协议将信息作为独立的数据片段传递给模型。模型能够识别带标签的上下文段(如 JSON 格式的 “user_profile”、“order_history”),并据此进行推理。这种**命名空间(Namespacing)**的方法让上下文更加清晰可读,并支持结构化数据(如数据库记录)。
  • 代币使用成本:由于 RAG 的检索内容直接进入 Prompt,会消耗大量令牌。随着添加的文档越多,Prompt 越长,导致推理成本和延迟都会显著增加。MCP 在这一点上更为高效,因为工具调用时发送的是结构化引用而非长文本,当返回信息时也通常只返回紧要结果,减少了重复的文本传输。因此 MCP 在上下文管理上通常有更低的令牌开销。
  • 检索引擎 vs. 协议机制:RAG 常用的检索引擎是向量数据库(如 OpenSearch、Pinecone 等)。它依赖对大量文档进行相似度搜索,将最相关的文本段喂入模型。MCP 不是通过相似度检索提供上下文,而是通过连接到外部系统并以 API 请求形式拉取信息。换言之,MCP 本质上是为模型提供一套工具使用接口,让模型不仅能获取数据,还能主动操作外部服务。
  • 工具调用能力:RAG 本身不支持主动调用外部操作;模型即便“知道”答案,也无法修改外部数据或触发工作流,它只能提供基于检索内容的回复。MCP 则原生支持工具调用,模型可以直接执行 API 调用、数据库更新等操作,这使其特别适用于需要智能代理控制外部系统的场景。例如,前述客服代理案例中,MCP 允许机器人在发送回复后自动创建支持单,而在 RAG 框架下则无法做到这一点,只能给出文字建议。
  • 设计哲学与生态:RAG 更偏向“被动式”的知识补充和提升,适合需要快速接入外部文档库的场景,如问答系统、文档搜索等。而 MCP 则强调“主动式”的跨系统融合和操作控制,体现了 Agent 驱动的设计理念。RAG 对模型无特殊要求,任何可通过提示的模型都可以使用;MCP 则需要模型和客户端具备解释结构化协议的能力(目前如 Claude、带 Agent SDK 的 OpenAI 模型已支持),以及客户端与服务器端共同遵守协议规范。
  • 典型适用场景:RAG 在需要补充大量领域知识(如法律文档检索、文献综述、教育答疑等)时更有效;MCP 则在需要高效接口调用和工作流编排(如自动化办公、DevOps 工具集成、动态业务流程等)时更合适。两者并非完全互斥:实践中可以结合使用——例如,在 MCP 通道中也可内部使用向量检索技术来丰富特定资源,或让 RAG 系统在回答中推荐调用某些 MCP 工具。

综上所述,RAG 和 MCP 在提升 LLM 能力方面各有侧重:RAG 擅长静态知识检索,MCP 擅长动态工具融合。正确地根据应用需求选择二者或两者结合,将极大增强 AI 系统的表现力和灵活性。

生态系统与支持工具

MCP 社区正在快速发展,已有丰富的服务器库和开发框架:

  • 社区服务器注册表:目前尚无官方中央市场,社区驱动的平台逐渐出现,如 MCP.so、Glama、PulseMCP 等网站,这些平台分别托管了数千个 MCP 服务器。根据统计,截至 2025年3月,MCP.so 平台已收录近 4.8 千个服务器,Glama 平台收录 ~3.3 千个。这些平台让开发者可以轻松发现、试用或贡献 MCP 服务器,实现生态共享。桌面端工具如 Dockmaster、Toolbase 等也提供本地部署管理功能,便于在本地环境中快速运行 MCP 服务器。
  • SDK与框架:官方发布了多语言的 MCP SDK(包括 TypeScript、Python、Java、Kotlin、C# 等),简化了客户端与服务器开发。社区还贡献了多种框架(如 FastMCP、EasyMCP、MCP Inspector 等)用于快速定义工具、生成 API 文档和部署 MCP 服务。自动化平台如 Foxy Contexts、Higress MCP Server Hosting 等,通过使用 WASM 插件或 Envoy 代理,将传统服务封装成 MCP 工具,从而降低开发者的集成工作量。
  • 平台支持:许多开发平台、云服务已经集成 MCP。比如 Anthropic 的 Claude Desktop 已内置 MCP 客户端和多种官方服务器;OpenAI 的 Agent SDK 增加了对 MCP 的支持,使 ChatGPT 代理可以调用标准化的外部工具;微软、Cloudflare 等也推出了针对云资源管理的 MCP 服务器或服务(例如 Cloudflare 提供远程 MCP 托管并集成 OAuth 认证),使企业级用户能够轻松使用 MCP。

整个 MCP 生态呈现出“众包式”特点:大量实验性服务器不断涌现,初创项目和社区组织针对各领域(如数据分析、项目管理、财务系统等)开发定制 MCP 连接器,为 AI 模型提供丰富多元的插件能力。

未来发展趋势

MCP 作为一个新兴协议,未来仍有许多待探索的方向:

  • 跨模态(Multi-Modal)支持:现有 MCP 主要面向文本和一般 API 接口,未来有望扩展到视觉、音频等多模态信息场景。一些文章指出,MCP 可以实现不同模型和数据类型间的无缝通信,使 AI 系统跨越文本、图像、音频等多种输入并行工作。例如,将视觉识别工具或语音识别模型作为 MCP 工具集成,让文本模型能够引用图像内容或音频事件,进一步增强对真实世界的感知。BytePlus 的分析认为,MCP 架构可支持“多模态集成”,通过上下文管理和跨模态翻译层,将视觉、听觉信息与文本上下文关联,使模型获得更加丰富、动态的感知能力。
  • 低代码/声明式工具集成:为降低开发门槛,未来可能出现更友好的 MCP 工具注册与编排方式。例如,通过 YAML 或图形化界面来定义工具链和工作流,而不是手写大量代码。一些研究和博客建议支持类似 toolchains.yaml 的方案,让开发者以声明式格式组合工具流程。同时,低代码平台(如微软 Copilot Studio 的多智能体编排)可能提供界面化工具,让业务人员也能通过拖拽或表单方式构建 MCP 驱动的自动化流程,而无需深入编程。
  • 客户端自治与智能化:未来 MCP 客户端(Host 侧)本身可能具备更强的智能决策能力。当前客户端主要充当通信桥梁,但未来可集成简易模型或规则引擎,以在本地预先筛选或合并多服务器的响应。比如,客户端可以基于对话上下文自动优先调用最相关的服务器,或并行下发多个服务器请求并选取最佳答案,从而提升效率。增强的本地缓存和离线模式也能让客户端在网络条件受限时仍执行基本任务。
  • 多代理协同编排:随着多智能体系统兴起,情境感知的代理协作成为研究热点。当多个 AI 代理通过 MCP 共享上下文和任务时,会出现自发的协同行为和竞争关系。SOC Radar 提到,带有记忆和持久上下文的代理可以相互分配子任务并相互学习,但也需要对代理意图进行验证,防止“流氓代理”行为。未来 MCP 可能引入新的协议层,支持多代理间的协作逻辑,例如内置“黑名单”、“白名单”机制或仲裁流程,使多个代理能基于共同规则安全互动。此外,多步骤工作流将更复杂,MCP 服务器或客户端可能内置支持条件分支的图形化流程(如类 LangGraph 的图形编排),以便在场景需要时灵活决策。
  • 治理与安全合规:随着 MCP 在企业级应用的普及,对安全性、可审计性和合规性的需求将不断增加。未来可能出现内置的安全标签和审计功能,例如对交互输出进行“提示公证”(Prompt Notarization)或对关键操作打标签(如“GDPR 安全”或“需人工复审”标记),以提高系统可解释性。此外,社区可能推动 MCP 标准中加入权限声明、审计日志格式等扩展,从协议层面支持监管合规。

总体而言,MCP 有望在未来形成一个泛 AI 工具互联层:不仅局限于文本或单一模型,而是扩展为支持多模态、多模型(如同时使用 OpenAI、Anthropic、Meta 等多个底层模型)的大规模协同工作框架。我们已经看到诸如标准化适配层、无缝切换不同模型的实验(类似“llm-router”方案)在出现。随着生态成熟,MCP 或许将成为 AI 代理间“互操作协议”的基础,与 LLM 本身和各种部署平台共生发展。

结论

Model Context Protocol 作为新一代 AI-工具集成协议,正在重塑我们构建智能系统的思路。从当前的研究与产业实践来看,MCP 通过统一接口和工作流,大幅降低了模型调用外部资源的复杂性。本文基于最新论文和技术文档详细梳理了 MCP 的架构、流程、安全风险及典型应用场景,并与传统的 RAG 模式进行了对比。总体看,MCP 让 AI 应用从“被动查询”转向“主动操控”,使模型能够像人一样调用身边的工具完成任务,同时也带来了新的安全与治理挑战。未来,随着更多生态厂商和社区的参与,MCP 的标准和生态体系将日益完善,其在跨模态、多智能体编排以及企业级部署等方面的能力也将不断加强。对 AI 工程师和安全研究者而言,关注 MCP 的发展、积极参与其生态建设,并在实践中探索最佳的安全防护和治理策略,将是接下来一段时间的重要课题。

参考资料: 本文内容参考自 X. Hou 等人发表于《Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions》、Anthropic 官方博客、MCP 官方文档、行业分析文章及各类社区贡献文档和案例(如 Cloudflare、Cursor、DevContentOps 等)等。

  • Title: 模型上下文协议(MCP)
  • Author: KDAIer
  • Created at : 2025-07-22 12:00:00
  • Updated at : 2025-07-22 11:53:08
  • Link: https://kcarnival.cn/2025/07/22/mcp/
  • License: All Rights Reserved © KDAIer
Comments