MCP 课程文档
MCP 的架构组件
并获得增强的文档体验
开始使用
MCP 的架构组件
在上一节中,我们讨论了 MCP 的关键概念和术语。现在,让我们深入探讨构成 MCP 生态系统的架构组件。
主机、客户端和服务器
模型上下文协议 (MCP) 建立在客户端-服务器架构之上,该架构实现了 AI 模型和外部系统之间的结构化通信。
MCP 架构由三个主要组件组成,每个组件都有明确定义的角色和职责:主机、客户端和服务器。我们在上一节中提到了这些内容,但让我们深入了解每个组件及其职责。
主机
主机是用户直接交互的面向用户的 AI 应用程序。
示例包括
- AI 聊天应用,如 OpenAI ChatGPT 或 Anthropic 的 Claude Desktop
- AI 增强型 IDE,如 Cursor,或与 Continue.dev 等工具的集成
- 使用 LangChain 或 smolagents 等库构建的自定义 AI 代理和应用程序
主机的职责包括
- 管理用户交互和权限
- 通过 MCP 客户端启动与 MCP 服务器的连接
- 协调用户请求、LLM 处理和外部工具之间的整体流程
- 以一致的格式向用户呈现结果
在大多数情况下,用户将根据自己的需求和偏好选择其主机应用程序。例如,开发人员可能会选择 Cursor,因为它具有强大的代码编辑功能,而领域专家可能会使用 smolagents 中构建的自定义应用程序。
客户端
客户端是主机应用程序中的一个组件,用于管理与特定 MCP 服务器的通信。主要特点包括
- 每个客户端与单个服务器保持 1:1 连接
- 处理 MCP 通信的协议级详细信息
- 充当主机逻辑和外部服务器之间的中介
服务器
服务器是外部程序或服务,通过 MCP 协议向 AI 模型公开功能。服务器
- 提供对特定外部工具、数据源或服务的访问
- 充当现有功能的轻量级包装器
- 可以在本地(与主机在同一台机器上)或远程(通过网络)运行
- 以客户端可以发现和使用的标准化格式公开其功能
通信流程
让我们看看这些组件在典型的 MCP 工作流中如何交互
在下一节中,我们将深入探讨使这些组件能够与实际示例配合使用的通信协议。
用户交互:用户与主机应用程序交互,表达意图或查询。
主机处理:主机处理用户的输入,可能会使用 LLM 来理解请求并确定可能需要哪些外部功能。
客户端连接:主机指示其客户端组件连接到适当的服务器。
功能发现:客户端查询服务器以发现其提供哪些功能(工具、资源、提示)。
功能调用:根据用户需求或 LLM 的判断,主机指示客户端调用服务器中的特定功能。
服务器执行:服务器执行请求的功能并将结果返回给客户端。
结果集成:客户端将这些结果传回给主机,主机将其整合到 LLM 的上下文中或直接呈现给用户。
这种架构的一个关键优势是其模块化。一个主机可以通过不同的客户端同时连接到多个服务器。可以在不更改现有主机的情况下将新服务器添加到生态系统中。可以在不同服务器之间轻松组合功能。
正如我们在上一节中讨论的,这种模块化将传统的 M×N 集成问题(M 个 AI 应用程序连接到 N 个工具/服务)转换为更易于管理的 M+N 问题,其中每个主机和服务器只需实现一次 MCP 标准。
该架构可能看起来很简单,但其强大之处在于通信协议的标准化以及组件之间职责的清晰分离。这种设计允许构建一个内聚的生态系统,其中 AI 模型可以与不断增长的外部工具和数据源无缝连接。
结论
这些交互模式受若干指导 MCP 设计和演进的关键原则的指导。该协议通过提供通用的 AI 连接协议来强调标准化,同时通过保持核心协议简单但支持高级功能来保持简洁性。通过对敏感操作要求明确的用户批准来优先考虑安全性,并且可发现性实现了功能的动态发现。该协议在设计时考虑了可扩展性,通过版本控制和功能协商支持演进,并确保不同实现和环境之间的互操作性。
在下一节中,我们将探讨使这些组件有效协同工作的通信协议。
< > 在 GitHub 上更新