跳至内容

MCP 面试题:从入门到高级(2026)

通过涵盖架构、工具、代理、安全与真实系统设计的 MCP 面试题进行准备,并全部依据当前协议规范核对。
更新 2026年7月5日  · 6分钟

一年半前,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/listtools/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 Inspector 展示工具与资源。视频来源:作者。

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 让代理能自行发现可用项,而无需依赖代理代码中硬编码的清单。

Diagram showing an AI agent's host and client connecting over JSON-RPC to an MCP server that exposes tools, resources, and prompts.

代理的宿主、客户端与服务器模型。图片来源:作者。

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 developer settings showing a locally connected MCP server with one available tool.

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 工程筛选可能止步于宿主/客户端/服务器以及工具/资源的区分。平台或基础设施岗位则可能很快进入传输与认证,即便在相对初级的层级。

主题

与 Datacamp 一起学习

Courses

构建可扩展的 Agentic 系统

1小时30分钟
16K
了解借助 MCP 和 A2A 等框架扩展 AI 代理所需的内容。
查看详情Right Arrow
开始课程
查看更多Right Arrow