所有文章
AIClaude

Claude Code Skills 和 MCP 区别:2026 实用对比,Hooks、插件什么时候用一次说清

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

Claude Code Skills 和 MCP 区别:插在墙上插座里的浅蓝色插头,电线上系着一张浅绿色说明卡

最近看到不少人给 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 Skills 和 MCP 区别对比表:Skill、MCP、Hook、插件分别是什么、怎么触发、适合做什么

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 返回输出
Claude Code Skills 和 MCP 区别之上下文开销:CLAUDE.md、Skills、MCP、子代理、Hooks 什么时候加载

从这张表能看出几件事:

  • 没用到的 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 区别:官方给的判断方法,什么情况加 Skill、MCP、Hook、子代理或插件

按 Claude Code Skills 和 MCP 区别来分,我自己的做法是:如果问题是 Claude 不了解你的工作方式,先写 Skill;只有 Claude 真的需要另一个系统里的实时数据或操作时才加 MCP,加之前先看看有没有现成的 CLI。CLAUDE.md 保持精简,官方建议控制在 200 行以内,参考资料挪到 Skills 里。

刚开始用的话,先看 Claude Code 安装教程;另一个影响每次请求花多少额度的设置是思考等级,见 Claude Code ultrathink 怎么用。

各自放在哪里

Claude Code Skills 和 MCP 区别之存放位置:SKILL.md 文件夹、~/.claude.json、.mcp.json 和 settings.json
内容位置或命令
个人 Skill~/.claude/skills//SKILL.md
项目 Skill.claude/skills//SKILL.md
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 哪个好这篇比较了该给谁付钱。

留下你的想法

你的邮箱不会公开。