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 真正成为你的超级开发助手。

更多推荐