MCP 架构设计

模型上下文协议(MCP)采用客户端-宿主-服务端架构,单个宿主可运行多个客户端实例。该架构支持用户跨应用集成AI能力,同时保持明确的安全边界与功能隔离。基于JSON-RPC构建的MCP协议,专注于客户端与服务端间的上下文交换及采样协调(sampling coordination),提供有状态的会话管理。

核心组件

1. 宿主(Host)

宿主进程作为容器和协调器:

  • 创建和管理多个客户端实例
  • 控制客户端连接权限与生命周期
  • 强制执行安全策略和授权要求
  • 处理用户授权决策
  • 协调AI/LLM集成与采样
  • 管理跨客户端的上下文聚合

2. 客户端(Clients)

每个客户端由宿主创建并维护独立的服务端连接,具体功能包括:

  • 为每个服务端建立有状态会话
  • 处理协议协商与能力交换
  • 双向路由协议消息
  • 管理订阅与通知
  • 维护服务端间的安全边界

宿主应用负责创建和管理多个客户端,每个客户端与特定服务端保持1:1对应关系。

3. 服务端(Servers)

服务端提供专业化的上下文处理与能力支持:

  • ​功能暴露​:通过MCP基础协议开放资源、工具及提示词
  • ​独立运行​:各服务端专注单一职责,独立运作
  • ​采样请求​:经由客户端接口发起模型采样
  • ​安全合规​:必须严格遵守安全约束规范
  • ​部署形态​:支持本地进程或远程服务两种部署模式

设计原则

MCP基于以下核心设计原则构建,这些原则指导着其架构设计与实现:

1. 服务端应当极易构建

  • 宿主应用处理复杂协调职责
  • 服务端专注特定明确功能
  • 简洁接口最大限度降低实现开销
  • 清晰分离确保代码可维护性

2. 服务端应具备高度可组合性

  • 每个服务端独立提供专注功能
  • 多个服务端可无缝组合
  • 共享协议确保互操作性
  • 模块化设计支持可扩展性

3. 服务端不应读取完整对话内容,也无法"窥探"其他服务端内部数据

  • 服务端仅接收必要的上下文信息
  • 完整对话历史由宿主端保留
  • 每个服务端连接保持隔离
  • 跨服务端交互由宿主端管控
  • 宿主进程强制实施安全边界

4. 功能可在服务端和客户端逐步扩展

  • 核心协议仅提供最小必要功能
  • 额外能力可按需协商添加
  • 服务端与客户端可独立演进
  • 协议设计预留未来扩展空间
  • 始终保持向后兼容性

能力协商

模型上下文协议采用基于能力的协商系统,客户端和服务端在初始化时明确声明其支持的功能。能力决定会话期间可用的协议功能和基础组件。

  • 服务端声明能力包括资源订阅、工具支持和提示模板
  • 客户端声明能力包括采样支持和通知处理
  • 双方在整个会话期间必须遵守声明的能力范围
  • 可通过协议扩展协商额外能力

每项能力解锁会话中可使用的特定协议功能,例如:

  • 已实现的服务端功能必须在服务端能力中声明
  • 发送资源订阅通知需要服务端声明订阅支持能力
  • 工具调用要求服务端声明工具相关能力
  • 采样功能需要客户端声明对应支持能力

这种能力协商机制确保客户端和服务端对支持的功能有明确认知,同时保持协议的可扩展性。

相关推荐
文心快码BaiduComate27 分钟前
百度云与光本位签署战略合作:用AI Agent 重构芯片研发流程
前端·人工智能·架构
风象南1 小时前
Claude Code这个隐藏技能,让我告别PPT焦虑
人工智能·后端
Mintopia2 小时前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮2 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬3 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia3 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区3 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两6 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪6 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain