MCP 是什么?它和 Function Calling 是什么关系、解决了 FC 的什么问题?

Q3-08MCP 协议高频MCPFunction Calling无状态handle工具发现供应链协议演进

谁在问:2026 一二面必问;接过 MCP 的团队用 07-28 规范改版来区分「用过」和「读过规范」

口语化问法

  • MCP 你怎么理解?它跟 Function Calling 是替代关系吗?
  • 我们本来 FC 用得好好的,为什么要接 MCP?
  • 你接过 MCP 吗?说说踩过的坑。

考察意图

这题在 2026 是开场必问,也因此成了背诵重灾区。面试官在筛四层:

  1. 层次分不分得清。 把 MCP 说成"FC 的升级版"的人,等于承认没看过任一侧的实现——它俩根本不在一层。
  2. 知不知道它解决的是集成问题而非能力问题。 MCP 不会让模型更会用工具,它解决的是工具从哪来、怎么接、谁维护。
  3. 说不说得出代价。 2026 年"MCP 是 AI 界的 USB-C"这句话人人会背,能讲清多一跳延迟、供应链风险、工具清单失控的人才有区分度。
  4. 跟没跟上规范演进。 2026-07-28 那版改动很大(协议核心转无状态),只讲 2024–2025 那套握手模型的人,暴露的是知识停在两年前。

参考答案

图 2 · 60 分与 90 分差在哪:代价、演进、怎么验证

60

60 分答案(及格线)

它俩不在一层,不是替代关系。

  • Function Calling 是模型侧的表达方式:模型输出"我要调 X 工具、参数是 Y"这样一段结构化意图,执行永远在你的代码里(见 Q3-03)。
  • MCP(Model Context Protocol)是工具侧的接入协议:规定一个工具服务怎么把自己的能力暴露出来、怎么被发现、怎么鉴权、怎么传输。

两者是串联的:MCP Server 提供的工具,客户端拿到后仍然要转成模型的 tools schema 发给模型,模型仍然用 FC 的方式返回调用意图。接了 MCP,模型侧一个字都没变。

MCP 解决的是集成爆炸:M 个应用 × N 个工具原本要写 M×N 套对接,有了统一协议变成 M+N。附带好处是工具可以在运行时被发现、鉴权和传输方式统一、社区生态可复用。

90

90 分答案(有生产经验的回答)

补三层。

1. 三段式看 MCP。

  • 解决什么:集成的组合爆炸、工具的运行时发现、鉴权与传输的统一、生态复用(别人写好的 server 直接接)。
  • 代价是什么:多一跳网络延迟;工具清单不完全受你控制(对方一更新,你的上下文和选择准确率就变);供应链与安全面扩大(第三方 server 的描述本身就是进入你上下文的文本,见 Q3-10);调试链路变长(出问题要分清是模型选错、client 转换错、还是 server 返回错);版本与兼容负担。
  • 什么时候不该用:只有自家几个内部工具且不打算对外开放时,直接写 FC 工具更简单也更快;对延迟极敏感的链路;强审计场景下需要工具集完全冻结的系统——那种情况即使用 MCP 也要在网关侧固化白名单。

2. 2026-07-28 规范的改版要讲到,这是分水岭。 截至 2026-08,MCP 最重要的变化是协议核心转向无状态:取消了 initialize 握手和会话 id(Mcp-Session-Id)。工程影响很直接——不再需要粘性会话,服务可以水平扩容、可以跑在 Serverless 上、断线重连不用恢复会话状态。配套的几项:

  • **MRTR(多轮往返)**用来处理原本要靠会话承载的多步交互;
  • 新增 Mcp-Method / Mcp-Name 请求头做头部路由,网关不用解包 body 就能路由、限流、鉴权;
  • list 类结果带上 ttlMs / cacheScope,工具清单可以被客户端缓存并按需刷新;
  • 动态客户端注册(DCR)弃用,转向 CIMD;
  • Roots / Sampling / Logging 与 HTTP+SSE 传输进入 12 个月弃用窗口;
  • Tasks、MCP Apps、企业级授权等从核心规范挪到扩展(extensions)。

最需要记住的一条:协议无状态之后,业务状态的新范式是工具返回显式 handle——状态不再挂在协议会话上,而是由工具返回一个句柄,后续调用凭句柄继续。这和长结果处理的做法正好统一(见 Q3-05)。

3. 和 Skills、A2A 的分工,一句话各自归位。 MCP 是(能力接入);Agent Skills 是操作手册(怎么把事做对,四级渐进式披露:约 100 token 的广告 → 加载 5000 token 以内的 SKILL.md → 读 references → 跑 scripts);A2A 是对外协作协议(Agent 之间互相委托任务,见 Q3-11)。三者不冲突,一个生产系统里可能同时存在。

追问链

图 1 · 五层追问树:面试官会往哪儿挖
从「模型知不知道 MCP」一路问到「对方改了描述怎么办」

  1. 接了 MCP 之后,模型侧的调用方式变了吗?

    期望没变:客户端把 MCP Server 的清单转成 tools schema,模型照样用 FC 返回 tool_call——模型不知道 MCP 的存在。变的三件:工具从哪来(运行时发现,不写死)、谁维护(server 方)、鉴权传输走谁的规范;它不提升选择准确率,那是描述设计的事
    信号明确说「模型不知道 MCP 存在」→ 接过;答「MCP 让模型能直接调用外部工具」→ 把两层混成一层
  2. 2026-07 规范为什么把协议核心改成无状态?部署上有什么影响?

    期望有状态在分布式最贵:粘性路由、扩缩容迁会话、Serverless 跑不了。无状态后任意实例可接请求,网关靠 Mcp-Method / Mcp-Name 头即可路由限流。代价是状态挪到应用层,多步交互交给 MRTR 与工具返回 handle;HTTP+SSE 进 12 个月弃用窗口
    信号说得出「粘性会话与扩容」这个真实痛点、知道状态挪去了 handle → 读过规范也部署过;只说「无状态更简单」→ 听说的
  3. 接了三个第三方 MCP Server,工具从 8 个变成 60 个,会怎样?

    期望三件事同时恶化:固定开销涨(每轮重发)、选择准确率降(边界模糊,两个 server 都叫 search)、prompt 缓存被击穿(对方改描述=前缀变)。治理:网关白名单 + 命名空间 + 分阶段装载ttlMs / cacheScope 控刷新——清单是外部输入,不能直接透传
    信号提「网关白名单 + 命名空间 + 清单缓存节奏」→ 运营过多 server 环境;只答「工具太多要精简」→ 没意识到这份清单不归自己管
  4. MCP、Agent Skills、A2A 三者的边界你怎么划?

    期望按「解决什么问题」划:MCP 是能力接入,Skills 是知识与流程按需加载(渐进式披露),A2A 是Agent 间的任务委托。一句话:MCP 是手,Skills 是手册,A2A 是同事。拿 MCP 做多 Agent 通信是凑合,语义不对——A2A 的设计词是 opaque
    信号用「解决什么问题」划分并点出 A2A 的 opaque 设计意图 → 跟上了 2026 生态;说三者「差不多」→ 只看过新闻标题
  5. 依赖的第三方 MCP Server 昨天改了工具描述,线上成功率掉了 15%,怎么止血怎么防?

    期望先恢复不查根因:① 关清单刷新、锁回上一份快照 → ② 没快照就在网关用自己的 schema 覆盖对方描述(名与参数没变就能救)→ ③ 仍不行就下线该工具。归因看清单 diff:改描述在 trace 上是选错工具,改字段名/加必填是填参失败。防复发:diff 告警阻断 → 版本锁定、灰度先跑 → 自建 adapter 层隔离 → 与对方定变更通知与 SLA
    信号先恢复后归因(顺序对)、能用「选错工具 vs 参数填错」快速分类 → 管过外部依赖;只答「联系对方问问怎么改的」→ 缺线上意识
前两层还在对协议分层和规范版本,第 3 层起才验治理:60 个工具怎么裁,以及对方一改描述、成功率掉 15% 时你先救哪一步。

评分要点

  1. 明确 FC 与 MCP 不在一层,不是替代关系
  2. 说清串联关系:MCP 工具 → 转成 tools schema → 模型仍用 FC
  3. 知道 MCP 解决的是 M×N 集成、发现、鉴权、传输,不提升模型能力
  4. 说得出代价:多一跳、清单不可控、供应链风险、调试链路变长
  5. 能说出什么时候不该上 MCP(内部少量工具、极致延迟、需冻结工具集)
  6. 加分:知道 2026-07-28 规范核心转无状态及其部署收益
  7. 加分:知道业务状态新范式是工具返回显式 handle
  8. 加分:知道弃用窗口(HTTP+SSE、Roots/Sampling/Logging)与迁移压力
  9. 加分:能划清 MCP / Skills / A2A 的边界

常见错误

「MCP 是 Function Calling 的升级版/替代品」——层次错误,本题最致命的一条。
只会背「MCP 是 AI 应用的 USB-C 接口」,再问一句实现细节就空——2026 最典型的背诵型回答。
「接了 MCP 模型就能自动调用各种工具了」——以为协议提升了模型能力。
讲的还是 initialize 握手 + 会话 id 那套模型,不知道 07-28 已转无状态(知识停在两年前)。
完全不提代价,把 MCP 说成纯收益。
对第三方 server 直接透传工具清单进上下文,没有白名单、快照和 diff 意识。
说不出 Skills 和 A2A 的区别,认为都是"MCP 的一部分"。

关联学习