序幕:乌萨奇的职场新挑战
想象一下,可爱又疯狂的 乌萨奇(Usagi)最近入职了一家高端家政公司,担任“全自动智能管家”。
为了让乌萨奇能完美打理你的家,工程师们面临了三个难题:
- 怎么让乌萨奇的手插进各种品牌的电器插座?(比如海尔、小米)
- 怎么让乌萨奇看懂不同电器的操作面板?(有的叫“启动”,有的叫“Start”)
- 怎么让乌萨奇学会“大扫除”这种复杂的连招,而不是只会在地板上打滚?
这就是最近面试官最爱问的:MCP、Function Call 和 Agent Skills 到底有什么区别?
简要概括:
- MCP (Model Context Protocol 模型上下文协议):由 Anthropic 提出的开放协议,旨在标准化 AI 如何接入外部数据(如 Google Drive、GitHub、本地文件)。 通俗点就像是家里的三孔插头/USB接口。它规定了形状、电压,让电器和插座能接上。
- Agent Skills:通常指 AI 智能体(Agent)所具备的具体功能模块,包括调用 API、执行代码、使用工具等。通俗点就像是电器的功能。比如扫地机器人的“扫地”、空调的“制冷”。
举个生活中的例子:装修房子
假设你买了一台全自动管家(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 等)都能瞬间拥有读取该数据的能力。
- 内容包含:
- 资源(Resources) - 应用控制:数据源,为 AI 提供上下文信息,资源由应用控制什么时候去加载。
- 提示词(Prompts)- 用户控制:用户显示触发这些提示,比如用户想要获取互联网上的信息,用户说:"请使用 XXX MCP 搜索网络数据"
- 工具(Tools)- 模型控制: 比如可执行的函数,AI 可以调用来执行操作,AI 决定什么时候调用这些工具,比如 AI 需要查询数据库,就会调用数据库查询工具
MCP 与 Function Calling 的关系
Function Calling 是 LLM 的能力,就是把自然语言转化成结构化的函数调用请求。LLM 本身不执行函数,只是告诉你应该调用什么函数,参数是什么
MCP 是运行在函数调用之上的协议层,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 / Tavily:AI 优化的搜索引擎,专门用于查找技术博客和最新的库版本信息。
- arXiv:检索最新的计算机科学论文,适合研究算法和前沿技术。
可以访问这个网站发现更多的 mcp 服务器mcp.so
深入理解 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 能不能被正确触发。
下面是 Claude Code 的 skills 文件夹
这是最火的前端 UI 设计 Skills- UX-UI-ProMax 的文件夹
总结一下
核心要点概括
- 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。