引言
在上一篇文章中,我们学习了如何配置和启动 Claude Code。
这次我们来聊一个更「进阶」的话题:如何让 Claude Code 具备程序本体以外的拓展能力。
我在 My AI Notes | 我的 AI 学习笔记 这篇文章中介绍了 Agent,它可以用 MCP 和 Skill 获取 Agent 程序没有内置的能力。
这次我们将深入技术细节,通过实际操作来理解:
- 工作流是如何进化、演变的。
- MCP 和 Skill 是什么,它们有什么关联。
- 如何为 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 的交互,通常可以粗略理解成下面三步:
- Claude 先问:你这里有哪些能力?
- MCP Server 回答:我这里有 Tools、Resources、Prompts。
- Claude 再根据当前任务,决定要不要调用、调用哪个、以及怎么把返回结果整合进后续推理。
1 | Agent (Claude Code) ──[MCP 协议]──▶ MCP Server |
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 | "mcpServers": { |
其中,uvx 表示该 MCP 服务通过 uv 命令进行调用,args 是附加参数,env 则是启动这个 MCP Server 时注入的环境变量。
Windows 补充:如果某个 MCP Server 是通过
npx启动的,在 Windows 原生环境里通常要写成cmd /c npx ...,否则容易遇到 “Connection closed” 一类问题。本文示例使用的是uvx,因此没有这个限制。
例如让 MiniMax 搜索时,Claude Code 的交互流程如下:
1 | User: 联网查询当前国际金价 |
类似地,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。
原因大致有几个:
- 很多日常需求,核心问题并不是“怎么连外部服务”,而是“怎么把一套靠谱做法固定下来”。这类问题用 Skill 更顺手。
- Skill 的门槛更低。很多时候你只需要一个
SKILL.md,甚至不需要起一个常驻服务进程。 - Claude Code 将自定义斜杠命令合并到了 Skill 体系中,所以 Skill 已经不只是“补充能力”,而是扩展 Claude 的主通道之一。
- 新的插件体系,本质上也是在打包分发 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 | npx skills check 检查是否有可用的 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 | 请帮我做一个名叫 blog-proofread 的 Skill。 |
一般来说,skill-creator 会带着你走下面这条路:
- 确定需求:这个 Skill 到底解决什么问题,什么场景该触发。
- 设计结构:这件事只需要一个
SKILL.md,还是要配scripts/、references/、assets/。 - 确定目录骨架与
description(因为description是 Skill 触发效果的关键)。 - 根据使用体验继续打磨,逐步完善。