Function Calling、MCP、Agent Skill 三层架构解析
Function Calling、MCP、Agent Skill 三层架构详解:从调用协议到工具标准化再到流程封装
1. 三者的常见误区
很多人一上来就把 Function Calling、MCP、Agent Skill 当成三个平行的竞争方案——Function Calling 是 OpenAI 的方案,MCP 是 Anthropic 的方案,Skill 也是 Anthropic 的方案,认为它们是不同时期搞出来的替代品。
这个理解是错的。三者不是并列关系,而是从底到顶的三层架构:Function Calling 在最下层做调用协议,MCP 在中间层做工具标准化,Agent Skill 在最上层做流程封装。每一层解决不同层次的问题,依赖下一层的基础能力,各司其职。
2. 第一层:Function Calling——模型触发外部调用的协议
2.1 解决的核心问题
大模型本身只会生成文本。当模型需要触发外部操作(查数据库、调 API、写文件)时,需要一种机制让模型告诉宿主程序"我要调哪个函数、传什么参数"。Function Calling 解决的就是这个最基础的调用协议问题。
2.2 技术机制
Function Calling 的工作流程:
- 宿主程序在调用模型时,传入一组工具定义(函数名、参数描述)
- 模型根据任务判断是否需要调用某个工具
- 如果需要,模型输出一个结构化 JSON(tool_calls),包含函数名和参数
- 宿主程序解析 JSON,执行对应函数,将结果以 tool 消息返回给模型
- 模型根据工具返回结果继续生成回复
一个典型的 tool_calls 输出格式:
{
"tool_calls": [
{
"id": "call_001",
"type": "function",
"function": {
"name": "query_database",
"arguments": "{\"sql\": \"SELECT * FROM users WHERE id = 1\"}"
}
}
]
}
关键点:
- 调用发生在模型与函数之间,是单次调用的格式规范
- 模型不执行函数,只输出调用意图;宿主程序负责实际执行
- 执行结果以 tool 消息形式返回给模型,作为后续推理的上下文
2.3 边界与局限
Function Calling 只定义了"调用格式"这个最薄的协议层。它不解决以下问题:
- 工具如何注册、如何发现
- 工具如何标准化暴露
- 每次对接新工具都需要手动编写适配代码
3. 第二层:MCP(Model Context Protocol)——工具标准化封装
3.1 解决的核心问题
Function Calling 普及后,每个应用都要自己写代码对接各种工具——数据库一套、文件系统一套、API 又是一套,重复劳动多。MCP 解决的是工具的标准化接入问题:一次实现,到处复用。
3.2 技术机制
MCP 采用 Client-Server 架构:
- MCP Server:工具提供方,暴露标准化的工具接口
- MCP Client:AI 客户端,连接 Server 并自动发现可用工具
工作流程:
- MCP Client 连接 MCP Server
- Client 自动发现 Server 暴露的工具列表(工具名、参数、返回值定义)
- Client 将工具定义自动转换为 Function Calling 格式喂给模型
- 模型输出 tool_calls 后,Client 路由到对应的 Server 执行
MCP 的工具定义格式示例:
{
"tools": [
{
"name": "query_database",
"description": "执行 SQL 查询并返回结果",
"inputSchema": {
"type": "object",
"properties": {
"sql": { "type": "string", "description": "SQL 查询语句" }
},
"required": ["sql"]
}
}
]
}
关键点:
- MCP 不替代 Function Calling,而是在它之上做封装和管理
- MCP Server 暴露的工具定义最终通过 Function Calling 格式传给模型
- 工具定义与实现分离:Server 可以独立部署和升级
3.3 与 Function Calling 的关系
MCP 依赖 Function Calling 完成最终调用触发。MCP Server 暴露的工具列表被 Client 转换成 Function Calling 的工具定义,模型通过 Function Calling 格式触发调用,Client 再将调用路由到对应的 Server 执行。
3.4 边界与局限
MCP 管工具的标准接入,不管工具的调用流程和编排。它不解决以下问题:
- 面对复杂任务,模型不知道该按什么顺序使用这些工具
- 每次执行同类任务都需要重复编写步骤和约束
4. 第三层:Agent Skill——知识和流程的可复用封装
4.1 解决的核心问题
模型有了工具(通过 MCP 暴露),但面对一个复杂任务,它不知道该按什么流程、什么标准来用这些工具。Skill 解决的是知识和流程的复用问题:把"使用工具完成特定任务"的步骤、模板、脚本打包成可复用模块。
4.2 技术机制
Skill 的典型组成:
- SKILL.md:描述 Skill 的触发条件、执行步骤、输出标准
- 模板文件:输出格式模板、代码模板
- 脚本:可执行脚本或工具调用链定义
Agent 加载 Skill 的流程:
- Agent 启动时扫描可用 Skill 列表
- 用户提交任务后,Agent 判断哪个 Skill 与任务匹配
- Agent 加载匹配的 SKILL.md,按其中定义的步骤执行
- 每个步骤可能涉及调用多个 MCP 工具,通过 Function Calling 触发
一个 SKILL.md 的结构示例:
# 代码审查 Skill
## 触发条件
- 用户提交 PR 或要求审查代码
## 执行步骤
1. 读取 PR 的 diff 内容
2. 检查代码风格是否符合项目规范
3. 检查是否存在潜在 bug 或安全漏洞
4. 生成审查意见,按严重程度分级
## 输出标准
- 每个问题必须标注文件路径和行号
- 严重问题(P0)必须给出修复建议
4.3 与 MCP 和 Function Calling 的关系
完整依赖链:Skill(定义流程)→ MCP(提供工具)→ Function Calling(触发调用)
- Skill 定义"做什么、按什么顺序做"
- MCP 提供"用什么工具做"
- Function Calling 实现"模型怎么触发工具"
4.4 边界与局限
- Skill 不定义工具如何接入,依赖 MCP 提供工具
- Skill 不定义模型如何调用函数,依赖 Function Calling 触发
- Skill 的粒度比 MCP 工具粗得多,一个 Skill 可能涉及多个步骤、调用多个 MCP 工具
5. 三层依赖关系总结
三者不是替代关系,而是包含关系,每层建立在下一层的基础之上:
Skill ⊃ MCP ⊃ Function Calling
| 维度 | Function Calling | MCP | Agent Skill |
|---|---|---|---|
| 角色 | 调用协议 | 工具标准化 | 流程封装 |
| 通信对象 | 模型 ↔ 函数 | MCP Client ↔ MCP Server | Agent ↔ 知识模块 |
| 粒度 | 单次调用 | 工具定义 | 多步骤任务 |
| 解决的问题 | 模型怎么调函数 | 工具怎么暴露给模型 | 拿到工具后按什么流程做 |
| 依赖关系 | 最底层 | 依赖 Function Calling | 依赖 MCP + Function Calling |
6. 完整流程串联:三层如何协作
用一个具体场景把三层串起来。
用户对 Agent 说:“帮我分析最近三个月的销售数据,找出下滑的产品线,给改进建议。”
Step 1(Skill 层):Agent 收到任务后,扫描可用 Skill 列表,发现有一个"数据分析报告"Skill 和这个任务匹配。Agent 加载该 Skill 的 SKILL.md,读取其中定义的分析流程:第一步从数据库取数据,第二步用 Python 做趋势分析,第三步按模板写分析报告。
Step 2(MCP 层):执行第一步"从数据库取数据"时,Agent 的 MCP Client 已经连着数据库 MCP Server 和 Python 执行器 MCP Server,自动发现 query_database 和 run_python 等工具可用。不需要任何手动配置。
Step 3(Function Calling 层):模型判断需要查数据库,输出 tool_calls 指定调用 query_database 并传入 SQL 参数。MCP Client 将请求路由到数据库 Server 执行,结果返回给模型。模型接着调用 Python 执行器做趋势分析。最后按 Skill 模板整理成分析报告。
三层分工:Skill 做流程编排,MCP 做工具管理,Function Calling 做通信。缺任何一层,这个任务都无法完整执行。
7. 总结
Function Calling、MCP、Agent Skill 不是三个平行的竞争方案,而是从底到顶的三层架构:
- Function Calling 是语言,让模型能说出要调什么函数
- MCP 是工具箱,把工具标准化打包,随时插拔
- Agent Skill 是操作手册,教 Agent 用工具箱里的工具按什么流程完成工作
面试中回答这道题,第一个要说清楚三层层级关系,第二个用完整场景串联三层协作,让面试官看到你不只是背了概念,而是真正理解了三者在系统里怎么协作的。
更多推荐

所有评论(0)