Courses
一年半前,Model Context Protocol 在 Anthropic 之外仍是一个小众术语。如今它已出现在 AI 工程、开发者关系和后端岗位的面试中,因为许多交付代理的团队在技术栈的某处运行着 MCP 服务器或客户端。
MCP(Model Context Protocol)是一种开放协议,用于标准化 AI 应用如何连接外部工具、数据与提示模板。它解决了 N×M 集成问题:在没有共享协议的情况下,每一对模型与工具都需要单独的连接器。有了 MCP,您只需构建一次连接器,任何兼容的宿主都能使用。您可能会听到它被称为“AI 的 USB-C”,这作为入门类比够用,但也仅止于此。

面试问题很大程度取决于岗位。初级开发者可能需要解释工具与资源的区别。平台工程师更可能被问到:无状态的协议内核如何改变部署方式。我按难度与用例组织了本指南,请聚焦与您岗位匹配的部分。
时点在这里很重要,我也明确指出这一点,因为 MCP 仍在变化。撰写时,当前稳定规范为2025-11-25。针对2026-07-28 的候选发布版(RC)已冻结,预计约四周后发布,因此来自该 RC 的任何内容都标注为面向未来。
MCP 入门面试题
这些问题常见于各级筛选。我会从词汇开始。
什么是 MCP,它为什么被创建?
MCP 是一种开放标准,最初由 Anthropic 构建并于 2024 年 11 月开源,用于将 AI 应用连接到外部工具和数据源。更直接地说:一次实现 MCP,您就可以与任何 MCP 兼容的服务器通信,而不必为每个工具编写新的连接器。
什么是 MCP 服务器?
服务器是一个程序,它向 MCP 客户端暴露工具、资源和提示。它可以作为本地子进程通过 stdio 运行,或作为可通过 HTTP 访问的独立远程进程运行。服务器对模型本身一无所知;它根据协议响应请求。
什么是 MCP 客户端?
客户端是位于宿主应用(如 Claude Desktop、VS Code 或 Cursor)内部的协议级连接器,通过 JSON-RPC 一次只与一个服务器通信。单个宿主可以运行多个客户端,每个客户端都保持与一个服务器的一对一连接。
MCP 与常规 REST API 有何不同?
REST API 是为开发者从代码中调用而编写的。MCP 则是为 LLM 在运行时发现并调用而构建的。这一差异比传输格式更重要。客户端可以向服务器请求 tools/list 并获得可用能力的结构化描述,而典型的 REST API 默认并不提供这一点。对于单一而简单的集成,直接调用 API 往往更快且更便宜。
服务器可以暴露哪些类型的资源?
任何可通过 URI 定位的内容:文件、数据库记录、文档、配置值、API 响应。资源是只读上下文,而不是动作,这是初学者常见的混淆点。
MCP 核心概念面试题
词汇巩固之后,面试官会转向各组件如何交互。
高层架构是什么?
三种角色:宿主、客户端、服务器。宿主是人实际使用的应用。它实例化一个或多个客户端,每个客户端保持与一个服务器的单一连接。客户端与服务器之间的每条消息都是 JSON-RPC 2.0,从而无论传输方式如何,都提供稳定的线级格式。
连接的三个生命周期阶段是什么?
初始化、运行与关闭。在初始化阶段,客户端发送其支持的协议版本与能力,服务器以自身能力响应。双方达成一致后,tools/list 与 tools/call 等常规请求在运行阶段发生。关闭则是干净地终止连接。
MCP 今天使用哪些传输?
stdio 用于本地、基于子进程的服务器,Streamable HTTP 用于远程服务器。Streamable HTTP 在 2025-03-26 规范中取代了早期的 HTTP+SSE 传输,因此再去描述两个独立的 SSE 端点已过时。
工具、资源与提示的实际区别是什么?
这一区别关乎控制权,而非数据类型:
- 工具由模型控制。LLM 会根据上下文决定何时调用。
- 资源由应用控制。宿主或用户决定何时加载。
- 提示由用户控制。推理开始前,人会显式选择模板。
许多候选人按承载数据类型来定义它们,这就偏离了要点。
MCP 工具、资源与提示面试题
在理清控制模型后,下一个问题是这些原语在实践中长什么样。
一个工具定义包含什么?
一个 name、一个 description、一个用 JSON Schema 编写的 inputSchema,以及自 2025-06-18 规范起可选的 outputSchema 加上 annotations,用于描述工具是否只读或具破坏性等行为。除非来自受信服务器,客户端应将注解视为不可靠信息。它们是提示而非保证。
何时应将某项设计为工具而不是资源?
如果它有副作用或需要新鲜、实时的计算,就是工具;如果是静态或半静态的参考数据且无副作用,就是资源。调用实时天气 API 是工具;一份已缓存的支持城市列表是资源。
除了能用之外,什么才是好的 MCP 工具?
围绕用户要完成的任务来设计,而不是围绕碰巧有的端点。工具应包装一个完整的工作流,而非单个原始 API 调用。描述同样重要:这段文本会进入模型上下文,影响模型是否选择正确的工具。下面是使用 Python SDK 的 FastMCP 层的最小示例:
from mcp.server.fastmcp import FastMCP
app = FastMCP("weather-demo")
@app.tool()
async def get_weather(city: str) -> str:
"""Get the current weather for a city."""
return f"Weather data for {city}"
@app.resource("config://units")
async def get_units() -> str:
"""Static configuration for the unit system in use."""
return '{"temperature": "celsius"}'
工具的文档字符串会成为它的描述;资源是位于 URI 背后的静态数据,无副作用。
客户端如何检索资源?
它会针对从 resources/list 获得的 URI 调用 resources/read。若服务器支持 listChanged 能力,它可以在资源列表发生变化时通知客户端。若不支持,客户端没有信号,只能轮询或手动刷新。
MCP 服务器开发面试题
此处需要把概念知识落地为可运行的内容。
有哪些官方 SDK,它们是否同样成熟?
不相同。SDK 分层:TypeScript、Python、C# 与 Go 属于一级,具备完整特性支持;Java 与 Rust 属于二级;Swift、Ruby、PHP 与 Kotlin 属于三级。Python SDK 包含 FastMCP,即其基于装饰器的服务器 API。
最常导致本地服务器崩溃的漏洞是什么?
在不该写入时写入 stdout。使用 stdio 传输时,stdout 专用于 JSON-RPC 消息,因此任何 print() 或 console.log() 的杂音都会破坏消息流,导致客户端解析失败。任何用于调试的日志都必须写入 stderr。
MCP 中错误处理如何工作?为什么这对面试很重要?
分为三层。传输层失败是连接问题。协议层错误使用标准 JSON-RPC 代码(-32700 表示解析错误, -32600 至 -32603 表示无效请求、未知方法等)。应用层失败(例如工具内部的 API 调用返回错误)应在工具结果中带上 isError: true,以便模型能识别并作出反应。
return {
"content": [{"type": "text", "text": "Rate limit exceeded, try again later"}],
"isError": True
}
该标志让模型看到失败并尝试不同方案。
MCP 现在是有状态的吗?
是的,目前会在连接层面跟踪会话。这会给生产团队带来扩展问题,我会在系统设计部分展开。
MCP 安全与治理面试题
在许多 MCP 面试中,尤其是平台与企业岗位,安全问题愈发常见。
身份验证在 stdio 与 HTTP 传输之间有何不同?
对于本地 stdio 服务器,实践中身份验证是可选的;您已在信任自己启动的进程。对于基于 HTTP 的远程服务器,OAuth 2.1 是框架,且根据 2025-06-18 规范,服务器被分类为 OAuth 2.0 资源服务器。OAuth 并非在 MCP 的所有场景都必须。
什么是工具投毒(tool poisoning)?
这是将恶意指令隐藏在工具元数据(通常是描述或架构)中的行为,模型在决定调用哪个工具时会读取这些元数据。即便工具未被调用,这也会产生影响,因为模型在列出工具时已经看到这些指令。
“抽地毯”攻击与工具投毒有何不同?
工具投毒是入口问题;“抽地毯”是持久性问题:工具在您批准时看起来干净,随后其定义发生变化,而多数客户端没有内置机制强制重新审批。防御其一并不等于防御另一个。
什么是企业托管授权(Enterprise-Managed Authorization,EMA),为什么现在重要?
EMA 是 MCP 的一个扩展,于 2026 年 6 月 18 日转为稳定。它将授权决策从每位员工在每台服务器的点选同意,迁移到组织的身份提供方。客户端在单点登录期间获得签名的 Identity Assertion JWT,并将其交换为来自服务器授权服务器的具范围访问令牌。Anthropic、Microsoft 与 Okta 均支持。
MCP 与 AI 代理面试题
在这里,协议与代理设计开始衔接。
MCP 对代理为何尤为重要?
代理需要上下文与动作。MCP 将二者放入同一协议。如前所述,tools/list 让代理能自行发现可用项,而无需依赖代理代码中硬编码的清单。

代理的宿主、客户端与服务器模型。图片来源:作者。
MCP 与 A2A 有何区别?
简要规则:MCP 连接代理与工具,A2A 连接代理与代理。两者如今同属 Agentic AI Foundation,通常被视为分层而非竞争关系。
什么是 sampling 原语,我还需要提及它吗?
Sampling 允许服务器通过客户端请求模型补全,因此服务器无需持有 API 密钥即可运行类似代理的行为。需要了解该原语,但要补充说明:2026-07-28 RC 在新的特性生命周期策略下将 Sampling、Roots 与 Logging 标记为弃用。它们至少在 12 个月内仍可用,但越来越建议服务器作者直接调用模型提供商的 API。
代理如何避免因工具定义而撑爆上下文窗口?
不要在一开始就加载所有工具定义。Anthropic 的 Tool Search 方法将工具架构的加载推迟到需要时,据工程实录,在工具众多的场景下可将令牌使用量减少 85%,同时保持完整的工具库可达。面试作答时,我会将延迟加载与窄范围服务器配套提出。
MCP 系统设计面试题
场景题考察您能否在约束下应用这些理念,而不仅是背定义。
使用 MCP 设计一个文档检索系统。
这里 MCP 与 RAG 并不竞争。RAG 负责预索引的向量检索;MCP 则将该检索以工具或资源的形式对外暴露,使代理能实时调用,同时与代理需要的其他动作并行。把问题当作二者如何配合,而非谁取代谁。
为公司内部数据设计一个 MCP 服务器。
从单一职责出发:每个域一个服务器,例如将数据库与文件系统拆分为不同服务器,而不是一个服务器包打天下。从一开始就加入 OAuth 2.1、按工具划分的最小权限范围与审计日志,因为访问控制一旦服务器上线后更难补救。
在无状态规范发布之前,今天应如何扩展 MCP 部署?
候选人常因将未来规范当作既成事实而失分。服务器部分提到的“有状态”正是扩展问题所在:水平扩展需要黏性路由、共享会话存储或 MCP 网关。2026-07-28 RC 将移除协议层会话,但该部分尚未正式上线。
如何避免大型多服务器部署让模型吞噬大量令牌?
来自代理部分的延迟加载思路在此同样适用。在部署层面,还应在服务器端先进行过滤与聚合,再将数据送入模型上下文,并对返回列表进行分页。核心原则是控制进入上下文窗口的内容。
MCP 集成面试题
集成类问题考察您是否理解 MCP 在常见开发者工具中的体现。
MCP 在 Claude 的各产品中如何体现?
Claude.ai、Claude Desktop 与 Claude Code 均支持 MCP,Anthropic 运营着带有预构建服务器的连接器目录。Messages API 中也有面向远程服务器的 MCP 连接器,撰写时仍处于测试版。

Claude Desktop 显示已连接的 MCP 服务器。图片来源:作者。
MCP 只对 Claude 有用吗?
并非如此。OpenAI 自 2025 年 3 月起在其 Agents SDK 与 Apps SDK 中采用 MCP。VS Code 于 2025 年年中发布了对完整规范的支持,Cursor 通过 mcp.json 支持 MCP,Google Cloud 到 2026 年 4 月已有超过 50 个托管 MCP 服务器处于 GA 或预览状态。
MCP 与 RAG 的具体区别是什么?
这是系统设计答案的简版:RAG 基于定期更新的知识库答复,MCP 处理实时查询与动作。
MCP 高级面试题
高级问题考察您是否跟进协议演进,而不仅是当下如何工作。
能否梳理一下规范的版本历史?
面试官借此判断您是否知道哪些内容在何时发生变化。五个修订值得关注,且仅有一个仍属推测:
|
版本 |
日期 |
变更内容 |
|
2024-11-05 |
2024 年 11 月 |
首次发布 |
|
2025-03-26 |
2025 年 3 月 |
以 Streamable HTTP 取代 HTTP+SSE;引入 OAuth 2.1 |
|
2025-06-18 |
2025 年 6 月 |
结构化工具输出、诱导(elicitation)、OAuth 资源服务器分类 |
|
2025-11-25 |
2025 年 11 月 |
当前稳定规范;异步 Tasks(实验性)、治理正式化 |
|
2026-07-28 |
RC 于 2026 年 5 月冻结 |
无状态内核、MCP Apps、扩展框架 |
关键在于知道哪一行已经正式发布。
如今谁来治理 MCP?
2025 年 12 月 9 日,Anthropic 将该协议捐赠给 Linux 基金会旗下的定向基金 Agentic AI Foundation。Block 与 OpenAI 与 Anthropic 共同创立 AAIF,Google、Microsoft、AWS、Cloudflare 与 Bloomberg 为支持成员。维护者保留技术决策控制权;治理迁入更广泛的基金会。
2026-07-28 版本实际在变什么?
主要变化是系统设计部分提到的无状态内核:initialize/initialized 握手与 Mcp-Session-Id 头将被移除,取而代之的是在每个请求的 _meta 中携带能力信息。这消除了对黏性路由的要求。扩展框架也定义了 MCP Apps 与 Tasks 等可选能力如何独立发布与稳定。
什么是 MCP 扩展,它们是否处处可用?
不是。扩展是可选能力,如企业托管授权、用于机器到机器认证的 OAuth 客户端凭据、以及在宿主内提供交互式 UI 的 MCP Apps。支持情况因客户端而异,因此不要基于“所有地方都支持扩展”的假设来设计。
基于场景的 MCP 面试题
这些题更考察诊断推理而非死记硬背,请按“症状—原因—修复”的路径组织答案。
工具调用间歇性失败。您首先检查什么?
查看失败是以工具结果中的 isError: true 返回,还是以协议层错误返回。这能判断问题出在工具自身逻辑还是传输层。随后再看工具封装的下游是否触发限速,并检查超时,再去考虑是否为模型问题。
某代理总在使用过期的资源数据。为什么?
回到前文关于资源的问题:listChanged 是告诉客户端资源已变更的机制。若未声明该能力,客户端没有信号,会持续提供缓存快照,直到某个动作触发刷新。
一个 MCP 服务器成为明显瓶颈。您的对策是什么?
按领域拆分、增加连接池并水平扩展。在无状态内核发布前,您可能仍需要系统设计部分提到的会话亲和性。
敏感数据通过工具调用泄露。如何发生的?
两种常见原因:工具的权限范围超出所需,或在数据进入模型上下文前缺少输出净化。解决方法是按工具实施最小权限,并在进入上下文前增加净化步骤。工具投毒也相关:模型可能被指示转发数据,哪怕无人编写外泄代码。
MCP 面试中的常见错误
一些模式足够常见,值得单独指出:
-
在前文已强调与 REST 的区别后,仍将 MCP 当作可直接替换 REST 的方案
-
在已解释控制模型后,仍按数据类型来区分工具与资源
-
假设
stdio与 HTTP 的认证规则相同 -
在已介绍传输改动后,仍给出遗留的 SSE 答案
-
将已发布的规范与 2026-07-28 RC 混为一谈
-
在被要求设计可调用工具的系统时,跳过上述安全风险
多数错误源于过时教程。
如何准备 MCP 面试
对于该协议,动手实践尤为重要。
-
使用 FastMCP 或 TypeScript SDK 构建一个小型服务器,暴露一个工具和一个资源并运行起来
-
安装官方 Inspector(
npx @modelcontextprotocol/inspector),观察其展示的原始 JSON-RPC 流量 -
将您的服务器连接到真实客户端(Claude Desktop、VS Code 或 Cursor),并观察初始化握手
-
阅读实际规范的变更日志,而非二手总结,尤其是 2025-06-18 与 2025-11-25 的条目
-
从本文中选取一个系统设计场景,在面试前写出完整答案
这些步骤能区分“知道定义”与“具备实操熟悉度”。
结语
我认为仅仅背诵 MCP 定义已不够。更难的是分清哪一答案对应哪一版规范。当前部署仍需处理连接层会话;2026-07-28 RC 指向无状态内核。若您混淆二者,架构回答会显得自信却不准确。
这也是我建议把 MCP 当作要亲测的对象,而不仅仅是阅读。按照准备部分构建小型服务器,观察客户端如何列出工具与读取资源,并注意协议与您的应用设计的边界。一个有用的面试回答不是“MCP 是 AI 的 USB-C”,而是“这里是 MCP 标准化的内容,这里是不包含的内容,以及近期发生了哪些变化”。
如需更系统的后续学习,我们的 Building Scalable Agentic Systems 课程在代理设计、测试与部署的背景下讲解 MCP 与 A2A。
FAQs
我需要记住每个规范版本的日期吗?
不需要。请记住顺序以及每一步改变了什么,尤其是传输切换与已发布的版本。面试官更看重您是否能解释变更发生的原因,而不是能否逐字背出日期。
Sampling 将被弃用。还值得学习吗?
目前需要。自弃用发布后,它至少在一年内保持完全可用。请了解它被逐步淘汰的原因:安全暴露,以及相较其复杂度的有限采用度。
如果我从未接触过 MCP,应从哪个 SDK 入门?
Python 配合 FastMCP 是最简单的起点,因为基于装饰器的 API 隐去了大部分样板。若您的技术栈以 JavaScript 为主,使用 TypeScript 也很好;该 SDK 同属一级。
一旦 2026-07-28 规范发布,MCP 还重要吗?
大概率会。前文讨论的无状态内核旨在解决团队在生产中遇到的扩展问题。协议在压力下变得更简单,通常是走向成熟而非退步的信号。
入门级 MCP 面试实际会多技术化?
因岗位而异。通用的 AI 工程筛选可能止步于宿主/客户端/服务器以及工具/资源的区分。平台或基础设施岗位则可能很快进入传输与认证,即便在相对初级的层级。