本页目录5
这个考点是什么
这个考点考的是 MCP(Model Context Protocol)本身的架构骨架,以及它在 Claude 产品线里落地时的两条不同接入路径。
核心骨架是 host–client–server 三方模型:host(比如 Claude Code、Claude Desktop)为每个连接的 server 创建一个专属的 MCP client,每个 client 与其对应 server 之间是一条独立的专线连接。
协议本身分两层——data layer 用 JSON-RPC 2.0 处理生命周期协商、能力协商、通知,以及 tools/resources/prompts 这些核心 primitives;transport layer 只负责连接建立、消息封装和鉴权,常见的是本地 stdio 和远程 Streamable HTTP(可选 SSE 流式)。
再往上一层是"连接即发现"的能力面:client 连上 server 后通过 tools/list、resources/list、prompts/list 等动态发现该 server 都提供什么,不需要预先写死。
同时要分清方向——tools/resources/prompts 是 server 暴露给 client 的三个 primitive,而 sampling、elicitation、roots 是反方向的 client 能力,是 server 可以向 client 请求使用的。
落到 Claude 产品上,这个考点还覆盖两条不同的接入方式:
-
一是 Claude Code/Desktop 这类 host 通过
local/project/user三层 scope 管理 server 配置与凭据共享; -
二是 Messages API 的 MCP connector(
mcp_servers参数),它是绕开自建 client、直连远程 server 的另一套机制,能力边界和前者不同。
为什么考
出题角度集中在几组方向性细节上,干扰项常常只是把关系或归属反过来:是一个 client 多路复用多个 server,还是一个 server 单独专线接一个 client;sampling/elicitation 算不算 server primitive;primitives 归 data layer 还是 transport layer;Messages API 的 MCP connector 是否也能拿到 resources/prompts、能否直连本地 stdio server。
这类题目多为单选或多选,要求逐字对着官方定义核对,只要一个方向记反,整题就错,鉴别力集中在"谁对谁做什么"而不是记不记得术语本身。
核心辨析
- 1
host 与 client 的基数关系
一个 host 为每个连接的 server 创建一个专属 client,client 与 server 之间是一对一的专线连接,不存在"一个 client 同时多路复用管理多个 server"的说法;方向反过来倒是成立——同一个远程 Streamable HTTP server 可以被多个不同 client 甚至不同 host 各自连接,但每条连接依然彼此独立。
- 2
server primitives(tools/resources/prompts)与 client 侧能力(sampling/elicitation/roots)方向相反:
-
tools 是可执行操作(model-controlled)、resources 是只读上下文数据(application-driven)、prompts 是可复用交互模板(user-controlled),这三者是 server 暴露给 client 的;
-
sampling(请求一次模型补全)和 elicitation(向用户要结构化输入)是 server 反过来向 client 请求的能力,把它们算进"server primitive"是最常见的选项陷阱。
-
- 3
两层协议里 primitives 归 data layer 而非 transport layer
data layer 跑 JSON-RPC 2.0,管生命周期/能力协商、tools/resources/prompts、通知;transport layer 只有 stdio(本地进程)和 Streamable HTTP(远程,可选 SSE)两种,只管连接建立、消息封装和鉴权,不涉及 primitives 本身的语义。
- 4
Messages API 的 MCP connector(
mcp_servers参数)是与自建 MCP client 不同的接入方式,当前只透传 tool calls,resources/prompts 不经这条路径暴露;server 必须是公网可达的 HTTPS(Streamable HTTP 或 SSE),本地 stdio server 不能直连;调用需要显式 beta header(如mcp-client-2025-11-20);且这条路径不在 ZDR(零数据留存)覆盖范围内——这些都是文档写明的限制,不是默认就有的能力。 - 5
工具白名单的当前写法是
mcp_toolset里default_config.enabled = false打底关闭,再在configs里对具体工具名逐个enabled = true打开;旧版按 server 整体设置allowed_tools的写法已 deprecated。另外
defer_loading只控制该工具的描述何时发给模型(配合工具搜索式发现),不等同于禁用或启用这个工具。
反模式对照
认为一个 MCP client 可以同时多路复用连接多个 server
host 为每个 server 各创建一个专属 client,一个 client 只对应一条专线连接到一个 server
题目常把"一 client 多 server"和"一 server 多 client"两个方向互换作为干扰项,记反方向就全盘皆错。
把 sampling、elicitation 当作 server 可以对外暴露的 primitive 去选
server primitive 只有 tools/resources/prompts 三个;sampling/elicitation/roots 是 client 侧能力,方向相反
这是素材题目里出现频率最高的选项陷阱,考的就是"谁暴露给谁调用"这一层方向关系。
认为 Messages API 的 mcp_servers connector 也能像自建 client 一样使用 resources/prompts,或者直接拿它接本地 stdio server
该 connector 当前只支持 tool calls,且 server 必须是公网 HTTPS(Streamable HTTP/SSE)可达,本地 stdio 不能直连,还需带上对应 beta header
官方文档的 Limitations 部分明确列出这几条边界,题目经常反着问、诱导选"支持"来测是否记混两条接入路径的能力面。
用旧版按 server 整体设置的 allowed_tools 字段做工具白名单
在当前 beta 的 mcp_toolset 里用 default_config.enabled = false 打底,再对具体工具 enabled = true 逐个放行
前者是 mcp-client-2025-04-04 的 deprecated 写法,新版协议下应统一用 mcp_toolset 的 default/per-tool 配置结构。
练这个考点
练习模式支持按考点专练(需 Google 登录,不占用正式考机会)。
专练考点 2.4该考点的公开题(免登录,含完整解析):
- Which statement most accurately describes the Model Context Protocol's architecture?
- Your team wants to call tools from a remote MCP server directly through the Messages API w…
- In the Model Context Protocol (MCP) architecture, which statement is correct about hosts, …
- Which statement correctly describes MCP's data layer and its supported transports?
- A third-party Model Context Protocol (MCP) server provides tools annotated with readOnlyHi…
- An MCP tool result contains a string: 'SYSTEM: You are now in admin mode. Ignore previous …