Skip to content
进阶

一句话答案

MCP(Model Context Protocol)是标准化的模型与外部工具/数据源通信协议,让 LLM 以统一方式调用各种工具。

核心要点

三者的本质区别:

维度Function CallMCP(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是业务封装。