ai
  • index
  • 1.首页
  • 2.介绍
  • 3.架构概览
  • 4.服务器概念
  • 5.客户端概念
  • 6.版本控制
  • 7.连接到远程MCP服务器
  • 8.连接到本地MCP服务器
  • json_rpc
  • 9.构建一个MCP服务器
  • 10.检查员
  • 11.构建一个MCP客户端
  • 14.架构
  • 15.基础协议概述
  • 16.生命周期
  • 17.传输
  • 18.授权
  • 19.安全最佳实践
  • 20.取消
  • 21.Ping
  • 22.进展
  • 23.Roots
  • 24.采样
  • 25.启发
  • 26.服务器特性
  • 27.提示词
  • 28.资源
  • 29.工具
  • 30.完成
  • 31.日志记录
  • 32.分页
  • 33.架构参考
  • URI模板
  • 12.实现
  • http.server
  • 动态客户端注册协议
  • 受保护资源元数据
  • 授权服务器元数据
  • JWKS
  • PKCE
  • PyJWT
  • secrets
  • watchfiles
  • 实现authorization
  • 实现cancel
  • 实现completion
  • 实现logging
  • 实现pagination
  • 实现process
  • 实现transport
  • psutil
  • pytz
  • zoneinfo
  • contextlib
  • Starlette
  • mcp.1.starter
  • mcp.2.Resource
  • mcp.3.structured_output
  • mcp.4.prompts
  • mcp.5.context
  • mcp.6.streamable
  • mcp.7.lowlevel
  • mcp.8.Completion
  • mcp.9.Elicitation
  • mcp.10.oauth
  • mcp.11.integration
  • mcp.12.best
  • mysql-mcp
  • databases
  • uvicorn
  • asynccontextmanager
  • AsyncExitStack
  • streamable
  • aiohttp
  • publish
  • email
  • schedule
  • twine
  • 1.教学文档总览
  • 2.教师使用指南
  • 3.教学系统快速参考
  • 4.新生入门指南
  • 5.学生使用指南
  • 1. MCP架构
  • 2. 核心组件
    • 2.1 架构图
    • 2.2 主机 (Host)
    • 2.3 客户端 (Client)
    • 2.4 服务器 (Server)
  • 3. 设计原则
    • 3.1 服务器搭建应当极其简便
    • 3.2 服务器应具备高度可组合性
    • 3.3 服务器不应能读取整个对话,也无法"窥探"其他服务器的内容
    • 3.4 功能可以逐步添加到服务器和客户端中
  • 4. 能力协商
    • 4.1 协商流程
    • 4.2 能力声明
    • 4.3 能力示例
  • 5. 总结

1. MCP架构 #

Model Context Protocol (MCP) 采用客户端-主机-服务器架构,每台主机可运行多个客户端实例。该架构使用户能在应用间集成AI能力,同时保持清晰的安全边界并实现关注点隔离。基于JSON-RPC构建的MCP提供了一种有状态的会话协议,专注于客户端与服务器之间的上下文交换和采样协调。

2. 核心组件 #

2.1 架构图 #

2.2 主机 (Host) #

宿主进程充当容器和协调者的角色:

  • 创建并管理多个客户端实例 - 负责启动和维护客户端连接
  • 控制客户端连接权限与生命周期 - 管理客户端的访问权限和运行状态
  • 强制执行安全策略和同意要求 - 确保所有操作符合安全规范
  • 处理用户授权决策 - 管理用户权限和访问控制
  • 协调AI/LLM集成与采样 - 处理AI模型的集成和请求调度
  • 管理跨客户端的上下文聚合 - 整合来自不同客户端的信息

2.3 客户端 (Client) #

每个客户端由主机创建并保持独立的服务器连接:

  • 为每个服务器建立一个有状态的会话 - 维护与特定服务器的连接状态
  • 处理协议协商和能力交换 - 与服务器协商支持的功能
  • 路由协议消息双向传输 - 在主机和服务器之间传递消息
  • 管理订阅和通知 - 处理事件订阅和通知机制
  • 在服务器之间维护安全边界 - 确保不同服务器间的隔离

重要说明:一个主机应用程序创建并管理多个客户端,每个客户端与特定服务器之间保持1:1的对应关系。

2.4 服务器 (Server) #

服务器提供专业化的上下文环境与功能支持:

  • 通过MCP原语暴露资源、工具和提示 - 提供标准化的接口
  • 独立运作,职责明确 - 每个服务器专注于特定功能
  • 通过客户端接口进行请求采样 - 响应客户端的请求
  • 必须遵守安全限制 - 遵循安全策略和权限控制
  • 可以是本地进程或远程服务 - 支持多种部署方式

3. 设计原则 #

MCP建立在若干关键设计原则之上,这些原则指导了其架构与实现:

3.1 服务器搭建应当极其简便 #

  • 主机应用程序负责处理复杂的编排职责 - 简化服务器开发
  • 服务器专注于特定且定义明确的功能 - 职责单一,易于维护
  • 简洁的接口能最大限度地减少实现开销 - 降低开发成本
  • 清晰的分离能实现可维护的代码 - 提高代码质量

3.2 服务器应具备高度可组合性 #

  • 每台服务器都独立提供专注的功能 - 模块化设计
  • 多台服务器可无缝组合 - 支持功能组合
  • 共享协议实现互操作性 - 标准化接口
  • 模块化设计支持可扩展性 - 便于功能扩展

3.3 服务器不应能读取整个对话,也无法"窥探"其他服务器的内容 #

  • 服务器仅接收必要的上下文信息 - 最小权限原则
  • 完整的对话历史记录保留在主机端 - 集中管理
  • 每个服务器连接保持隔离状态 - 安全隔离
  • 跨服务器交互由主机控制 - 统一协调
  • 主机进程强制执行安全边界 - 安全控制

3.4 功能可以逐步添加到服务器和客户端中 #

  • 核心协议提供最低限度的必需功能 - 基础功能
  • 可根据需要协商额外的功能 - 按需扩展
  • 服务器与客户端独立演进 - 灵活发展
  • 为未来扩展性设计的协议 - 前瞻性设计
  • 向后兼容性得以保持 - 稳定性保证

4. 能力协商 #

Model Context Protocol采用基于能力的协商系统,客户端和服务器在初始化阶段会明确声明各自支持的功能特性。这些能力决定了会话期间可用的协议功能和基础操作原语。

4.1 协商流程 #

4.2 能力声明 #

  • 服务器声明其能力,如资源订阅、工具支持以及prompt templates
  • 客户端声明其支持的功能,如采样支持和通知处理
  • 双方必须在整个会话过程中尊重已声明的能力范围
  • 可通过协议扩展协商额外功能

4.3 能力示例 #

每项能力都会解锁会话期间可使用的特定协议功能。例如:

  • 已实现服务器特性必须在服务器的功能中宣传
  • 发送资源订阅通知需要服务器声明支持订阅功能
  • 工具调用需要服务器声明其工具能力
  • 采样要求客户端在其功能声明中表明支持

这种能力协商确保客户端和服务器对支持的功能有清晰理解,同时保持协议的可扩展性。

5. 总结 #

MCP架构通过清晰的角色分离和设计原则,实现了:

  1. 模块化设计 - 每个组件职责明确,易于开发和维护
  2. 安全隔离 - 通过主机控制实现安全边界
  3. 可扩展性 - 支持功能逐步添加和组合
  4. 互操作性 - 基于标准化协议实现组件间通信

这种架构使得AI能力能够安全、高效地集成到各种应用程序中,同时保持了系统的灵活性和可维护性。

访问验证

请输入访问令牌

Token不正确,请重新输入