news 2026/7/1 4:31:02

Function Calling、MCP 和 Skills 的区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Function Calling、MCP 和 Skills 的区别

结论先行

Function Calling、MCP 和 Skills 都是在扩展 AI Agent 的能力,但它们解决的问题层级不同:

能力 主要解决什么 本质 适合场景 Function Calling 让模型调用你定义的函数 API 级工具调用协议 应用内业务函数、结构化参数、确定性动作 MCP 让模型连接外部工具、系统和数据源 标准化工具/资源服务器协议 数据库、代码图谱、浏览器、GitHub、内部系统 Skills 让 Agent 学会一套稳定流程 指令、资源、脚本的工作流包 可复用任务流程、团队规范、领域操作手册

一句话区分:

Function Calling 是“调用一个函数”;MCP 是“连接一套外部能力”;Skills 是“教会 Agent 怎么做一类事”。

1. Function Calling 是什么

Function Calling 是 OpenAI API 里的工具调用能力。开发者把函数名、参数 schema、说明交给模型,模型根据用户意图决定是否调用函数,并生成结构化参数。

它不直接执行函数。模型只会产出类似:

{ "name": "create_order", "arguments": { "product_id": "sku_123", "quantity": 2 } }

真正执行create_order的,是你的应用代码。

适合用 Function Calling 的情况

  1. 你在写自己的应用后端。
  2. 工具逻辑明确、参数明确、返回值明确。
  3. 需要模型从自然语言中抽取结构化参数。
  4. 工具数量不多,且和当前应用强绑定。

典型例子:

  • 查询订单状态
  • 创建工单
  • 计算报价
  • 调用内部 REST API
  • 把用户输入转成数据库查询参数

不适合的情况

如果你要接入的是一整套外部系统,例如 GitHub、浏览器、数据库、代码索引、知识库,直接堆 function calling 会很快变重。这种情况更适合 MCP。

官方参考:OpenAI Function Calling

2. MCP 是什么

MCP,全称 Model Context Protocol,是一种让 Agent 连接外部工具和数据源的协议。它通常以 MCP Server 的形式存在,向模型暴露 tools、resources、prompts 等能力。

Function Calling 更像是“我这个应用里有几个函数可以叫”;MCP 更像是“我启动了一个服务,它提供一组标准化能力”。

例如 CodeGraph MCP 可以提供:

  • 搜索代码符号
  • 查看调用关系
  • 分析影响范围
  • 追踪调用路径
  • 读取代码结构索引

这些能力如果全部用普通 function calling 手写,也能做,但会变成一堆高度耦合的工具定义和胶水代码。MCP 的价值是把这些能力封装成可复用的外部服务。

适合用 MCP 的情况

  1. 要接入外部系统或长期运行的工具服务。
  2. 工具能力比较多,不只是一个函数。
  3. 多个 Agent 或多个项目都要复用。
  4. 工具需要维护状态、索引、连接、认证。
  5. 需要把私有数据源安全地暴露给 Agent。

典型例子:

  • CodeGraph
  • Playwright / 浏览器控制
  • GitHub / GitLab
  • 数据库
  • Notion / Slack / Google Drive
  • 内部知识库
  • 公司自研平台

MCP 和 Function Calling 的关系

MCP 不是 Function Calling 的替代品,而是更高一层的工具接入方式。

在模型视角里,MCP server 暴露出来的 tool 最终也可能表现为“可调用工具”。但在工程架构上,MCP 把工具的发现、描述、调用、资源访问、服务生命周期都标准化了。

官方参考:OpenAI Tools / Remote MCP Servers

3. Skills 是什么

Skills 是给 Agent 的可复用能力包。一个 Skill 通常包含:

  • SKILL.md:说明什么时候使用、怎么使用
  • 参考资料
  • 模板文件
  • 脚本
  • 示例
  • 领域约束

Skills 的核心不是“提供一个外部工具”,而是“规定一套工作方法”。

例如一个resume-makerskill 可以告诉 Agent:

  • 简历应该怎么排版
  • 中文简历用什么结构
  • 如何导出 HTML/PDF
  • 哪些字段必须保留
  • 哪些措辞要优化
  • 应该调用哪些脚本

它更像一个可安装的专家手册。

适合用 Skills 的情况

  1. 有一类任务会反复出现。
  2. 需要固定流程、标准、模板或领域知识。
  3. 想减少每次重复提示。
  4. 想把团队规范沉淀成 Agent 可执行的说明。
  5. 任务不一定需要外部系统,但需要“知道怎么做”。

典型例子:

  • 生成简历
  • 实现 Figma 设计稿
  • 排查 GitHub CI
  • 编写代码审查报告
  • 生成插件脚手架
  • 按团队规范写发布说明

官方参考:Codex Agent Skills、OpenAI Skills

4. 三者的核心区别

4.1 从“能力来源”看

能力 能力来自哪里 Function Calling 你的应用代码 MCP 外部 MCP Server Skills Markdown 指令、资源、脚本和流程约束

4.2 从“执行主体”看

能力 谁执行 Function Calling 你的程序执行函数 MCP MCP server 执行工具 Skills Agent 按 skill 指令决定怎么做,必要时调用工具或脚本

4.3 从“抽象层级”看

从低到高大致是:

Function Calling ↓ MCP ↓ Skills

但这不是谁替代谁,而是关注点不同:

  • Function Calling 偏 API 调用。
  • MCP 偏工具连接。
  • Skills 偏工作流和方法论。

5. 什么时候该用哪个

5.1 用 Function Calling

当你要做的是:

“模型判断该不该调用一个业务函数,并生成参数。”

例如:

用户:帮我查一下订单 12345 到哪了 模型:调用 get_order_status(order_id="12345") 你的后端:执行查询并返回结果

这类场景不需要 MCP,也不需要 Skill。

5.2 用 MCP

当你要做的是:

“让 Agent 接入一个外部工具系统。”

例如:

用户:分析这个项目里 publishVideo 到平台 adapter 的调用链 Agent:调用 CodeGraph MCP CodeGraph:返回符号、调用关系和文件位置

这种能力不是一个简单函数,而是一套代码理解服务,所以适合 MCP。

5.3 用 Skills

当你要做的是:

“让 Agent 每次都按同一套专业流程完成某类任务。”

例如:

用户:帮我做一个中文简历 PDF Agent:触发 resume-maker skill Skill:规定结构、模板、措辞、导出方式和校验步骤

这里重点不是外部工具,而是任务流程和标准。

6. 三者可以组合使用

实际工程里,三者经常组合。

例如“实现一个平台自动发布功能”:

Skill 定义平台适配流程、代码规范、验收标准 MCP 用 CodeGraph 查项目结构 用 Playwright 控制浏览器 用 GitHub 查 PR/CI Function Calling 在你自己的应用服务里暴露 publish_video、get_accounts、get_history 等业务函数

这就是官方文档里提到的方向:Skills 定义可重复工作流,MCP 连接外部工具和系统。

官方参考:Codex Customization - Skills + MCP

7. 常见误区

7.1 “MCP 等于 Function Calling”

不准确。

MCP 暴露的工具可能被模型像工具一样调用,但 MCP 本身是一种外部工具/资源协议;Function Calling 是 API 层让模型生成函数调用参数的机制。

7.2 “Skills 能替代 MCP”

不能完全替代。

Skill 可以告诉 Agent 怎么查数据库,但它本身不等于数据库连接。真正访问数据库,仍然需要 MCP、命令行脚本、API 或其他工具。

7.3 “MCP 能替代 Skills”

也不能完全替代。

MCP 提供工具,但不一定告诉 Agent 什么时候用、按什么标准用、结果怎么验收。Skills 可以把这些流程固化下来。

7.4 “Function Calling 最简单,所以都用它”

短期简单,长期可能变成一堆难维护的工具 schema。

如果能力是单个业务动作,用 Function Calling 合理。
如果能力是一套系统,MCP 更合适。
如果能力是一套工作方法,Skill 更合适。

8. 选择建议

可以按这个判断:

问题 1:只是调用我应用里的一个确定函数吗? 是 -> Function Calling 否 -> 继续 问题 2:需要接入外部系统、服务、数据源或工具集吗? 是 -> MCP 否 -> 继续 问题 3:需要沉淀一套可复用流程、规范、模板或领域知识吗? 是 -> Skills 否 -> 普通提示词或项目文档即可

更具体一点:

需求 推荐 用户说一句话,转成结构化参数 Function Calling 调用后端业务函数 Function Calling 接入代码索引、浏览器、数据库 MCP 接入公司内部系统 MCP 固化代码审查流程 Skills 固化 UI 实现规范 Skills 固化简历生成流程 Skills 让 Skill 使用 CodeGraph 查代码 Skills + MCP 让应用里的 Agent 调用订单系统 Function Calling 或 MCP,取决于复杂度

9. 最后总结

Function Calling、MCP、Skills 的区别可以压缩成三句话:

  1. Function Calling:让模型调用你定义的函数,适合应用内确定性动作。
  2. MCP:让模型连接外部工具和数据源,适合系统级能力接入。
  3. Skills:让 Agent 学会一套可复用流程,适合沉淀规范、模板和领域经验。

工程上不要纠结谁更高级。正确做法是按边界选:

  • 业务函数用 Function Calling。
  • 外部能力用 MCP。
  • 可复用流程用 Skills。
  • 复杂任务把三者组合起来。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 4:31:02

基于SSM框架的Java智慧养老系统开发实战:从环境搭建到功能实现

这次我们来看一个基于 SSM 框架和 MySQL 数据库的 Java 智慧养老系统。对于计算机专业的同学来说,毕业设计是一个综合性的实战项目,而一个功能完整、结构清晰的“养老院综合管理平台”无疑是一个既贴合社会热点,又具备一定技术深度的选题。这…

作者头像 李华
网站建设 2026/7/1 4:30:12

化疗三次扛不住后,他转到了这里:没想到还能吃下饭、睡整觉

老张今年68岁,半年前确诊肺癌晚期。确诊那天,儿子在走廊里蹲了很久没站起来。老张倒是平静,跟医生说:“该怎么治怎么治,我不怕。”他确实不怕。第一次化疗,他咬着牙挺过去了。第二次,吐了三天&a…

作者头像 李华
网站建设 2026/7/1 4:30:04

【课程设计/毕业设计】基于 SpringBoot 的仓储物流物资管控系统的设计与实现 基于 SpringBoot 的库房出入库数据统计分析系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/1 4:30:02

从零构建Linux内核操作系统:环境搭建、编译与QEMU测试实战

在操作系统开发领域,Linux内核以其开源、稳定和高度可配置的特性,成为了学习和构建自定义操作系统的绝佳起点。无论是出于学术研究、嵌入式系统开发,还是对计算机底层原理的深度探索,基于Linux内核进行操作系统开发都是一项极具价…

作者头像 李华
网站建设 2026/7/1 4:29:50

选对会议软件少走弯路:会助力智能会务系统,让每一场会议都高效省心

如今线上线下融合办会已经成为行业常态,不少主办方在挑选会议平台时,总容易陷入“功能多却用不上、操作复杂学不会、关键环节容易掉链子”的困境,而一款真正适配全场景需求的会务软件,恰恰是解决这些痛点的核心答案。会助力智能会…

作者头像 李华
网站建设 2026/7/1 4:28:18

HDFS常用指令

一、目录文件类1、ls 查看根目录内容-R 递归列出所有子目录文件 -h 人性化单位展示大小hadoop fs -ls /2、mkdir 创建目录-p 递归创建多级目录hadoop fs -mkdir /test3、rm 删除文件或目录hadoop fs -rm /test4、rmkdir 删除空目录hadoop fs -rmkdir /test5、count 统计目录…

作者头像 李华