Function Call与MCP的区别

0 阅读2分钟

function call 是让大模型在一次对话里,按你提供的 函数 schema 生成“该调用哪个函数、传什么参数”;
MCP 是一个 统一协议,让模型客户端和外部系统之间,能标准化地发现并使用 工具、资源、提示词/工作流。换句话说,function call 更像“调用动作”,MCP 更像“接入标准”。

核心区别有 5 个:

  1. 抽象层级不同
    function call 是 API 层能力,重点是“模型如何调用一个工具/函数”;OpenAI 官方把它定义为一种 tool,函数由 JSON Schema 描述参数。MCP 则是协议层标准,规定客户端和服务器如何初始化、协商能力、列出并调用能力。
  2. 能力范围不同
    function call 主要解决“调用函数/工具”。MCP 不只包含 tools,还包含 resources(上下文/数据)和 prompts(模板化提示与工作流)。所以 MCP 覆盖面更大。
  3. 发现方式不同
    function call 通常是你在代码里提前把工具列表直接传给模型。MCP 则支持客户端通过协议去 发现 服务器暴露出来的工具、资源、提示,并且服务器能力还能动态变化。
  4. 生态目标不同
    function call 更适合“我的应用里有几个自定义函数,我想让模型调用”。MCP 的目标是“一次实现,到多个 AI 客户端/代理里复用”,官方把它类比成 AI 的 USB-C 接口。
  5. 关系不是替代,而是包含/配合
    在今天的生态里,两者可以一起用。比如 OpenAI 官方文档把 function callingremote MCP servers 并列为可用工具能力;也就是说,MCP 服务器可以给模型提供工具,而模型最终依然会发生“调用工具”这个动作。

你可以用一句话记忆:

  • function call:我已经知道有哪些函数,让模型选一个来调。
  • MCP:我先按统一协议把外部世界接进来,再让模型去发现和使用这些能力。

落到你的开发场景里:

  • 你只是做“文件按后缀分类”“调用本地 move_file()”“查一个数据库接口”这类单应用内工具,优先用 function call
  • 你要把文件系统、Git、数据库、Notion、Calendar 这类能力做成可复用接入,或者希望不同客户端都能接同一套能力,优先考虑 MCP。MCP 官方示例服务器就包括 filesystem、git、memory、time 等。

function_call与mcp的区别.png