先问一个问题:当你听说MCP、Function Call和Agent Skills这几个概念时,是不是也有点懵?这三者到底有啥区别,又各自扮演什么角色?
想象一下,可爱又疯狂的乌萨奇(Usagi)最近入职了一家高端家政公司,担任“全自动智能管家”。为了让乌萨奇能完美打理你的家,工程师们面临三个难题:一是怎么让乌萨奇的手插进各种品牌的电器插座(比如海尔、小米);二是怎么让乌萨奇看懂不同电器的操作面板(有的叫“启动”,有的叫“Start”);三是怎么让乌萨奇学会“大扫除”这种复杂的连招,而不是只会在地板上打滚。
这个故事,恰恰能帮你理清MCP、Function Call和Agent Skills三者之间的关系。
先说几个核心判断
MCP(Model Context Protocol,模型上下文协议)——由Anthropic提出的开放协议,旨在标准化AI如何接入外部数据(如Google Drive、GitHub、本地文件)。通俗点说,它就像家里的三孔插头/USB接口,规定了形状、电压,让电器和插座能接上。
Agent Skills——通常指AI智能体所具备的具体功能模块,包括调用API、执行代码、使用工具等。通俗点说,就像电器的具体功能:扫地机器人的“扫地”、空调的“制冷”。
Function Call——是通过特定格式的指令来调用某个具体函数的过程。它解决的是“怎么说”的问题。
一个装修房子的例子
假设你买了一台全自动管家(也就是AI Agent)。
Agent Skills(管家本身会的活儿)
这是管家大脑里自带的本领。比如管家会缝衣服、会做饭、会记账。但问题是,如果管家没见过你家的智能洗衣机,他空有一身“洗衣服”的本领,却不知道怎么启动那台机器——因为接口对不上。
MCP(万能转换头/协议)
这是你家装修时统一的一套标准插座。不管你买的是海尔的洗衣机,还是小米的灯泡,只要它们都支持MCP标准插头,管家只要把手插上去,就能瞬间“读取”这台机器的所有状态,并控制它。你不需要教管家“如何控制海尔”,也不用教他“如何控制小米”——插头一插,自动就能沟通了。
Function Call(说明书)
虽然管家的手插进了洗衣机的MCP插座(物理连通了),但管家还得知道洗衣机能听懂哪些指令。洗衣机的“说明书”上写着:“你想洗衣服,请喊start_wash(mode="快速", temperature=40)”“你想甩干,请喊spin_dry(speed=1200)”。这个“喊出特定格式指令”的过程,就是Function Call。
三者的关系可以用一句顺口溜来概括:
Skills是我想干活,MCP是我能摸到活,Function Call是我告诉活儿该怎么干。
深入理解MCP
MCP的出现,是为了打破“孤岛”。在没有MCP之前,如果你想让Claude读你的Notion,开发者得写一套代码;想让ChatGPT读,又得写一套。标准化的优势在于:只要你的数据库或工具支持MCP协议,任何支持该协议的AI客户端(如Claude Desktop、Cursor等)都能瞬间拥有读取该数据的能力。
MCP的内容包含三个核心要素:
- 资源(Resources)——应用控制。数据源,为AI提供上下文信息,由应用决定什么时候去加载。
- 提示词(Prompts)——用户控制。用户显式触发这些提示,比如用户说“请使用XXX MCP搜索网络数据”。
- 工具(Tools)——模型控制。比如可执行的函数,AI可以调用来执行操作。AI决定什么时候调用这些工具,比如需要查询数据库时,就会调用数据库查询工具。
MCP与Function Calling的关系
Function Calling,本质上是LLM自带的一项能力——把人类的自然语言,翻译成结构化的函数调用请求。LLM本身不执行函数,它只告诉你应该调用什么函数、参数是什么。
而MCP是运行在函数调用之上的协议层。MCP标准化了函数在哪里、怎么调用、怎么发现的问题。
两者的关系可以理解为:Function Calling是“翻译官”,MCP是“交通规则”。
MCP的传输协议
MCP支持两种主要的传输方式:
| 传输方式 | 适用场景 | 说明 |
|---|---|---|
| 「Stdio」 | 本地进程 | Server在本地机器运行,适合需要系统级访问的工具 |
| 「HTTP/SSE」 | 远程服务 | Server在远程运行,适合云服务(GitHub、Sentry、Notion) |
常见的MCP服务
文件系统与版本控制
- Filesystem(官方实现):允许AI在本地受限目录下列出文件、读取内容、写入代码、搜索文本(支持
grep风格搜索)。它是Cursor和Claude Code的核心能力。 - Git:提供对本地仓库的深度访问,包括查看diff、检索提交日志、列出分支以及执行简单的Commit操作。
- GitHub:支持跨仓库搜索、管理Issue、审查Pull Request、读取远程文件内容,常用于自动化处理GitHub Workflow。
数据库与存储
- Postgres / MySQL / SQLite:允许AI查看表结构(Schema)、解释索引,并执行只读查询以分析数据。
- Neo4j / Redis:针对图形数据库和键值存储的专项连接器。
- Supabase:管理云端后端资源,操作数据库和存储。
云原生与容器
- Docker:管理本地容器、镜像、网络和数据卷。AI可以帮你查看日志或诊断容器启动失败的原因。
- Kubernetes:查看集群状态、Pod日志及配置,适合进行云原生开发排错。
- AWS / Azure / GCP:部分第三方服务器支持查询云资源状态(如S3存储桶、EC2实例等)。
浏览器自动化与监控
- Puppeteer / Playwright:允许AI启动浏览器、导航到页面、截图、点击元素并抓取动态生成的内容。
- Sentry:读取错误堆栈追踪(Stack Traces),让AI针对特定的生产环境报错进行代码修复。
搜索与知识检索
- Fetch:即时将在线文档(如React/Next.js的最新API文档)转化为Markdown供AI学习。
- Exa / Ta vily:AI优化的搜索引擎,专门用于查找技术博客和最新的库版本信息。
- arXiv:检索最新的计算机科学论文,适合研究算法和前沿技术。
深入理解Agent Skills
Skills是模块化的能力扩展包,让AI Agent从“通用助手”变成“领域专家”。
可以把Skills理解为:
- 入职培训手册——告诉Agent如何完成特定任务
- 工具箱——提供脚本、模板、参考资料
- 领域知识库——存储专业知识和最佳实践
有了Skills,就不用每次在让AI写代码时都强调一遍:“不要给我使用蓝紫色渐变!!!”
一个标准的Skill长这样:
my-skill/
├── SKILL.md # 必需:元数据 + 主要指令
├── reference.md # 可选:详细参考文档
├── examples.md # 可选:使用示例
├── scripts/
│ └── helper.py # 可选:可执行脚本
└── templates/
└── template.txt # 可选:模板文件
SKILL.md是核心,必须包含YAML格式的元数据:
---
name: code-review
description: >
Review code for bugs, security issues, and style violations.
Use when asked to review code, check for bugs, or audit PRs.
---
# Code Review Skill
## Instructions
When reviewing code, follow these steps:
1. First check for security vulnerabilities...
2. Then check for performance issues...
3. Finally check for code style...
关键字段:
name:Skill的唯一标识,小写字母+数字+连字符,最多64字符description:描述做什么、什么时候用,最多1024字符——description的质量直接决定Skill能不能被正确触发。
总结一下
核心要点概括
- MCP(接口标准):解决“怎么连”。它是万能插座,让AI能摸到外部的数据和工具。
- Skills(办事逻辑):解决“怎么做”。它是AI的一套复合绝招,包含思考步骤、参考文档和执行脚本。
- Function Call(沟通语法):解决“怎么说”。它是AI调用工具时必须遵守的特定代码格式(说明书)。
详细对比
| 维度 | MCP(连接器) | Agent Skills(技能包) | Function Call(指令) |
|---|---|---|---|
| 本质 | 通信协议(Protocol) | 功能封装(Package) | 动作触发(Action) |
| 层级 | 底层:基础设施层 | 高层:业务逻辑层 | 中层:解析转换层 |
| 组成部分 | Server, Client, Resources | SKILL.md, 脚本, 示例 |
函数名, 参数(JSON格式) |
| 装修类比 | 全屋通用插座。不管是哪家的电器,插上就能通电通信。 | 管家的专业技能(如“全屋深度保洁”)。包含一连串复杂的干活流程。 | 电器的使用说明书。必须按照特定的按键顺序才能启动机器。 |
| 你的感受 | 换个AI客户端(如从Claude换到Cursor),数据依然能通。 | 换个Agent框架,技能可能失效,因为每个框架的SKILL.md格式不同。 |
AI自动把你的话翻译成代码:clean(mode="deep")。 |
三者的“合力”过程
以“帮我订一张去北京的机票”为例:
- Skills(大脑发动):Agent识别到你的需求,启动了它的“出差助手Skill”。这个Skill里写着:先查票、再比价、最后下单。
- MCP(建立连接):Agent通过MCP协议连接到了你的“携程接口服务”和“个人行程日历”。
- Function Call(下达指令):Agent按照携程要求的格式,喊出一句:
search_flight(from="上海", to="北京")。
一句话总结:如果你想让AI更聪明、会处理复杂流程,你需要给它写Skills(也就是那个文件夹结构)。如果你想让AI能访问更多外部软件/数据,你需要给这些软件配上MCP。如果你在写代码定义AI怎么调用你的函数,你就是在处理Function Call。
