什么是 MCP(模型上下文协议)?它到底解决了什么问题,和 Function Calling 又是什么关系?

Agent

答案要点 MCP(Model Context Protocol)是 Anthropic 2024 年底开源的标准协议,统一"AI 应用如何连接外部工具和数据" 解决 M×N 集成爆炸:M 个 AI 应用接 N 个工具,原来要写 M×N 套对接代码,有协议后只需 M+N 客户端-服务器架构:工具方实现 MCP Server 暴露能力,应用方实现 MCP Client 统一调用 与 Function Calling 不冲突:FC 是模型"表达调用意图"的能力,MCP 是工具"如何被发现和接入"的标准 常被比作"AI 世界的 USB-C 接口" 核心概念 MCP(Model Context Protocol,模型上下文协议)是一个开放标准,规定了 AI 应用与外部工具、数据源之间如何建立连接、发现能力、交换数据。打个比方:USB-C 出现前,每种设备一种插口;MCP 就是给 AI 工具生态定了一个"USB-C"——任何工具只要实现一次 MCP Server,所有支持 MCP 的应用都能直接用。 它解决的核心问题:M×N 集成爆炸 假设 5 个 AI 应用要接 10 个工具(GitHub、数据库、Slack 等): 没有协议:每对组合单独开发,最多 5×10=50 套对接代码 有了 MCP:应用各实现一次 Client、工具各实现一次 Server,5+10=15 套;新工具一上线即被所有应用共享 和 Function Calling 的关系(高频追问) 两者在不同层次、互相配合: | | Function Calling | MCP | |---|---|---| | 是什么 | 模型的一种能力 | 应用与工具间的通信协议 | | 管什么 | 模型怎么输出结构化调用意图 | 工具怎么被发现、描述、执行 | | 类比 | 人会"打电话"这个动作 | 电话网络的通信标准 | 实际运行时是接力关系:Client 启动时从各 Server 拉取工具列表,转成 schema 交给模型;模型用 Function Calling 输出调用意图;Client 再经 MCP 协议路由到对应 Server 执行并返回结果。 入门后可继续深入:MCP 的三类原语(Tools/Resources/Prompts)、stdio/HTTP 传输方式与安全授权设计。

口语版讲法(约2分钟)

  • 一句话定义:AI 应用连工具的开放标准协议
  • 痛点:M×N 集成爆炸变 M+N
  • 架构:工具做 Server,应用做 Client
  • 必考追问:和 Function Calling 分层配合
  • 埋钩子:三类原语和传输方式

MCP 我会先给一句话定义:它是 Anthropic 在 2024 年底开源的标准协议,全称 Model Context Protocol,模型上下文协议,规定了 AI 应用和外部工具、数据源之间怎么连接、怎么发现能力、怎么调用。 它解决的痛点特别好理解,就是集成爆炸。市面上有很多 AI 应用,Claude、Cursor、各家自研的助手;工具就更多了,GitHub、数据库、Slack、公司内部系统。没有统一协议之前,每个应用接每个工具都要单独写一套对接代码,5 个应用乘 10 个工具就是 50 套,维护是灾难。MCP 把它变成"各自实现一次":工具方实现一个 MCP Server,把自己的能力按标准格式暴露出来;应用方实现一个 MCP Client,就能用上所有 Server。5 加 10 等于 15,而且新工具一上线,所有应用立刻都能用。所以大家爱拿 USB-C 打比方——以前每种设备一种插口,现在一个口全通。 面试官几乎必追问它和 Function Calling 的关系,我的回答是:不冲突,是不同层次的东西。Function Calling 是模型的能力,管的是模型怎么输出结构化的调用意图;MCP 是协议,管的是工具怎么被发现、被描述、被执行。实际跑起来两者是接力的:Client 启动时从各个 Server 拉工具清单,转成 schema 给模型;模型用 Function Calling 说"我要调这个工具";Client 再通过 MCP 把请求路由给对应的 Server 执行,结果原路返回。一个是人会打电话这个动作,一个是电话网络的通信标准。 再往下深挖的话,MCP 里其实不只有工具,还有 Resources 和 Prompts 另外两类原语,传输上分本地 stdio 和远程 HTTP 两种方式,还有第三方 Server 的安全授权问题,这些我都可以展开聊。

关键一句:MCP 是协议、Function Calling 是模型能力,分层接力:MCP 管工具的发现与接入,FC 管模型输出调用意图。

面试官可能的追问

  1. 【概念辨析】经常有人把 MCP 和 Function Calling 混为一谈,你能说清两者分别在哪一层、各管什么吗?已经有 Function Calling 了,为什么还需要 MCP?
  2. 【场景切入】假设你们团队有 3 个 AI 助手产品,都要接公司内部的工单系统、知识库和 GitLab,现在每个都单独写对接代码很痛苦。用 MCP 的思路你会怎么重构这套集成?

同模块相关题目