
MCP (模型上下文协议)架构设计深度剖析 原创
最近,AI Agent 和外部工具之间的互动变得越来越流行。从 OpenAI 最先推出的 Function Calling 功能,到各种插件和框架,大家都在努力让 AI 模型能更有效地调用外部的功能。不过,目前这些集成方式还是比较分散,开发者需要为每个服务手动设置接口、处理认证和逻辑,而且不同平台之间还互不兼容,确实挺麻烦的。
就在这种情况下,Anthropic 在2024年底推出了一个叫做模型上下文协议(Model Context Protocol,简称 MCP)的新东西。这个协议的野心不小,它想做的事情就像编程语言里的 LSP(Language Server Protocol)一样,为 AI 和工具之间的互动设定一个标准,让 AI Agent 能动态地发现、选择和组织工具,甚至还支持人在操作过程中插手。
自从 MCP 推出以来,它的发展速度非常快,社区里已经出现了好几千个 MCP 服务器,能连接到 GitHub、Slack 甚至 Blender 这样的 3D 设计工具。像 Cursor、Claude Desktop 这样的应用也开始支持 MCP了,只要装上新的服务器,就能扩展它们的能力。
MCP 架构设计剖析
1、MCP 架构设计剖析
MCP 架构设计分为核心组件、传输层和通信、MCP 服务器生命周期等构成,下面详细剖析之。
1.1、核心组件
MCP 架构由三个核心组件组成:MCP 主机(MCP Host)、MCP 客户端(MCP Client)和 MCP 服务器(MCP Server)。这些组件协同工作,以促进 AI 应用、外部工具和数据源之间的无缝通信,确保操作的安全性和正确管理。如图 2 所示,在典型工作流程中,用户向 MCP 客户端发送提示词,客户端分析意图,通过 MCP 服务器选择适当的工具,并调用外部 API 来检索和处理所需的信息,然后通知用户结果。
1.1.1、MCP 主机
MCP 主机是一个 AI 应用,它在运行 MCP 客户端的同时,为执行基于 AI 的任务提供环境。它集成交互工具和数据,以实现与外部服务的顺畅通信。比如: Claude Desktop 用于 AI 辅助内容创建,Cursor 是一个 AI 驱动的 IDE,用于代码补全和软件开发,以及执行复杂任务的 AI Agent。MCP 主机承载 MCP 客户端,并确保与外部 MCP 服务器通信。
1.1.2、MCP 客户端
MCP 客户端在主机环境中充当中介,管理 MCP 主机与一个或多个 MCP 服务器之间的通信。它向 MCP 服务器发起请求,查询可用功能,并获取描述服务器能力的响应。这确保了主机与外部工具之间的无缝互动。除了管理请求和响应外,MCP 客户端还处理来自 MCP 服务器的通知,提供有关任务进度和系统状态的实时更新。它还执行采样,收集有关工具使用和性能的数据,使优化和明智的决策成为可能。MCP 客户端通过传输层与 MCP 服务器通信,促进主机与外部资源之间的安全、可靠的数据交换和顺畅互动。
1.1.3 MCP 服务器
MCP 服务器使 MCP 主机和客户端能够访问外部系统并执行操作,提供三种核心能力:工具、资源和提示词。
- 工具:启用外部操作。工具允许 MCP 服务器调用外部服务和 API,代表 AI 大模型执行操作。当客户端请求操作时,MCP 服务器识别适当的工具,与服务互动,并返回结果。比如:如果 AI 大模型需要实时天气数据或情感分析,MCP 服务器连接到相关 API,检索数据,并将其传递给主机。与传统的函数调用不同,这需要多个步骤并将调用与执行分开,MCP 服务器的工具简化了这一过程,允许模型根据上下文自主选择和调用适当的工具。一旦配置,这些工具遵循标准化的供应和消费模型,使它们模块化、可重用,并且易于其他应用程序访问,从而提高系统效率和灵活性。
- 资源:向 AI 大模型公开数据。资源提供 MCP 服务器可以向 AI 大模型公开的结构化和非结构化数据集的访问。这些数据集可能来自本地存储、数据库或云平台。当 AI 大模型请求特定数据时,MCP 服务器检索和处理相关信息,使大模型能够做出数据驱动的决策。比如:推荐系统可能访问客户互动日志,或者文档摘要任务可能查询文本库。
- 提示词:用于工作流程优化的可重用模板。提示词是 MCP 服务器生成和维护的预定义模板和工作流程,以优化 AI 响应并简化重复任务。它们确保响应的一致性并提高任务执行效率。比如:客户支持聊天机器人可能使用提示词模板提供统一和准确的响应,而注释任务可能依赖于预定义的提示词来保持数据标注的一致性。
1.2 传输层和通信
传输层确保安全、双向通信,允许主机环境与外部系统之间的实时互动和有效数据交换。传输层管理客户端的初始请求传输、服务器响应的传递以及保持客户端了解正在进行的更新的通知交换。MCP 客户端和 MCP 服务器之间的通信遵循结构化过程,从客户端查询服务器功能开始。收到请求后,服务器以初始响应回应,列出客户端可以利用的可用工具、资源和提示。一旦建立连接,系统保持持续的通知交换,确保服务器状态的变化或更新实时反馈给客户端。这种结构化通信确保了高性能互动,并使 AI 大模型与外部资源保持同步,提高 AI 应用的效果。
1.3 MCP 服务器生命周期
如图3所示,MCP 服务器的生命周期包括三个关键阶段:创建、运行和更新。每个阶段定义了确保 MCP 服务器安全和高效运行的关键活动,使 AI 大模型和外部工具、资源和提示之间能够无缝互动。
1.3.1 MCP 服务器组件
MCP 服务器负责管理外部工具、数据源和工作流程,为 AI 大模型提供执行任务所需的必要资源,确保高效和安全。它包括几个关键组件,确保顺畅和有效的操作。元数据包括有关服务器的基本信息,比如:其名称、版本和描述,允许客户端识别和与适当的服务器互动。配置涉及源代码、配置文件和清单,定义服务器的操作参数、环境设置和安全策略。工具列表存储可用工具的目录,详细说明其功能、输入输出格式和访问权限,确保适当的工具管理和安全。资源列表管理对外部数据源的访问,包括 Web API、数据库和本地文件,指定允许的端点及其相关权限。最后,提示词和模板包括预配置的任务模板和工作流程,提高 AI 大模型执行复杂操作的效率。这些组件共同使 MCP 服务器能够为 AI 应用提供无缝工具集成、数据检索和任务编排。
1.3.2 创建阶段
创建阶段是 MCP 服务器生命周期的初始阶段,在此阶段,服务器被注册、配置并准备运行。此阶段涉及三个关键步骤。服务器注册为 MCP 服务器分配唯一名称和身份,允许客户端发现并连接到适当的服务器实例。安装程序部署涉及安装 MCP 服务器及其相关组件,确保正确的配置文件、源代码和清单到位。代码完整性验证验证服务器代码库的完整性,以防止未经授权的修改或篡改,使服务器在运行前保持完整性。创建阶段的成功完成确保 MCP 服务器准备好处理请求并与外部工具和数据源安全互动。
1.3.3 运行阶段
运行阶段是 MCP 服务器积极处理请求、执行工具调用并促进 AI 应用与外部资源之间无缝互动的阶段。工具执行允许 MCP 服务器根据 AI 应用的请求调用适当的工具,确保所选工具执行其预期操作。斜杠命令处理使服务器能够解释和执行多个命令,包括通过用户界面或 AI Agent 发出的命令,同时管理潜在的命令重叠以防止冲突。沙箱机制执行确保执行环境隔离和安全,防止未经授权的访问并减轻潜在风险。在整个运行阶段,MCP服务器保持稳定和受控的环境,使可靠和安全的任务执行成为可能。
1.3.4 更新阶段
更新阶段确保 MCP 服务器保持安全、最新,并能够适应不断变化的需求。此阶段包括三个关键任务。授权管理验证更新后访问权限保持有效,防止更新后服务器资源的未经授权使用。版本控制维护不同服务器版本之间的一致性,确保新更新不会引入漏洞或冲突。旧版本管理停用或删除过时版本,防止攻击者利用以前版本的已知漏洞。了解MCP服务器的生命周期对于识别潜在漏洞和设计有效的安全措施至关重要。每个阶段引入了必须仔细处理的独特挑战,以保持MCP服务器在动态 AI 环境中的安全性、效率和适应性。
本文转载自玄姐聊AGI 作者:玄姐
