Learn to Interview

From zero to interview

MCP从一个真实任务开始

用一次 GitHub Issue 任务,理解 MCP 的价值、角色边界、工具调用,以及面试官真正想听到的工程判断。

Zero-context first Evidence-ranked No setup

One topic in. One great handbook out.

Your shortest useful path
MCP
  1. 01重复接入为什么会膨胀
  2. 02Host / Client / Server
  3. 03一次 Tool Call 如何流动
  4. 04工程边界与安全
  5. 05S / A / B 面试题库
S1 MCP 解决什么问题?它和 Function Calling、REST API 分别是什么关系?

Roadmap

五步,建立能说出口的心智模型。

先看到问题,再认识名字;先理解一次调用,再讨论工程边界。

为什么需要 MCP

看懂重复接入为什么会比业务逻辑增长得更快。

三个角色

谁掌握上下文、谁维持连接、谁暴露能力。

一次调用

发现、选择、校验、执行、返回。

工程边界

工具选择、参数、错误、权限与安全。

证据题库

从真实面经整理 S / A / B 问题与回答。

最低学习目标:30 秒说清 MCP、Function Calling 与 REST 的关系;画出 Host / Client / Server;讲清一次 Tool Call;指出四个安全控制点。

01 · Why

一个 Issue,为什么会带来六组接入?

你正在做一个 AI Coding Host。用户发来任务:“打开 GitHub Issue #42,找到相关代码并提出修复方案。”

模型会分析问题,却无法直接读取 GitHub 和本地仓库。你先给 GitHub 写一套接入,再给文件系统写一套;后来接数据库,还要继续处理参数、鉴权、错误和返回结果。

换一个 AI IDE,这些工作通常还得再做一遍。两个 Host 接三个外部能力,就出现六组接入。

Function Calling 已经能让模型选择函数,为什么 Host 仍要重复处理这些接入工作?

Coding Host 任务 + 模型 + 权限 另一个 AI IDE 同样再接一次 GitHub Files Database 2 × 3 = 6 每条线都要维护
能力和 Host 一增加,重复接入会组合式增长。

Function Calling 只规定模型怎样表达“调用哪个函数、参数是什么”。

Host 仍要知道有哪些能力、参数怎样描述、请求发到哪里、权限如何检查,以及结果怎样交回模型。MCP 标准化的正是这一层连接约定。

02 · Mental model

MCP 统一连接,不替代已有 API。

REST 继续负责 GitHub、数据库等业务接口;Function Calling 继续让模型表达选择;MCP 让 AI Host 用一致方式发现并调用外部能力。

没有统一协议

每个 Host 分别理解每种能力。

H₁ → GitHubH₁ → FilesH₁ → DB H₂ → GitHubH₂ → FilesH₂ → DB

使用 MCP

Host 对接统一约定,Server 包装已有能力。

MCP
GitHubFilesDB

一句话:MCP 是 AI 应用连接外部能力的标准插座,不是把所有业务 API 重写一遍。

03 · Roles

三个角色,边界比名字重要。

01 / ORCHESTRATES

Host

  • 拥有完整用户任务与模型上下文
  • 管理权限、用户确认和多个 Client
  • 决定结果如何进入下一轮推理
02 / CONNECTS

Client

  • 由 Host 创建并维护连接
  • 负责协议消息和能力协商
  • 一个 Client 通常连接一个 Server
03 / EXPOSES

Server

  • 暴露 Tools、Resources、Prompts
  • 执行被允许的外部操作
  • 只应看到完成任务所需的信息

用户确认属于 Host,因为只有 Host 同时看到用户意图、模型请求和权限上下文;不要把最终授权交给不受信任的 Server。

04 · Tool call

一次调用,六个可检查的节点。

模型选择工具,不等于模型直接执行工具。真正的控制点在 Host。

用户请求

打开 Issue #42 并找相关代码

发现能力

Client 发送 tools/list

模型选择

选择 get_issue 与参数

Host 校验

Schema、权限、确认

Server 执行

tools/call 访问 GitHub

结果返回

结构化内容回到模型

{
  "name": "get_issue",
  "inputSchema": {
    "number": "integer"
  }
}
{
  "method": "tools/call",
  "params": {
    "name": "get_issue",
    "arguments": { "number": 42 }
  }
}

发现 → 选择 → 校验 → 执行 → 返回

05 · Engineering

真正拉开回答差距的是工程边界。

01

工具太多,选不准

按任务与权限缩小候选集;把适用条件和不适用条件写清楚;用真实用户查询做选择准确率评估。

面试说法:不是把全部工具一次塞给模型,而是先检索、路由,再让模型选择。

02

Schema 正确,不等于请求安全

Schema 只校验形状;Host 还要做语义校验、逐请求授权、敏感操作确认,并为重试设计幂等性。

面试说法:参数合法只是第一层,权限和业务语义必须在执行前检查。

03

结果和错误要可消费

优先返回摘要和结构化内容;区分业务错误与协议错误;只有幂等操作才适合自动重试。

面试说法:结果格式服务于下一步推理,错误分类服务于恢复策略。

04

Server 的内容默认不可信

描述和结果都是数据,不是高优先级指令。坚持最小权限、不透传 token、沙箱、审计与网络出口控制。

面试说法:安全边界必须在模型之外,由 Host 和执行环境强制落实。

Evidence-ranked question bank

题目不是拍脑袋列出来的。

从公开真实面经抽取问题,合并语义重复,再按 frequency × recency × relevance 排序。观察题与推断基础题明确分开。

真实面经抽取问题合并重复S / A / B
S高概率核心题 A常见深入题 B边界与趋势题
S1MCP 解决什么问题?它和 Function Calling、REST API 分别是什么关系?

30 秒回答

MCP 标准化 AI Host 发现和调用外部能力的方式。Function Calling 解决模型如何表达“调用哪个函数和参数”;REST API 负责具体业务服务;MCP 位于两者之间,让不同 Host 能用统一协议连接不同能力。

讲深一层

它统一能力发现、Schema、调用和内容返回等协议面,但不会替代业务 API,也不会自动解决权限、安全、工具选择和可靠性。这些仍由 Host 与执行环境控制。

可能追问

为什么普通 OpenAPI 还不够?MCP 相比每个 Host 自建插件层减少了什么?

观察证据:I2 / I3 / I4 技术依据:T1

S2Host、Client、Server 分别负责什么?一次 Tool Call 怎样流动?

30 秒回答

Host 拥有任务、模型和权限上下文;Client 代表 Host 维持与一个 Server 的协议连接;Server 暴露能力。调用从发现工具开始,模型选择后由 Host 校验权限和参数,再通过 Client 请求 Server 执行,最后把结构化结果交回模型。

讲深一层

把模型选择与真实执行分开,是理解安全边界的关键。用户确认、候选工具裁剪和最终授权应由 Host 完成。

可能追问

为什么一个 Client 通常只连接一个 Server?谁负责能力协商?

观察证据:I1 / I3 技术依据:T2 / T4

S3怎样暴露一个 MCP Server?stdio 与 Streamable HTTP 怎么选?

30 秒回答

本地、单用户、由 Host 启动的进程适合 stdio:简单且进程边界清晰。远程或多用户服务更适合 Streamable HTTP,但必须配套身份认证、授权、会话隔离和网络安全控制。

讲深一层

传输方式改变部署与威胁模型,不改变 MCP 的核心角色关系。不要把“能连上”误当成“可以安全投入生产”。

可能追问

远程 Server 如何做授权?本地 stdio 是否完全没有安全风险?

观察证据:I1 / I3 技术依据:T3

A1MCP 的鉴权应该放在哪里?公共服务和多用户服务有什么不同?

回答骨架

身份和授权必须围绕真实资源边界设计。公共只读服务可以更简单;多用户远程服务需要用户级身份、细粒度 scope、逐请求校验和 token 生命周期管理。Host 不应把自己的上游凭证无条件透传给 Server。

可能追问

怎样避免 confused deputy?如何处理动态客户端注册与 token audience?

观察证据:I1 / I3 技术依据:T9 / T10

A2工具数量很多时,为什么模型更容易选错?你会怎么优化?

回答骨架

候选工具越多、描述越相似,模型的判别负担越大,提示长度也会上升。可以按任务和权限预过滤,做语义检索或分层路由,改进工具命名与边界描述,并用真实查询集评估 top-k 召回和最终选择准确率。

可能追问

你会怎样构造工具选择 eval?描述里应该放哪些负面条件?

观察证据:I3 技术依据:T11

A3Tools、Resources、Prompts 的差别是什么?

回答骨架

Tools 表示可执行动作,由模型选择调用;Resources 表示可读取或订阅的上下文数据;Prompts 表示可复用、通常由用户显式选择的提示模板。三者分别对应动作、内容和交互入口,生命周期与控制方不同。

可能追问

读取文件应该做成 Tool 还是 Resource?何时需要订阅 Resource?

推断基础题:未在小样本中直接观察 技术依据:T4 / T5 / T6

B1本地函数、MCP Tool 和 Agent Skill 有什么区别?

回答骨架

本地函数是实现细节;MCP Tool 是通过协议暴露、可被发现和调用的外部能力;Skill 是给 Agent 的工作方法和约束,可能指导它使用多个工具。三者分别位于实现、协议能力和行为编排层。

观察证据:I5 技术依据:结合协议定义的工程推断

B2Server 是否需要在每次请求里重新描述自己?

回答骨架

不需要把完整能力说明重复塞进每次调用。能力在初始化和列表阶段被发现,Host 可以缓存并在能力变化时刷新;实际调用只发送方法、工具名和参数。

推断基础题:未在小样本中直接观察 技术依据:T7 / T8

B3接入第三方 MCP Server 时,主要风险是什么?

回答骨架

主要风险包括恶意工具描述、提示注入、过度权限、凭证泄露、数据外传和危险副作用。应做来源信任、最小权限、用户确认、输出隔离、审计、沙箱与网络出口控制。

观察证据:I1 / I3 技术依据:T10

证据说明:公开、可验证的一手面经样本有限,因此 S / A / B 仅表示本次样本内的相对优先级;这里不伪造精确出现次数。

Last-minute cheat sheet

面试前,只记住这一屏。

30 秒定义

MCP 标准化 AI Host 发现、调用外部能力并接收结果的方式;它连接模型选择与现有业务 API,但不替代任何一方。

三个角色

Host 掌握上下文与权限;Client 维持协议连接;Server 暴露 Tools、Resources、Prompts。

一次调用

发现 → 选择 → Host 校验 → Server 执行 → 结构化结果返回。

四个控制点

候选工具、语义参数、逐请求授权、结果与错误处理。安全策略必须在模型之外强制执行。

三个常见坑

  • 把 MCP 说成 Function Calling 的替代品。
  • 只会画架构,却说不清谁负责确认和授权。
  • 把第三方 Server 的描述和返回内容当成可信指令。

Sources

技术事实与面试证据,分开记录。

技术定义优先引用官方文档;问题优先引用公开的一手面试记录。