02: Dive into Skill and MCP | 深入理解 Skill 与 MCP
Astralyn

引言

在上一篇文章中,我们学习了如何配置和启动 Claude Code。

这次我们来聊一个更「进阶」的话题:如何让 Claude Code 具备程序本体以外的拓展能力

我在 My AI Notes | 我的 AI 学习笔记 这篇文章中介绍了 Agent,它可以用 MCPSkill 获取 Agent 程序没有内置的能力。

这次我们将深入技术细节,通过实际操作来理解:

  1. 工作流是如何进化、演变的。
  2. MCP 和 Skill 是什么,它们有什么关联。
  3. 如何为 Claude Code 安装、配置它们。

Chapter 1:工作流的演进

演进概览

阶段 名称 核心方式 灵活性 稳定性 典型代表
Stage 1 LangChain 代码编排 最低 最高 LangChain
Stage 2 Workflow 低代码拖拽 较低 较高 Coze、Dify
Stage 3 Skill 预验证的 SKILL.md + 工具 较高 较高 Agent Skills
Stage 4 Agent LLM 自主规划 + 编码 最高 较低 Claude Code、Open Code、Qoder

Stage 1:LangChain(纯代码编排)

想象一个学生请假流程:必须先找辅导员审批,再到教务处盖章。这个流程和格式是固定的。

用LangChain的方式,就是把这个流程写成一段死程序。

优点是极其稳定,每次执行都一模一样;缺点是流程一旦固定,很难修改,灵活性为零。

Stage 2:Workflow(低代码拖拽)

为了降低门槛,类似 Scratch 的可视化 Workflow 工具应运而生:它把程序逻辑封装成可拖拽的积木,无需编写代码即可搭建流程。

本质上,它还是在构建一个固定流程,但降低了搭建门槛。不过灵活性依然受限,因为你只能使用平台提供的积木。

Stage 3:Skill(预验证技能)

相比之下,Skill 更加灵活。

我们不再规定 AI “先做什么后做什么”,而是给它一个装满了“工具箱”的仓库。每个箱子(Skill)都贴了标签(Skill.md),比如“PDF处理专家”、“Word转图片专家”,里面装着经过反复测试、稳定可靠的工具和一份详细说明书。

当 AI 接到任务“把这个合同PDF转成图片”时,它会查看仓库标签,发现“PDF处理专家”这个箱子最合适,于是调用它来执行。这种方式既保证了执行结果的稳定(工具是预验证的),又给了AI选择使用哪个工具的灵活性。

Stage 4:Agent(LLM 自主规划)

Agent阶段将灵活性推到了极致。

我们不再给 AI 准备现成工具,而是给它一个可以现场编写和运行代码的沙箱环境——AI 需要根据任务自行”造工具”。

AI需要自己思考:“要完成这个任务,我需要编写一个什么样的新工具?”

例如,遇到一个从未见过的图片格式,AI可能会现场编写一段Python脚本去解析它。这赋予了AI极大的创造力,但也带来了不确定性——现场编写的代码可能出错,导致任务失败。这是用稳定性换取的极致灵活。


Chapter 2:MCP 与 Skill

MCP:模型上下文协议

Model Context Protocol(模型上下文协议)。它解决的核心问题,不是“AI 应该怎么做事”,而是“AI 怎样接上外部世界”。

你可以把 MCP 理解成 AI 世界里的“统一插座标准”。

在没有 MCP 之前,如果 Agent 想访问搜索引擎、数据库、GitHub、Figma、本地软件,开发者往往都要各写一套适配代码。今天接这个接口,明天接那个接口,接法五花八门,维护起来也很痛苦。

MCP 做的事情,就是把“外部能力怎么接进来”这件事标准化:只要某个外部能力被实现成一个符合 MCP 标准的 Server,Claude Code 就能用统一方式去发现它、调用它、读取它提供的数据。

需要注意的是,MCP Server 暴露的不只是“工具”:

  • Tools:可执行动作,比如搜索网页、查询数据库、创建工单
  • Resources:可读取资源,比如文档、设计稿、数据库结构
  • Prompts:服务器提供的提示模板,在 Claude Code 中甚至可以直接变成斜杠命令

所以,MCP 更像一层“能力接入标准”,而不只是某个单独的搜索插件。

MCP 工作原理

Claude Code 和 MCP Server 的交互,通常可以粗略理解成下面三步:

  1. Claude 先问:你这里有哪些能力?
  2. MCP Server 回答:我这里有 Tools、Resources、Prompts。
  3. Claude 再根据当前任务,决定要不要调用、调用哪个、以及怎么把返回结果整合进后续推理。
1
2
3
4
Agent (Claude Code) ──[MCP 协议]──▶ MCP Server
├── Tools
├── Resources
└── Prompts

MCP 演示

⚠️ 前置要求:部分 MCP 服务(比如我用来演示的 MiniMax MCP)通过 uvx 命令调用,因此需要先安装 uv。

安装 uv 的方法非常简单,在 PowerShell 中执行以下命令即可:

1
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

在 Claude Code 里,更推荐使用 claude mcp add 来安装 MCP,而不是手动编辑 JSON。

下面以 MiniMax MCP 为例,给它添加一个 user scope 的配置。这样配置好之后,你在所有项目里都能直接使用它:

1
claude mcp add MiniMax --scope user --env MINIMAX_API_KEY=Your_MiniMax_API_Key --env MINIMAX_API_HOST=https://api.minimaxi.com -- uvx minimax-coding-plan-mcp -y

如果你改成 --scope project,Claude Code 则会把配置写进项目根目录的 .mcp.json,适合团队共享;默认的 local scope 则更适合只在当前项目里自己使用。

对应的配置结构大致如下,存放在 ~/.claude.json 或项目根 .mcp.json 中:

1
2
3
4
5
6
7
8
9
10
11
12
13
"mcpServers": {
"MiniMax": {
"command": "uvx",
"args": [
"minimax-coding-plan-mcp",
"-y"
],
"env": {
"MINIMAX_API_KEY": "Your MiniMax API Key",
"MINIMAX_API_HOST": "https://api.minimaxi.com"
}
}
}

其中,uvx 表示该 MCP 服务通过 uv 命令进行调用,args 是附加参数,env 则是启动这个 MCP Server 时注入的环境变量。

Windows 补充:如果某个 MCP Server 是通过 npx 启动的,在 Windows 原生环境里通常要写成 cmd /c npx ...,否则容易遇到 “Connection closed” 一类问题。本文示例使用的是 uvx,因此没有这个限制。

例如让 MiniMax 搜索时,Claude Code 的交互流程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
User: 联网查询当前国际金价

∴ Thinking…

用户想要查询当前国际金价。这是一个实时信息查询任务,我需要使用搜索工具来获取当前的金价信息。
───────────────────────────────────────────────────────────────────────────────────────────────────────
Tool use

MiniMax - web_search(query: "国际金价 今日价格 2026年3月") (MCP)

You MUST use this tool whenever you need to search for real-time or external information on the web.…

Do you want to proceed?
> 1. Yes
2. Yes, and do not ask again for MiniMax - web_search commands in C:\Users\Username\Documents\Temp
3. No

● MiniMax - web_search (MCP)(query: "国际金价 今日价格 2026年3月")
⎿  {
"type": "text",
"text": "查询到的内容",
"annotations": null,
"_meta": null
}

∴ Thinking…

我已经获取了当前国际金价的最新信息。让我整理一下今天(2026年3月2日)的金价数据:

1. 国际金价(伦敦金):约5279-5375美元/盎司
2. 国际金价(人民币/克):约1180-1192元/克
3. 国内黄金T+D:约1191.58元/克
4. COMEX黄金:约5380.7美元/盎司

让我给用户提供一个清晰的回答。

● 根据今日(2026年3月2日)的搜索结果,以下是当前国际金价信息:

"AI 根据返回结果具体总结的内容"

类似地,understand_image MCP 也会经历相同流程:MCP 服务器理解图片后返回内容,AI 再根据获取到的信息重新组织并呈现给用户。


Skill:预验证技能

如果说 MCP 解决的是“能力怎么接进来”,那 Skill 解决的就是“接进来之后,该怎么更稳地使用它”。

你可以把 Skill 想成给 Claude 的一份“操作说明书”。

它不是把某个外部服务接进来,而是把一套已经验证过、可反复复用的方法,整理成 Claude 更容易理解和执行的形式。

比如“处理 PDF”这件事,Claude 本来就可能自己摸索着去做;但如果你把“优先用哪个库、步骤怎么走、哪些坑要避开、什么情况下该读哪个参考文件”都写进一个 Skill,它执行起来通常就会更稳。

Skill 的核心结构:SKILL.md

每个 Skill 至少都要有一个 SKILL.md。但真正重要的,不是这个文件名本身,而是它在 Claude 的加载链路里扮演的角色:

层级 什么时候加载 作用
description 平时就会被 Claude 看到 告诉 Claude“我这个 Skill 是干什么的,什么时候该用我”
SKILL.md 正文 这个 Skill 真正被触发时 给 Claude 具体工作流、规则、注意事项
辅助文件 只有需要时才加载或执行 提供脚本、模板、示例、参考资料

这里最关键的,其实是 frontmatter 里的 description:Claude 会主要靠它来判断“这件事要不要调用这个 Skill”。如果你希望它只能手动触发,也可以加上 disable-model-invocation: true,把它变成一个更偏命令式的 Skill。

Skill 的重要特性:渐进式披露 (Progressive Disclosure)

这也是 Skill 最核心的设计哲学之一。

在平常对话里,Claude 不需要把所有 Skill 的完整正文都塞进上下文里,它通常只先看到每个 Skill 的简短描述;只有在真正需要某个 Skill 时,才把这个 Skill 的正文和相关辅助文件按需加载进来。

这样做的好处很直接:既让 Claude 知道“自己拥有哪些能力”,又不会一上来就把上下文塞爆。

Skill vs MCP:有什么关系?

维度 Skill MCP
本质 给 Claude 的使用说明书 / 工作流封装 Agent 连接外部能力的标准协议
典型组成 SKILL.md + 脚本 / 模板 / 辅助文件 MCP Server + Tools / Resources / Prompts
关键关系 Skill 可以教 Claude 何时调用某个 MCP MCP 可以作为 Skill 的底层能力来源

💡 一句话总结:MCP 负责接线,Skill 负责教用法。

更准确地说,不是“MCP 就是 Skill”,而是你完全可以写一个 Skill,专门告诉 Claude:遇到什么任务时,优先调用哪个 MCP。

比如图片理解服务本身可以作为一个 MCP Server 存在;而你再写一个 Skill,告诉 Claude 在“读图、OCR、图表理解”这些场景下优先调用它,这样执行就会更稳。

为什么现在 Skill 比 MCP 更流行?

现在,至少我自己的感受是:MCP 并不是没用了,而是越来越像“幕后基础设施”;真正走到台前的,反而是 Skill

原因大致有几个:

  1. 很多日常需求,核心问题并不是“怎么连外部服务”,而是“怎么把一套靠谱做法固定下来”。这类问题用 Skill 更顺手。
  2. Skill 的门槛更低。很多时候你只需要一个 SKILL.md,甚至不需要起一个常驻服务进程。
  3. Claude Code 将自定义斜杠命令合并到了 Skill 体系中,所以 Skill 已经不只是“补充能力”,而是扩展 Claude 的主通道之一。
  4. 新的插件体系,本质上也是在打包分发 Skill、Agent、Hook、MCP Server。对大多数普通用户来说,平时最常接触到的,往往也是 Skill 这一层。

所以,更准确的说法不是“MCP 没落了”,而是:MCP 退到了幕后,Skill 走到了台前。

但只要任务真的需要连接数据库、调用搜索、访问第三方平台、接企业内部系统,MCP 依旧有用武之地。

安装 skill-creator

如果你想体验 Skill,我不太建议一上来就装一个“只能做单一任务”的 Skill。更适合作为入门例子的,其实是 skill-creator,因为它本身就是一个“帮助你创建和打磨 Skill 的 Skill”。

这里使用 Vercel 推出的 npx skills 这套生态,只要安装了 Node.js 就能使用:

1
npx skills add https://github.com/anthropics/skills --skill skill-creator

执行后,它会让你选择安装到哪个 Agent、作用域,以及安装方式;对于 Claude Code,我一般这样选:

  • Agent:选择 Universal + Claude Code
  • Installation scope:常用 Skill 选 Global,只给当前项目用就选 Project
  • Installation method:优先选 Symlink

推荐 Symlink 的原因也很简单:它通常只保留一份 Skill 本体,其他 Agent 文件夹只放快捷方式,更方便维护。

如果你只是想看看系统里现在已经装了哪些 Skill,可以输入:

1
npx skills list

如果后面想升级或删除,也可以参考以下命令:

1
2
3
4
5
npx skills check                检查是否有可用的 Skill 更新
npx skills update 将所有 Skill 更新到最新版

npx skills list 列出所有已安装的 Skill
npx skills remove <skill name> 删除指定的 Skill

不过根据我的经验,npx skills update失败率很高,建议npx skills check后手动执行npx skills add <repo> --skill <name>覆盖安装。

skill-creator 创建你自己的 Skill

装好之后,skill-creator 最有意思的地方就在这里:它不是一个“做某件具体业务”的 Skill,而是一个“教 Claude 帮你设计 Skill”的 meta-skill。

你完全可以直接对 Claude 说:

1
2
请帮我做一个名叫 blog-proofread 的 Skill。
它主要用来检查 Hexo / Markdown 文章里的标题层级、命令格式、图片路径和中英文空格。

一般来说,skill-creator 会带着你走下面这条路:

  1. 确定需求:这个 Skill 到底解决什么问题,什么场景该触发。
  2. 设计结构:这件事只需要一个 SKILL.md,还是要配 scripts/references/assets/
  3. 确定目录骨架与 description (因为 description 是 Skill 触发效果的关键)。
  4. 根据使用体验继续打磨,逐步完善。