MCP 和 function calling 的差别

📅 2026/7/16 15:35:14
MCP 和 function calling 的差别
文章目录1. 为什么这两个概念总被混在一起2. 结论先行3. 先把两者各自放回正确位置3.1 Function calling 更靠近模型交互3.2 MCP 更靠近应用与外部能力之间的连接层4. 用同一个场景看差别何时出现4.1 只靠 function calling 时4.2 开始需要 MCP 时5. 横向对比6. 什么时候你几乎感觉不到差别6.1 单一应用工具很少6.2 工具完全由应用方封装6.3 任务很短不涉及跨系统复用7. 什么时候差别会变得明显7.1 你开始在多个 AI 客户端里重复接同一类能力7.2 你需要的不只是“调用”还有“读取”和“复用流程”7.3 你开始建设自己的能力层而不是只消费别人的内置工具8. 它们更常见的关系一起工作9. 选型建议10. 常见误区10.1 以为 MCP 出现后function calling 就过时了10.2 以为会配 MCP Server就等于理解了 Agent10.3 以为所有项目都应该尽早上 MCP10.4 只比较名词不比较场景11. 关键术语速查12. 小结13. 后续内容摘要上一篇讲过MCP 是让 AI 应用更标准化地连接外部工具和数据的协议。很多人听完后马上会问下一个问题这不就是 function calling 吗本文从实际使用场景出发讲清楚两者分别处在哪一层、什么时候你几乎感觉不到差异、什么时候差异会变得明显。适合已经接触过 AI 工具调用并开始看到 MCP 配置项的开发者。读完应能判断当前项目用 function calling 是否已经够用还是值得引入 MCP。说明本文承接 MCP 基础概念一文重点做场景化对比。具体产品实现和协议细节会随生态更新变化以各官方文档为准。1. 为什么这两个概念总被混在一起混在一起并不奇怪因为它们看起来都在做同一件事让模型不只聊天还能调用外部能力。于是很容易出现这种简化判断能调工具 function calling能调工具 MCP所以两者差不多这个判断只对了一半。它们确实有重叠尤其在“模型最终会不会发起一次工具调用”这件事上。但真正的差别不在“能不能调工具”而在工具能力是怎么被发现、组织、暴露和复用的。图1. Function calling 更靠近模型这一次如何调用MCP 更靠近应用如何统一接入外部能力。2. 结论先行如果只想先拿结论可以先记住这几句Function calling 解决的是模型这一轮要不要调用某个工具以及怎么把参数传出去。MCP 解决的是AI 应用如何用更统一的方式连接、发现和复用外部能力。很多系统里两者不是二选一而是一起工作。如果你只有一个应用、几个固定工具function calling 通常已经够用如果你要跨客户端复用能力或把工具、资源、提示组织成能力层MCP 的价值才会明显起来。再压缩成一句Function calling 更像“调用动作”MCP 更像“能力接入规范”。3. 先把两者各自放回正确位置3.1 Function calling 更靠近模型交互Function calling 的典型流程通常是用户提出需求模型判断需要外部能力模型按约定格式发起调用应用执行工具并返回结果模型继续生成最终回答它关心的核心问题是这一轮该不该调工具调哪个参数怎么填结果怎么回到对话里图2. Function calling 的重点通常落在单次对话中的工具调用决策。3.2 MCP 更靠近应用与外部能力之间的连接层MCP 更关注的是一个 AI 客户端如何连接多个 Server这些 Server 如何暴露 Tools、Resources、Prompts同一套能力如何被不同 Host 复用本地或远程能力如何按统一协议接入所以你在 Cursor、Claude Code 一类工具里配置 MCP Server 时感受到的往往不是“模型多学了一种语法”而是这个 AI 应用开始能接上一组标准化的外部能力入口。图3. MCP 的常见画面是一个 Host 连接多个 Server而不是单次函数调用本身。4. 用同一个场景看差别何时出现继续用一个容易理解的开发任务查看仓库里和登录相关的 Issue对照当前代码再去文档站确认接口说明最后给出还缺哪些测试。4.1 只靠 function calling 时如果这些能力都已经写死在某一个 AI 应用内部过程可能是应用内置了几个固定工具比如查仓库、读文件、搜文档模型通过 function calling 决定调用它们任务在这个应用里完成这时你几乎感觉不到 MCP 的存在。因为能力已经在这个应用内部准备好了模型只需要会调。4.2 开始需要 MCP 时差别通常出现在这些变化之后你希望同一套 GitHub / 文档 / 数据库能力在 Cursor 和另一个 Agent 客户端里都能用你不想为每个 AI 应用单独维护一套私有插件你不但要调工具还想暴露可读资源或者复用一套标准排查提示你开始把外部能力当成独立模块来建设而不是某个聊天窗口的附属功能这时问题就从“模型会不会调”变成了这些能力如何被稳定地接入、发现和复用。也就是 MCP 更擅长处理的那一层。5. 横向对比维度Function callingMCP主要问题模型如何发起一次工具调用AI 应用如何标准化连接外部能力关注点单次调用决策与参数能力发现、连接、复用常见形态应用内置工具 schemaHost 连接一个或多个 Server能力范围通常偏工具调用可覆盖 Tools、Resources、Prompts复用性多绑定在单一应用内更适合跨客户端复用你最先感知到的地方模型开始调用天气、搜索、代码工具客户端里出现 MCP Server 配置一个容易记的区分Function calling这一次怎么调MCP这些能力以后怎么接、怎么复用6. 什么时候你几乎感觉不到差别以下情况两者的边界会显得很模糊6.1 单一应用工具很少比如某个聊天应用内置了两三个固定工具模型通过 function calling 调用它们。对用户来说这就是“AI 能用工具了”不会特意关心底层有没有 MCP。6.2 工具完全由应用方封装如果 GitHub、数据库、浏览器能力都由某个产品自己封装好你只是在用它的界面那么协议层对你几乎透明。6.3 任务很短不涉及跨系统复用问一句天气、查一个简单状态、跑一个固定函数这类任务本身不需要复杂的能力层设计。所以不是每个人一上来就会感到 MCP 的必要性。很多时候function calling 已经足以支撑当前体验。7. 什么时候差别会变得明显下面这些情况差异通常会清楚起来。7.1 你开始在多个 AI 客户端里重复接同一类能力例如Cursor 里要接 GitHub另一个 Agent 工具里也要接 GitHub本地助手还要接同一套文档库如果每次都做私有集成成本会很快上去。MCP 的价值这时更容易体现。7.2 你需要的不只是“调用”还有“读取”和“复用流程”Function calling 很擅长表达“去做一个动作”。但当你还需要把文档、配置、结构化数据作为资源暴露出来把排查、审查、生成流程沉淀成可复用提示MCP 的覆盖面通常更完整。7.3 你开始建设自己的能力层而不是只消费别人的内置工具一旦你开始想公司内部系统要不要做成可接入能力本地知识库要不要给多个 Agent 共用某套浏览器或数据库能力能不能独立维护这时讨论的就不再只是模型调用格式而是能力接入架构。图4. 工具少、应用单一时差别不明显能力要复用、要跨客户端时差别才会放大。8. 它们更常见的关系一起工作一个很重要的点MCP 并不天然排斥 function calling。更常见的实际关系是MCP Server 把外部能力暴露给 AI 应用应用把这些能力组织成模型可理解的工具接口模型通过类似 function calling 的机制决定何时调用也就是说MCP 负责“能力从哪里来、怎么接进来”Function calling 负责“这一轮要不要用、怎么用”把它们理解成竞争关系反而容易选错层。图5. MCP 提供可接入能力function calling 决定当前回合如何使用这些能力。9. 选型建议你的情况更合理的选择原因单个应用几个固定工具Function calling 足够复杂度低没必要先上协议层只想让模型会调内置工具先把 function calling 用熟先解决调用再谈接入规范多个 AI 客户端要复用同一套能力认真考虑 MCP复用和统一接入价值更高需要资源读取和流程模板不只是动作调用MCP 更合适能力模型更完整已在用 Cursor / Claude Code并开始配 Server说明你已经接触 MCP 层这时值得把概念边界分清团队准备建设内部工具能力平台优先按 MCP 思路设计长期复用成本更低一句话建议先问自己当前痛点是“模型还不会调工具”还是“工具接入和复用已经开始变乱”。前者优先看 function calling后者才更需要 MCP。10. 常见误区10.1 以为 MCP 出现后function calling 就过时了没有。很多系统仍然依赖模型侧的工具调用决策。MCP 解决的是另一层问题。10.2 以为会配 MCP Server就等于理解了 Agent配置只是接入。任务拆解、权限控制、结果校验、人工 Review仍然决定效果。10.3 以为所有项目都应该尽早上 MCP如果当前只有一个客户端、几个固定工具过早引入协议层可能只是增加理解成本收益有限。10.4 只比较名词不比较场景真正有用的问题不是“哪个更新”而是你现在有几个 AI 客户端你要接多少外部系统这些能力要不要复用你需要的只是调用还是还要资源和流程模板11. 关键术语速查术语含义Function calling模型在对话过程中按约定格式发起工具调用的机制MCPModel Context Protocol规范 AI 应用连接外部能力的协议Tool schema描述工具名称、参数和用途的结构定义Host使用 MCP 的 AI 应用MCP Server对外暴露工具、资源或提示的服务端Resources可被读取的上下文资源Prompts可复用的提示或工作流模板12. 小结MCP 和 function calling 容易被混谈是因为它们都出现在“AI 开始使用工具”这条主线上。但它们并不处在同一层Function calling 回答的是这一次怎么调用MCP 回答的是这些能力以后怎么接入和复用对很多开发者正确路径不是二选一而是分阶段先让模型在单一应用里学会稳定调用工具当能力开始变多、客户端开始变多、复用需求出现时再认真看 MCP最终更常见的状态是两者协同而不是互相替代如果你已经能分清这两层后面看 Cursor、Claude Code 或其他 Agent 产品时就不容易再被名词带着跑。13. 后续内容如果后面继续写相关主题可以再展开在实际 AI 编程工具里怎样判断一个任务值不值得接外部能力Agent 工作流里工具权限和 Review 应该怎么控如果这篇帮你把两个易混概念分开了欢迎点赞、收藏也欢迎关注后续更新。