外观
一句话答案
MCP(Model Context Protocol)是标准化的模型与外部工具/数据源通信协议,让 LLM 以统一方式调用各种工具。
核心要点
三者的本质区别:
| 维度 | Function Call | MCP(Model Context Protocol) | Skills |
|---|---|---|---|
| 定义 | LLM 原生的工具调用机制 | Anthropic 提出的工具服务化协议标准 | 可复用的工具能力封装单元 |
| 耦合度 | 强耦合(工具定义写在调用代码中) | 解耦(工具以服务形式暴露,LLM 动态发现) | 中等(一套逻辑可被多个 Agent 复用) |
| 动态发现 | 不支持 | 支持(Server 启动后 Client 自动发现可用工具) | 通常静态注册 |
| 适用范围 | 单次调用一个工具 | 跨语言、跨平台的工具生态 | 复合多步骤任务的封装 |
Function Call(函数调用):
- 模型输出一个 JSON 结构(工具名 + 参数),由外部代码执行对应函数
- 优点:简单直接,几乎所有主流 LLM 都支持
- 缺点:工具定义和 Agent 代码耦合,不易复用和扩展
MCP(Model Context Protocol):
- Anthropic 提出的开放协议,将工具以标准 HTTP 服务(或 WebSocket)形式暴露
- Agent(Client)连接 MCP Server,Server 声明自己有哪些工具(Tools)、可访问哪些资源(Resources)
- 优点:
- 工具服务化,独立部署,独立维护
- 支持动态注册,LLM 不需要提前知道工具列表
- 跨语言(Python/JS/其他语言实现的工具都能接入)
- 缺点:协议较新,生态还在建设中;引入网络调用,延迟略高
Skills:
- 比 Tool 更高层的抽象,封装了一个完整的业务能力(可能包含多个 Tool 调用 + 业务逻辑)
- 例如:"预订机票" 是一个 Skill,它内部会调用"查询航班"、"验证信息"、"下单"三个 Tool
- 优点:复用性更强,对 LLM 暴露的是意图而非操作细节,减少 LLM 决策负担
- 缺点:抽象层次高,实现成本高
总结: Function Call 是基础机制,MCP 是工具服务化的工程标准,Skills 是业务能力的高阶封装,三者层次递进。
追问与易错
追问方向:
- 这个概念在你的项目中是怎么应用的?
- 和相关技术/方案相比有什么优劣?
- 如果出了问题你会怎么排查?
易错点:
- ❌ 只知道概念不知道原理——面试官会追问底层实现
- ❌ 缺乏实际使用经验——结合项目场景回答更有说服力
💡 记忆锚点
工具调用三层递进像USB标准的演进:Function Call是直连线(工具定义写死在代码里,简单但耦合),MCP是标准USB接口(工具以服务暴露,Agent动态发现即插即用,跨语言跨平台),Skills是USB设备套件(封装多个Tool+业务逻辑成一个完整能力,如"订机票"=查航班+验证+下单)。Function Call是基础机制,MCP是工程标准,Skills是业务封装。