导航菜单

  • 1.什么是MCP
  • 2.架构概览
  • 3.理解MCP服务器
  • 4.理解MCP客户端
  • 5.版本控制
  • 6.连接本地MCP服务器
  • 7.连接远程MCP服务器
  • 8.构建MCP服务器
  • 9.构建MCP客户端
  • 10.SDKs
  • 11.理解MCP中的授权
  • 12.安全最佳实践
  • 13.MCP Inspector
  • 14.规范
  • 15.关键变更
  • 16.架构
  • 17.基础协议概述
  • 18.生命周期
  • 19.传输
  • 20.授权
  • 21.取消
  • 22.Ping
  • 23.进度
  • 24.任务
  • 25.根
  • 26.采样
  • 27.引导
  • 29.提示
  • 30.资源
  • 31.工具
  • 32.补全
  • 33.日志
  • 34.分页
  • 35.模式参考
  • Keycloak
  • 28.服务器功能
  • 1. 什么是 MCP 架构?
  • 2. 本章你将学到
  • 3. 架构一览
  • 4. 核心组件
    • 4.1 架构图
    • 4.2 主机
    • 4.3 客户端
    • 4.4 服务器
  • 5. 设计原则
  • 6. 能力协商
    • 6.1 什么是能力协商?
    • 6.2 能力与功能的对应关系
    • 6.3 会话流程示意

1. 什么是 MCP 架构? #

MCP 架构采用「主机 - 客户端 - 服务器」三层模型:一个主机(AI 应用)可运行多个客户端,每个客户端连接一个服务器。该设计让 AI 能安全、模块化地接入外部数据和工具。

通俗理解 说明
主机 = 总指挥 AI 应用(如 Claude Desktop、VS Code)负责协调、授权、聚合上下文
客户端 = 对接代表 每个服务器对应一个客户端,维护独立会话,互不干扰
服务器 = 能力提供方 提供工具、资源、提示,可以是本地进程或远程服务

MCP 基于 JSON-RPC 构建,提供有状态会话,专注于客户端与服务器之间的上下文交换和采样协调。

2. 本章你将学到 #

  • 主机、客户端、服务器各自的职责
  • 三者如何协作(请求、响应、通知)
  • 设计原则与能力协商机制
  • 如何在本系列文档中继续深入学习

3. 架构一览 #

┌─────────────────────────────────────────────────────────┐
│                    主机(AI 应用)                         │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐               │
│  │ 客户端 1 │  │ 客户端 2 │  │ 客户端 3 │  ...           │
│  └────┬─────┘  └────┬─────┘  └────┬─────┘               │
└───────┼─────────────┼─────────────┼──────────────────────┘
        │             │             │
        ▼             ▼             ▼
   ┌─────────┐  ┌─────────┐  ┌─────────┐
   │ 服务器 1 │  │ 服务器 2 │  │ 服务器 3 │  (文件、数据库、API…)
   └─────────┘  └─────────┘  └─────────┘

要点:一个主机 → 多个客户端 → 每个客户端 1:1 连接一个服务器。

4. 核心组件 #

4.1 架构图 #

flowchart LR subgraph Host[主机进程] MCPHost[MCP主机] Client1[Git客户端] Client2[DB客户端] Client3[API客户端] end subgraph Local[本地环境] GitServer[Git服务器] DBServer[数据库服务器] LocalFS[本地文件系统] DB[(数据库)] end subgraph Remote[远程环境] APIServer[API服务器] CloudAPI[云服务] end MCPHost --> Client1 & Client2 & Client3 Client1 --> GitServer --> LocalFS Client2 --> DBServer --> DB Client3 --> APIServer --> CloudAPI

4.2 主机 #

主机是容器和协调者,负责:

职责 说明
管理客户端 创建、销毁客户端,控制连接权限和生命周期
安全与授权 执行安全策略、同意要求,处理用户授权决策
AI 集成 协调 LLM 与采样,管理跨客户端的上下文聚合

举例:Claude Desktop 作为主机,管理多个 MCP 客户端,每个客户端连接一个服务器(文件、Git、Sentry 等)。

4.3 客户端 #

每个客户端由主机创建,与一个服务器保持 1:1 连接:

职责 说明
有状态会话 为每个服务器建立并维护独立会话
协议协商 处理能力交换、双向路由协议消息
订阅与通知 管理资源订阅、接收服务器通知
安全边界 保持服务器之间的隔离,不跨服务器泄露数据

4.4 服务器 #

服务器提供专门的上下文和能力:

职责 说明
暴露原语 通过 MCP 提供资源、工具、提示
职责聚焦 独立运行,每个服务器专注一类能力
请求采样 通过客户端接口请求 LLM 采样(若客户端支持)
遵守约束 必须遵守安全约束;可以是本地进程或远程服务

举例:文件系统服务器提供 read_file、list_dir;Sentry 服务器提供错误查询工具。

5. 设计原则 #

MCP 基于以下设计原则构建:

原则 通俗理解
服务器易于构建 主机承担复杂编排,服务器只做具体、定义明确的能力;接口简单,代码易维护
服务器高度可组合 每个服务器聚焦单一功能,多个服务器可无缝组合;共享协议实现互操作
服务器不能读取完整对话 服务器仅接收必要上下文;完整对话历史保留在主机;每个连接隔离,跨服务器交互由主机控制
功能可渐进式添加 核心协议提供最小必需功能;可按需协商额外能力;服务器和客户端独立演进,保持向后兼容

6. 能力协商 #

6.1 什么是能力协商? #

在初始化会话时,客户端和服务器会显式声明各自支持的功能。只有声明的能力,才能在会话中使用。

声明方 可声明的能力示例
服务器 资源订阅、工具支持、提示模板等
客户端 采样支持、通知处理等

双方在整个会话期间必须遵守已声明的能力;可通过协议扩展协商额外能力。

6.2 能力与功能的对应关系 #

能力 解锁的功能
服务器声明工具 客户端可调用该服务器的工具
服务器声明资源订阅 可发送资源变更通知
客户端声明采样 服务器可请求客户端发起 LLM 采样

6.3 会话流程示意 #

sequenceDiagram participant Host as 主机 participant Client as 客户端 participant Server as 服务器 Host->>Client: 初始化客户端 activate Client Client->>Server: 初始化会话,协商能力 activate Server Server-->>Client: 返回支持的能力 Note over Host,Server: 活跃会话,已协商功能 loop 客户端请求(用户/模型发起) Host->>Client: 操作请求 Client->>Server: 请求(工具/资源) Server-->>Client: 响应 Client-->>Host: 更新 UI 或响应模型 end loop 服务器请求(采样等) Server->>Client: 请求(采样) Client->>Host: 转发给 AI Host-->>Client: AI 响应 Client-->>Server: 响应 end loop 通知 Server--)Client: 资源更新 Server--)Client: 状态变更 end Host->>Client: 终止 deactivate Client Client->>Server: 结束会话 deactivate Server
← 上一节 15.关键变更 下一节 17.基础协议概述 →

访问验证

请输入访问令牌

Token不正确,请重新输入