Function calling和mcp区别
Function calling 和 MCP(Model Context Protocol,模型上下文协议) 都是让大语言模型(LLM)与外部世界交互的方案,但在设计目标、覆盖范围和实现方式上有明显差异。
一、什么是 Function calling
-
定义
Function calling 是 OpenAI 在 GPT 系列(如 gpt-4-0613、gpt-3.5-turbo-0613 等)中推出的一项 API 功能。开发者在请求里向模型提供一组“函数定义”(包括函数名、参数 JSON Schema、描述等),模型会根据对话内容自动判断是否需要调用其中某个函数,并输出一个符合 Schema 的 JSON 调用指令。 -
典型流程
-
客户端调用 Chat Completions API,并在
functions
参数里传入若干函数定义。 -
模型在生成回复时,如果判断需要外部操作,就输出:
{"name": "get_current_weather","arguments": { "location": "Boston", "unit": "celsius" } }
-
客户端接收上述函数调用指令,执行本地或远程函数,获得返回值后,再把结果传给模型,模型据此生成最终回复。
-
-
适用场景
- 简化“自然语言 → API 调用” 的桥梁(比如天气查询、发邮件、数据库查询等)。
- 插件式扩展:只需定义少量函数,就能让模型具备新能力。 (OpenAI)
二、什么是 MCP
-
定义
MCP(Model Context Protocol)是由 Anthropic 推动的开放标准协议,旨在为任意 LLM 应用提供一个统一的上下文交互层。它不只是“函数调用”,而是涵盖了对各种资源、工具、提示词、采样策略和传输方式的标准化规范。 -
核心模块
- Resources(资源):数据库、文件系统、API 等外部数据源
- Prompts(提示词):如何动态拼装上下文给模型
- Tools(工具):可执行操作的函数、脚本或微服务
- Transports(传输层):支持 stdio、SSE 等协议,保证模型与 MCP 服务器之间通信可靠
-
生态与发展
- 2024 年 11 月开源,Anthropic 示例中用 Claude 客户端一分钟内接入 GitHub 并发起 PR (The Verge)
- 2025 年 4 月获得行业认可,Axios 报道称它正成为 LLM 与日常应用、企业系统互联的“USB-C”标准 (Axios)
-
适用场景
- 构建多步骤、跨工具的智能 Agent(如业务流程自动化)
- 需要对上下文做精细化管理:不仅是调用一次函数,而是持续维护资源、提示和状态
三、主要区别对比
Function calling | MCP(Model Context Protocol) | |
---|---|---|
范畴 | OpenAI API 的内建能力 | 跨模型、跨平台的开放协议 |
覆盖范围 | 仅「函数调用」:自然语言→API/函数 | 包含「资源接入」+「提示管理」+「工具暴露」+「传输层」等 |
接口规范 | JSON Schema 定义函数签名与参数 | 统一的 MCP 规范文档,定义 Resources/Tools/Prompts 等 |
运作模式 | 模型判断并发起单次或并行函数调用 | 应用方搭建 MCP Server,模型与之持续交互 |
典型应用 | 天气查询、发邮件、简单数据库查询 | 企业级数据报表、跨系统自动化工作流、复杂 Agent |
四、小结
- 如果仅需让 GPT 在对话中智能地调用几个接口,Function calling 无疑是开箱即用的最佳选择。
- 若要构建一个可组合、可扩展的 AI 应用生态,让模型能随时访问各种数据源、执行多步任务,并在不同工具间保持上下文连贯,则更适合采用MCP这样完整的协议层。