什么是 MCP(模型上下文协议)?它到底解决了什么问题,和 Function Calling 又是什么关系?
Agent
口语版讲法(约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 管模型输出调用意图。
面试官可能的追问
- 【概念辨析】经常有人把 MCP 和 Function Calling 混为一谈,你能说清两者分别在哪一层、各管什么吗?已经有 Function Calling 了,为什么还需要 MCP?
- 【场景切入】假设你们团队有 3 个 AI 助手产品,都要接公司内部的工单系统、知识库和 GitLab,现在每个都单独写对接代码很痛苦。用 MCP 的思路你会怎么重构这套集成?