跳转至

MCP 的架构、原语、会话和传输机制是什么?

  • ID:Q043
  • 难度:基础 / 进阶 / 协议
  • 标签:MCP、Host、Client、Server、Resources、Prompts、Tools、JSON-RPC
  • 时效性:基于 MCP 2025-11-25 规范,整理日期为 2026-08-01

可视化图解

flowchart LR
  H[MCP Host / Agent] --> C[MCP Client]
  C <--> S[MCP Server]
  S --> T[Tools]
  S --> R[Resources]
  S --> P[Prompts]
  C -.stdio.-> S
  C -.Streamable HTTP.-> S
  H --> L[LLM 决策]
  L --> C

核心结论

MCP 是 LLM 应用与外部能力之间的标准化上下文与工具协议。 它解决的是 Host 如何发现、协商并调用不同 Server 提供的能力,而不是替 Agent 决定业务流程,也不自动保证权限和安全。

官方规范:

一、Host–Client–Server 架构

对应流程使用 Mermaid 图解展示。

Host

负责:

  • 创建和管理 Client;
  • 聚合上下文;
  • 控制用户授权与安全策略;
  • 连接 LLM;
  • 隔离不同 Server;
  • 决定哪些结果进入模型上下文。

Client

Host 内的协议连接器,一个 Client 与一个 Server 建立有状态会话,处理初始化、能力协商、消息路由、订阅和通知。

Server

暴露专注的上下文或能力。可以是本地子进程,也可以是远程服务。Server 通常不应看到 Host 的完整会话,只接收完成请求需要的信息。

二、核心原语

1. Resources

由 Server 暴露的上下文数据,使用 URI 标识,例如文件、数据库 Schema、Git 历史。通常由应用或用户选择如何加入 Context。

2. Prompts

可复用的提示模板或交互入口,通常偏用户控制,例如菜单操作、Slash Command。

3. Tools

可执行能力,模型可提出调用,例如查数据库、调用 API 或写文件。Host 负责同意、执行链路和安全控制。

2025-11-25 规范还定义 Client 可提供的能力,包括 Sampling、Roots 和 Elicitation。不能把 MCP 简化为只有 Tool Calling。

三、Base Protocol

MCP 消息使用 JSON-RPC 2.0,包含:

  • Request;
  • Response;
  • Notification;
  • 错误对象。

连接初始化时双方进行版本与 Capability Negotiation。只有声明支持的功能才能在会话中使用。

四、传输方式

stdio

Host 启动 Server 子进程,通过标准输入输出传输 JSON-RPC。

适合:

  • 本地 IDE;
  • 命令行工具;
  • 单用户桌面应用;
  • 低部署成本集成。

Host 管理进程生命周期,Server 日志应输出到 stderr,不能污染协议 stdout。

Streamable HTTP

远程 Server 通过 HTTP 提供 MCP 端点,支持普通响应、流式返回、会话管理、恢复和重投递相关机制。

适合:

  • 企业共享 Server;
  • 跨网络部署;
  • 统一授权、扩缩容和治理。

旧版 HTTP+SSE 已被 Streamable HTTP 取代,不能再把当前 MCP 远程传输概括成两个固定端点的 HTTP+SSE。

规范传输说明:

五、MCP 是有状态协议,但业务状态另算

MCP 会话状态包括:

  • 协议版本;
  • 双方 Capability;
  • Session;
  • 订阅和通知;
  • 进行中的请求。

它不等于 Agent 的任务状态、用户 Memory 或业务事务。Agent Run 仍需要自己的 Checkpoint 和 Durable Execution。

六、安全边界

MCP 标准化连接,不等于可信。Host 必须:

  • 验证 Server 身份和来源;
  • 做用户同意与最小权限;
  • 过滤工具候选;
  • 校验参数和结果;
  • 防止 Token / Secret 泄露;
  • 对远程 Server 使用授权;
  • 将 Server 描述和 Tool Annotation 视为不完全可信;
  • 保留审计日志。

工具说明写“只读”不能替代真实权限控制。

七、动态发现

Client 可以 tools/listresources/listprompts/list 获取能力,并接收列表变化通知。但 Host 不应把发现到的全部能力直接暴露给模型,还需根据用户、任务、风险和 Token 预算构造候选集。

八、MCP 不解决什么

  • Agent 的规划算法;
  • Tool 选择正确率;
  • 业务事务;
  • 多 Agent 协作;
  • 任务完成验证;
  • Server 内部实现质量;
  • 权限策略本身。

它类似连接标准,而不是完整 Agent Framework。

常见错误回答

MCP 是 Agent 调工具的 USB-C。

这个比喻适合入门,但面试要继续说明 Host/Client/Server、Capability Negotiation、Resources/Prompts/Tools、JSON-RPC 和安全边界。

MCP 的传输是 stdio 和 HTTP+SSE。

这是旧规范表述。当前标准远程传输是 Streamable HTTP。

面试口述版

MCP 采用 Host–Client–Server 架构。Host 是包含 LLM、用户同意和安全策略的应用,每个 Client 与一个 Server 建立有状态会话,通过 JSON-RPC 完成初始化和能力协商。Server 可以暴露 Resources、Prompts 和 Tools,Client 侧还可能支持 Sampling、Roots 和 Elicitation。标准传输是本地 stdio 和远程 Streamable HTTP。MCP 只标准化发现与通信,Host 仍要负责权限、候选工具、参数校验、审计和 Agent 任务状态,不能把协议连接等同于安全执行。

结合个人项目

企业 Agent 平台可以把日志、Jenkins、Git 和 Kubernetes 封装为 MCP Server,但 Host 仍应根据项目和环境做权限过滤,并通过自己的 Tool Gateway 统一审计,而不是让每个会话直接连接任意 Server。