搞不懂 Claude Code、Skills、MCP、Plugin?这篇文章一次性讲清楚
1. 引言:为什么这些概念让人头大
很多刚接触 Claude Code 的朋友,都会被 Skills、MCP、Plugin 这几个词绕晕。它们听起来很像,似乎都在做「给 AI 加能力」这件事,但实际定位、使用方式和适用场景完全不同。这篇文章会用最直白的方式,把四个概念拆开讲清楚,并配上可运行的代码实战,帮你一次性建立清晰的心智模型。
先给出一张速览表,方便你快速建立整体印象:
| 概念 | 一句话定位 | 核心作用 | 典型场景 |
|---|---|---|---|
| Claude Code | 终端里的 AI 编程助手 | 理解、修改、调试代码 | 在命令行里让 AI 帮你写代码、改 Bug |
| Skills | 给 Claude 的「技能包」 | 注入领域知识和操作流程 | 让 Claude 学会写特定风格的代码、处理特定格式文件 |
| MCP | 连接外部世界的「万能插座」 | 让 Claude 读写外部系统数据 | 查询数据库、调用 GitHub API、操作浏览器 |
| Plugin | 可插拔的功能扩展 | 在 Claude Code 中启用第三方能力 | 安装社区插件,一键获得新功能 |
2. Claude Code:一切的起点
Claude Code 是 Anthropic 推出的 AI 编程助手,运行在终端里。它不是一个「插件」,也不是「技能」,而是承载所有能力的主程序。你可以把它理解成一个能听懂自然语言的命令行伙伴:你告诉它需求,它帮你读代码、改代码、跑测试、提交 Git。
安装和启动非常简单:
# 安装 Claude Code
npm install -g @anthropic-ai/claude-code
在项目目录中启动
cd my-project
claude
启动后,你会进入一个交互式终端界面。直接输入自然语言指令即可:
# 示例:让 Claude 帮你修复测试失败
claude "运行测试,看看哪里挂了,然后修复它"
Claude Code 的核心能力包括:
- 代码理解:读取整个项目结构,理解模块之间的依赖关系。
- 代码修改:直接编辑文件,生成 diff,你可以逐行审查。
- 命令执行:在终端里运行测试、构建、Git 操作等命令。
- 多文件协作:一次处理多个文件,完成跨模块的重构。
但 Claude Code 本身的能力是「通用」的。它不知道你公司的代码规范,也不知道你常用的数据库长什么样。这时候,就需要 Skills 和 MCP 来给它「开小灶」了。
3. Skills:给 Claude 注入「专业技能」
Skills 是 Claude Code 的「技能包」,本质是一组结构化的指令和知识文件。它解决的是「Claude 不知道怎么做某件事」的问题。比如,你想让 Claude 按照你们团队的规范写 Java 代码,或者让它学会解析某种内部配置文件,就可以把这些知识封装成一个 Skill。
一个 Skill 通常包含两部分:
- SKILL.md:描述这个技能是干什么的、什么时候该用、具体怎么操作。
- 参考文件:可选的示例代码、模板、规范文档等。
下面是一个实战示例。假设我们要创建一个「Java 代码规范检查」的 Skill:
# 创建 Skills 目录
mkdir -p .claude/skills/java-style-guide
cd .claude/skills/java-style-guide
然后创建 SKILL.md 文件:
---
name: java-style-guide
description: 检查 Java 代码是否符合团队规范,包括命名、注释、异常处理等。
---
Java 代码规范检查
当用户要求检查 Java 代码风格时,使用本技能。
检查要点
类名使用 UpperCamelCase,方法名和变量名使用 lowerCamelCase。
常量使用 UPPER_SNAKE_CASE。
所有 public 方法必须有 Javadoc 注释。
禁止捕获异常后静默吞掉,必须记录日志或重新抛出。
禁止使用魔法数字,必须定义为常量。
操作步骤
读取目标 Java 文件。
逐条对照上述检查要点。
输出问题列表,并给出修改建议。
创建好之后,在 Claude Code 中直接说「检查一下 UserService.java 的代码规范」,Claude 就会自动加载这个 Skill,按照里面的规则进行检查。你不需要每次重复说明规范,Skill 就是你的「团队规范记忆库」。
Skills 的典型特征:
- 静态知识:它不连接外部系统,只是给 Claude 提供「怎么做」的指导。
- 项目级共享:放在项目的
.claude/skills目录下,团队所有成员都能用。 - 轻量灵活:创建成本低,改一个 Markdown 文件就能更新技能。
4. MCP:连接外部世界的「万能插座」
如果说 Skills 解决的是「Claude 不知道怎么做」,那 MCP(Model Context Protocol)解决的就是「Claude 够不到外部数据」。MCP 是一个开放协议,它定义了一套标准接口,让 Claude 能通过「工具」读写外部系统的数据。
你可以把 MCP 理解成 USB-C 接口:只要外部系统实现了 MCP 协议,Claude 就能像插 U 盘一样,直接读取数据库、调用 API、操作文件系统。
下面是一个实战示例:通过 MCP 连接 GitHub,让 Claude 直接操作仓库。
首先,安装一个 GitHub MCP 服务器:
# 使用 npx 直接运行 GitHub MCP 服务器
npx @modelcontextprotocol/server-github
然后在 Claude Code 中配置 MCP 服务器。在项目根目录创建或编辑 .mcp.json:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "你的_GitHub_Token"
}
}
}
}
配置完成后,重启 Claude Code。现在你可以直接说:
# 让 Claude 列出你的 GitHub 仓库
claude "列出我 GitHub 上最近创建的 5 个仓库"
Claude 会通过 MCP 调用 GitHub API,把真实数据返回给你。你还可以让它创建 Issue、查看 PR、读取文件内容等。
再举一个数据库的例子。假设你想让 Claude 直接查询本地 SQLite 数据库:
# 安装 SQLite MCP 服务器
npx @modelcontextprotocol/server-sqlite
配置到 .mcp.json:
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["@modelcontextprotocol/server-sqlite", "你的数据库文件路径.db"]
}
}
}
然后你就可以直接问:
claude "查询 orders 表中最近 10 条订单,按金额降序排列"
MCP 的典型特征:
- 动态数据:它连接的是实时外部系统,返回的是真实数据。
- 开放生态:任何系统都可以实现 MCP 协议,社区已有大量现成服务器。
- 双向交互:Claude 不仅能读数据,还能通过工具写数据、触发操作。
5. Plugin:可插拔的功能扩展
Plugin(插件)是 Claude Code 生态中的「功能扩展包」。它和 Skills、MCP 的关系是:Plugin 是一个更上层的打包机制,可以把 Skills、MCP 配置、自定义命令等打包在一起,实现一键安装和分发。
你可以把 Plugin 理解成「应用商店里的 App」:别人把一组 Skills 和 MCP 配置打包好,你安装后就能立刻获得一组完整能力,不用自己一个个配置。
下面是一个实战示例:安装一个社区插件。
# 在 Claude Code 中安装插件
claude plugin install @some-org/awesome-plugin
安装完成后,插件会自动注册它包含的 Skills 和 MCP 服务器。你可以查看已安装的插件:
claude plugin list
一个 Plugin 的典型结构如下:
my-plugin/
├── plugin.json # 插件元数据,声明名称、版本、依赖
├── skills/ # 插件自带的 Skills
│ └── my-skill/
│ └── SKILL.md
├── mcp/ # 插件自带的 MCP 配置
│ └── mcp.json
└── commands/ # 自定义命令
└── my-command.md
Plugin 的典型特征:
- 打包分发:把多种能力打包成一个整体,方便分享和安装。
- 一键启用:安装后自动生效,不需要手动配置每个细节。
- 生态共享:社区插件可以快速扩展 Claude Code 的能力边界。
6. 四者关系:一张图看懂
现在我们可以把四个概念的关系梳理清楚了。Claude Code 是主程序,是「身体」;Skills 是「知识手册」,告诉 Claude 怎么做;MCP 是「数据管道」,让 Claude 能拿到外部数据;Plugin 是「打包盒」,把 Skills 和 MCP 组合成即插即用的功能包。
用一句话总结:
Claude Code 是运行平台,Skills 教它「怎么做」,MCP 帮它「拿数据」,Plugin 把前两者打包成「一键安装」的能力包。
下面用一个实际场景串起来。假设你是一个 Java 团队的技术负责人,你想让 Claude 帮你做代码审查:
- 你创建了一个 Java 代码规范 Skill,告诉 Claude 你们团队的编码规范。
- 你配置了一个 GitLab MCP 服务器,让 Claude 能读取 Merge Request 的代码。
- 你把这两者打包成一个 Code Review Plugin,分发给团队其他成员。
- 团队成员在 Claude Code 中安装这个 Plugin,然后直接说「审查这个 MR」,Claude 就会自动拉取代码、按规范检查、输出审查意见。
这就是四个概念协同工作的完整链路。
7. 实战:从零搭建一个完整示例
最后,我们用一个完整的实战项目,把 Skills、MCP、Plugin 全部串起来。假设我们要做一个「日志分析助手」,它能读取本地日志文件,分析错误,并生成报告。
第一步,创建项目结构:
mkdir log-analyzer
cd log-analyzer
mkdir -p .claude/skills/log-analyzer
mkdir -p .mcp
第二步,创建日志分析 Skill:
---
name: log-analyzer
description: 分析日志文件,提取错误信息,生成分析报告。
---
日志分析技能
当用户要求分析日志时,使用本技能。
分析步骤
读取日志文件内容。
提取所有 ERROR 级别的日志行。
按错误类型分组统计。
生成包含错误数量、类型分布、示例行的报告。
第三步,创建一个简单的文件读取 MCP 服务器。这里用 Node.js 写一个最小实现:
// mcp-server.js
const { Server } = require('@modelcontextprotocol/sdk');
const fs = require('fs');
const server = new Server({
name: 'log-reader',
version: '1.0.0',
});
server.setRequestHandler('tools/list', async () => ({
tools: [
{
name: 'read_log_file',
description: '读取日志文件内容',
inputSchema: {
type: 'object',
properties: {
path: { type: 'string', description: '日志文件路径' },
},
},
},
],
}));
server.setRequestHandler('tools/call', async (request) => {
if (request.params.name === 'read_log_file') {
const { path } = request.params.arguments;
const content = fs.readFileSync(path, 'utf-8');
return { content: [{ type: 'text', text: content }] };
}
throw new Error('未知工具');
});
server.listen(3000);
console.log('MCP server running on port 3000');
第四步,配置 MCP 服务器:
{
"mcpServers": {
"log-reader": {
"command": "node",
"args": ["mcp-server.js"]
}
}
}
第五步,把 Skill 和 MCP 配置打包成 Plugin。创建 plugin.json:
{
"name": "log-analyzer-plugin",
"version": "1.0.0",
"description": "日志分析助手,包含日志分析技能和文件读取 MCP",
"skills": [".claude/skills/log-analyzer"],
"mcp": [".mcp/mcp.json"]
}
第六步,在 Claude Code 中安装并测试:
# 安装本地插件
claude plugin install ./log-analyzer-plugin
测试:让 Claude 分析日志
claude "分析 app.log 文件,找出所有 ERROR 并生成报告"
Claude 会通过 MCP 读取日志文件,然后按照 Skill 里的步骤分析,最后输出一份结构化的错误报告。整个过程,你只需要说一句话。
8. 总结与选型建议
最后,给你一份选型建议,帮助你在实际项目中快速决策:
- 想让 Claude 学会某种做事方法:用 Skills,创建 Markdown 技能文件即可。
- 想让 Claude 连接外部数据或系统:用 MCP,配置对应的 MCP 服务器。
- 想分享一组完整能力给团队:用 Plugin,把 Skills 和 MCP 打包分发。
- 想日常写代码、改 Bug:直接用 Claude Code,它本身就足够强大。
这四个概念不是互相替代的关系,而是层层递进、协同工作的。Claude Code 是底座,Skills 提供知识,MCP 提供数据,Plugin 负责打包分发。理解了这个关系,你就能在合适的场景用合适的工具,让 Claude Code 真正成为你的超级开发助手。
更多推荐
所有评论(0)