Claude Code Skills 和 MCP 区别:2026 实用对比,Hooks、插件什么时候用一次说清
Skill 教 Claude 怎么做事,MCP 让 Claude 连上外部服务。按 Anthropic 官方文档整理 Claude Code Skills 和 MCP 区别、Hooks 和插件的位置、谁更占上下文,以及什么情况用哪个。

最近看到不少人给 Claude Code 一口气装了五六个 MCP,结果会话变慢、额度掉得更快,其实很多需求写一个 Skill 就够了。Claude Code Skills 和 MCP 区别到底在哪?我把 Anthropic 官方文档翻了一遍,顺便把常被混在一起的 Hooks 和插件(Plugin)也理清楚。下面的内容都来自 Anthropic 的「Extend Claude Code」文档和它链接的页面,2026 年 10 月 27 日核对。
Claude Code Skills 和 MCP 区别:先说结论
Skill 是教 Claude 怎么做事,MCP 是让 Claude 连上外部的系统。官方原话是:「MCP connects Claude to external services. Skills extend what Claude knows, including how to use those services effectively.」意思是 MCP 负责连接外部服务,Skills 负责扩展 Claude 知道的东西,包括怎么把这些服务用好。
- Skill:一个叫
SKILL.md的 Markdown 文件,里面写说明、清单或参考资料。可以用/名字调用,也可以让 Claude 看描述自己判断什么时候加载。 - MCP 服务器:连到外部系统的接口,比如数据库、Slack、Notion、浏览器,给 Claude 多出一批可以调用的工具。
- Hook:Claude Code 在固定时机自动执行的脚本或请求,比如每次改完文件之后。
- 插件:把 Skills、Hooks、子代理和 MCP 服务器打包在一起,一次装好同一套配置。
所以两者不是二选一。Claude 要读你的数据库,用 MCP;Claude 总是按错误的方式写你那套表结构的查询,写一个 Skill。官方把「Skill + MCP」当成常见搭配:MCP 连数据库,Skill 写清楚表结构和查询习惯。

Claude Code 的 Skill 是什么
一个 Skill 就是一个文件夹,里面放一个 SKILL.md。文件开头是一小段 YAML,写 name 和 description,下面是正文说明。按 Skills 官方文档的说法,文件夹名(或者 name 字段)就是你要输入的命令,description 是 Claude 判断要不要加载它的依据。
放在哪里决定在哪里生效:
~/.claude/skills/:这台电脑上的所有项目都能用。/SKILL.md - 仓库里的
.claude/skills/:只在这个项目里生效,提交到仓库后团队成员也能用。/SKILL.md
有两点我觉得有用。一是以前的自定义命令照样能用:.claude/commands/deploy.md 和 .claude/skills/deploy/SKILL.md 都会生成 /deploy,用起来一样。二是 Claude Code 的 Skills 遵循 Agent Skills 开放标准,基本格式不只限于一个工具。
官方把 Skill 分成两类:参考型,比如 API 写法规范,整个会话里都会参考;动作型,比如 /deploy 部署清单,让 Claude 去执行某件具体的事。
MCP 在 Claude Code 里做什么
MCP 是 Model Context Protocol,官方定义是连接外部服务的协议,提供的是工具和数据访问。理解 Claude Code Skills 和 MCP 区别,关键就在这里:一个给知识,一个给工具。Claude Code 的 MCP 文档第一个例子就是加一个远程的 Notion 服务器:
claude mcp add --transport http notion https://mcp.notion.com/mcp
这条命令默认存成 local(本地)范围,只对当前项目、只对你自己生效,配置写在 ~/.claude.json。加上 --scope project,会写进项目根目录的 .mcp.json,可以提交给团队共用;--scope user 则让你所有项目都能用。
在 Claude Code 里输入 /mcp 可以看哪些服务器连上了。MCP 的好处是连接和登录都由服务器处理,Claude 直接拿到现成的工具,不用你从浏览器里复制数据再粘贴进来。官方给的加 MCP 的时机就是这个:你总在从 Claude 看不到的浏览器页面里复制数据。
Claude Code Skills 和 MCP 区别:谁更费额度
按月付费用 Claude 的话,这部分最值得看。加进来的每样东西都会占一点上下文,官方的 费用文档还提到,启用的插件会把名称和描述放进上下文,这些 token 算进你的用量。各功能的加载方式,文档是这么写的:
| 功能 | 加载什么 | 上下文开销(官方说法) |
|---|---|---|
| CLAUDE.md | 会话开始时加载全文 | 每次请求都有 |
| Skills | 开始时只加载描述,用到时加载全文 | 低(每次请求带描述) |
| MCP 服务器 | 开始时只加载工具名,完整定义用到才加载 | 没调用工具前很低 |
| 子代理 | 单独的新上下文 | 和主会话隔开 |
| Hooks | 不加载,在对话外运行 | 零,除非 hook 返回输出 |

从这张表能看出几件事:
- 没用到的 Skill 开销很小,上下文里只有它的描述。在 Skill 开头写上
disable-model-invocation: true,连描述也不放进去,只有你输入命令时才加载。 - MCP 的工具搜索(tool search)默认开着,闲置的 MCP 工具也不怎么占地方。真正费 token 的是工具一次返回很多数据。单个 MCP 工具结果超过 10,000 token 时 Claude Code 会警告,默认上限是 25,000 token,可以用
MAX_MCP_OUTPUT_TOKENS调整。 - 官方费用文档的建议是:有命令行工具时优先用
gh、aws、gcloud这类 CLI,因为它们比 MCP 服务器更省上下文;用不到的服务器关掉。 - Pro、Max、Team、Enterprise 用户输入
/usage,可以看到最近的用量里 Skills、子代理、插件和各个 MCP 服务器分别占多少。想升级套餐之前先看一眼这个。至于 Claude 的 5 小时和每周额度怎么算,我另外写过一篇。
想看自己会话里的实际数字,输入 /context all,会列出每个已加载的 MCP 工具占多少 token。
Hooks 和插件放在哪个位置
有件事必须每次都发生,就用 Hook。Skill 是 Claude 读了再照着做的说明,结果可能会有出入;Hook 在事件发生时直接触发,不需要 Claude 判断。官方举的例子是:在 Skill 里写「不要改 .env」只是请求,用 PreToolUse Hook 拦下这次修改才是强制。根据 Hooks 参考文档,Hook 写在 ~/.claude/settings.json(所有项目)或 .claude/settings.json(单个仓库)里。
插件不是第四种功能。插件文档的定义是:一个装着 Skills、代理、Hooks、MCP 服务器等组件的目录,作为一个整体安装,清单文件在 .claude-plugin/plugin.json。插件里的 Skill 会带命名空间,比如 /my-plugin:review,多个插件之间不会撞名。用 /plugin 浏览和安装。
装一堆插件之前要知道:启用的插件会进入每一个会话,不只是你用到它的那些。它带的 MCP 服务器会跟着每个会话一起运行,Hooks 也会一直触发。官方插件市场里的插件,在 /plugin 的 Marketplaces 标签下会显示 Context cost 估算;不想用了可以在 /plugin 里停用,或者在终端运行 claude plugin disable,不用卸载。想找值得装的,可以看我整理的 Claude Code Mods 推荐,自己动手写的话看 Claude Code 插件怎么写。
什么情况用哪个
官方列了一份「遇到什么情况就加什么」的清单,我整理成了表:
| 如果总是遇到 | 就加 |
|---|---|
| 每次开始任务都输入同一段提示词 | 一个用 /名字 调用的 Skill |
| 第三次把同一套流程粘贴进对话 | 一个 Skill |
| 总在从 Claude 看不到的浏览器页面复制数据 | 一个 MCP 服务器 |
| Claude 把同一个约定或命令弄错两次 | 在 CLAUDE.md 里加一行 |
| 想让某件事每次自动发生,不用开口 | 一个 Hook |
| 某个支线任务把对话刷满了用不上的输出 | 一个子代理 |
| 另一个仓库也要同一套配置 | 一个插件 |

按 Claude Code Skills 和 MCP 区别来分,我自己的做法是:如果问题是 Claude 不了解你的工作方式,先写 Skill;只有 Claude 真的需要另一个系统里的实时数据或操作时才加 MCP,加之前先看看有没有现成的 CLI。CLAUDE.md 保持精简,官方建议控制在 200 行以内,参考资料挪到 Skills 里。
刚开始用的话,先看 Claude Code 安装教程;另一个影响每次请求花多少额度的设置是思考等级,见 Claude Code ultrathink 怎么用。
各自放在哪里

| 内容 | 位置或命令 |
|---|---|
| 个人 Skill | ~/.claude/skills/ |
| 项目 Skill | .claude/skills/ |
| MCP 服务器,本地(默认) | claude mcp add,存在 ~/.claude.json |
| MCP 服务器,团队共用 | --scope project,存在 .mcp.json |
| Hooks | ~/.claude/settings.json 或 .claude/settings.json |
| 插件 | .claude-plugin/plugin.json,用 /plugin 安装 |
常见问题
Skill 和斜杠命令是一回事吗?
差不多。自定义命令已经并进了 Skills,.claude/commands/ 里的文件和 .claude/skills/ 里的 Skill 都会生成同样的 /命令。Skill 多了放附加文件的文件夹、控制谁能调用,以及自动加载。
Skill 能调用 MCP 吗?
能,而且这正是官方推荐的搭配。MCP 服务器给 Claude 工具,Skill 告诉它你们团队想怎么用这些工具,比如数据库表结构、Slack 消息格式。这也是 Claude Code Skills 和 MCP 区别里最容易被忽略的一点:两者经常一起用。
Skills 和 MCP 哪个让额度用得更快?
都会多出一些 token。没用到的 Skill 每次请求带上它的描述,没用到的 MCP 服务器带上工具名。更大的开销是运行时拉进来的内容。付费套餐用 /usage 能看到分布;在犹豫要不要升级的话,可以看 Claude Pro 和 Max 区别。
用 Skills 或 MCP 一定要装插件吗?
不用。插件文档写明,Skills、子代理、Hooks 和 MCP 服务器都可以单独使用。只有想分享或在多个项目复用一整套配置时,才值得打包成插件。
还在挑工具的话,Claude Code 和 Codex 哪个好这篇比较了该给谁付钱。