第 9 章:扩展能力 — MCP、Plugin 与 Skill

⏱ 预计阅读 19 分钟 更新于 2026/5/16
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)

9.1 为什么需要扩展

Claude Code 的核心功能是代码分析和编辑,但实际开发中经常需要连接外部服务、自动化重复工作流、或集成第三方工具。Claude Code 通过三种扩展机制满足这些需求:

  • Claude Code 核心:代码理解、编辑、搜索、git 操作等基础能力
  • MCP (Model Context Protocol):连接外部服务(数据库、API、工具、文件系统等)
  • Plugin:打包的扩展集合,可包含 skills、MCP servers、hooks 等
  • Skill:自定义命令和工作流,封装常用的操作模式

扩展让 Claude Code 从代码编辑工具升级为完整的开发工作流平台。

9.2 MCP 概念

MCP (Model Context Protocol) 是 AI 工具连接外部服务的标准协议。它定义了一套统一的接口,让 Claude Code 可以访问各种外部资源。

关键概念

  • MCP Server:提供工具和数据的服务端程序
  • MCP Tool:Server 暴露的具体工具,可通过 Claude Code 调用
  • MCP Prompt:Server 提供的提示词,用于引导 AI 行为

常见 MCP Server

  • filesystem:文件操作(读取、写入、搜索、监控等)
  • github:GitHub 操作(issues、PR、仓库管理等)
  • memory:持久记忆(跨会话存储和检索信息)
  • web-reader:网页读取(抓取和解析网页内容)

MCP 工具命名规范

所有 MCP 工具在 Claude Code 中以 mcp__<server>__<tool> 格式命名,例如:

  • mcp__filesystem__read_file
  • mcp__github__list_pull_requests
  • mcp__memory__store_observation
  • mcp__web_reader__webReader

9.3 /mcp — 管理 MCP Server

语法

/mcp [subcommand]

功能说明

管理 MCP Server 的连接、配置和 OAuth 认证。

实际使用示例

/mcp

显示所有 MCP Server 的连接状态和配置信息。

添加新的 MCP Server 需要编辑配置文件:

// .claude/settings.json
{
  "mcpServers": {
    "my-database": {
      "command": "node",
      "args": ["/path/to/server.js"],
      "env": {
        "DATABASE_URL": "postgresql://..."
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "ghp_xxx"
      }
    }
  }
}

查看特定 server 的详细信息:

/mcp github

刷新 MCP Server 连接:

/mcp --refresh

注意事项/技巧

  1. OAuth 认证:某些 MCP Server(如 GitHub)需要 OAuth 认证,按提示完成授权流程
  2. 本地 Server:可以开发自己的 MCP Server,通过 command 字段指定启动命令
  3. 环境变量:敏感信息(如 API Token)通过 env 字段配置,不要硬编码在参数中
  4. MCP Prompts:Server 提供的提示词会以 /mcp__<server>__<prompt> 格式出现在命令列表中

9.4 /plugin — 管理插件

语法

/plugin [command] [plugin-name]

功能说明

安装、卸载、启用、禁用插件。插件是打包的扩展集合,可以包含以下组件:

  • Skills:自定义命令
  • MCP Servers:外部服务连接
  • Hooks:自动触发的工作流
  • Agents:专门的 AI 助手

实际使用示例

列出所有已安装的插件:

/plugin list

安装官方插件:

/plugin install @claude-code/plugin-github

启用插件:

/plugin enable github

禁用插件:

/plugin disable github

卸载插件:

/plugin uninstall github

搜索插件市场:

/plugin search testing

查看插件详情:

/plugin info @claude-code/plugin-github

注意事项/技巧

  1. 插件命名空间:官方插件以 @claude-code/plugin- 前缀开头
  2. 依赖管理:插件可能依赖其他插件或 MCP Server,安装时注意提示
  3. 权限控制:插件可能请求额外的 Bash 或文件权限,安装前确认安全
  4. 插件市场:探索 https://github.com/topics/claude-code-plugin 发现社区插件

9.5 /skills — 列出可用技能

语法

/skills

功能说明

交互式浏览和管理所有可用的 skills,包括内置 skills、自定义 skills 和插件提供的 skills。

实际使用示例

启动技能管理器:

/skills

在交互界面中:

  • ↑/↓ 选择 skill
  • t 按指令令计数排序
  • Space 隐藏/显示 skill(不会删除,只是在列表中隐藏)
  • Enter 保存设置并退出
  • q 退出不保存

显示特定技能的详细信息:

/skills --detail brainstorming

按名称过滤技能:

/skills --filter git

注意事项/技巧

  1. 技能来源:skills 来自三个地方:
    • 内置技能(如 /brainstorming/review
    • 项目级自定义技能(.claude/skills/
    • 个人级自定义技能(~/.claude/skills/
    • 插件提供的技能
  2. 指令令计数t 排序有助于识别哪些技能可能消耗较多指令令
  3. 隐藏功能:隐藏的 skill 仍然可以被直接调用(如 /hidden-skill),只是在 /skills 列表中不显示
  4. 热更新:修改 SKILL.md 后,不需要重启 Claude Code,下次调用时会自动重新加载

9.6 创建自定义 Skill

基本结构

自定义 Skill 是一个包含 SKILL.md 文件的目录,可以放在:

  • 项目级.claude/skills/<skill-name>/SKILL.md(仅当前项目可用)
  • 个人级~/.claude/skills/<skill-name>/SKILL.md(所有项目可用)

SKILL.md 格式

SKILL.md 由两部分组成:

  1. YAML Frontmatter--- 之间的元数据)
  2. Markdown 说明内容(Claude 阅读的指令)

示例 SKILL.md

---
name: stats
description: 显示项目统计信息
disable-model-invocation: true
allowed-tools: ["Bash", "Read"]
context: fork
arguments:
  - name: format
    description: 输出格式(table/json)
    default: table
---

请显示以下项目统计信息:

当前文件数:`!find src -type f | wc -l`
总代码行数:`!find src -name "*.js" -o -name "*.ts" | xargs wc -l | tail -1`
测试覆盖率:`!npm test -- --coverage --json | grep total | head -1`

输出格式:$ARGUMENTS[0]

关键 Frontmatter 字段

  • name:Skill 的显示名称(如 stats,对应调用方式 /stats
  • description:Claude 用于决定何时自动调用的描述
  • disable-model-invocation: true:禁止 Claude 自动调用此 skill,必须显式调用
  • allowed-tools:预批准的工具列表,调用时不会询问权限(谨慎使用)
  • context: fork:在隔离的 subagent 中运行,不影响当前会话状态
  • arguments:定义可接受的参数,包括名称、描述、默认值

动态注入

使用 !command`` 语法在发送给 Claude 前执行 shell 命令,将输出注入到 prompt 中:

当前分支:`!git branch --show-current`
最新提交:`!git log -1 --oneline`

辅助文件

SKILL.md 所在目录可以包含其他辅助文件:

  • scripts/:可执行脚本
  • templates/:代码模板
  • examples/:示例文件

这些文件的路径可通过 ${CLAUDE_SKILL_DIR} 引用。

字符串替换

支持以下占位符:

  • $ARGUMENTS:所有参数(空格分隔)
  • $ARGUMENTS[N]:第 N 个参数(从 0 开始)
  • $N:同 $ARGUMENTS[N]
  • ${CLAUDE_SESSION_ID}:当前会话 ID
  • ${CLAUDE_SKILL_DIR}:Skill 所在目录路径

示例:

参数 0:$0
所有参数:$ARGUMENTS
Skill 目录:${CLAUDE_SKILL_DIR}

实际使用示例

  1. 创建项目级 skill:
mkdir -p .claude/skills/project-info
cat > .claude/skills/project-info/SKILL.md << 'EOF'
---
name: project-info
description: 显示项目基本信息
---

项目名称:my-pomodoro
当前分支:`!git branch --show-current`
最后更新:`!git log -1 --format="%ai"`
EOF
  1. 调用 skill:
/project-info
  1. 创建带参数的 skill:
---
name: grep
description: 在项目中搜索模式
arguments:
  - name: pattern
    description: 搜索模式
    required: true
  - name: file-type
    description: 文件类型(如 ts、js)
---

在所有 .$ARGUMENTS[1] 文件中搜索 "$0":
`!find src -name "*.$1" -exec grep -l "$0" {} \;`

调用方式:

/grep "useState" ts

注意事项/技巧

  1. 安全性:动态注入的 shell 命令会以当前用户权限执行,避免传入用户输入
  2. 性能:每个 !command`` 都会产生一次 shell 调用,大量使用会影响性能
  3. 调试:创建 skill 后,可以通过 cat .claude/skills/<name>/SKILL.md 查看内容
  4. 版本控制:项目级 skills 应提交到 git,个人级 skills 可同步到 dotfiles
  5. 描述准确性description 字段影响 Claude 的自动调用决策,应简洁准确

9.7 /reload-plugins — 热重载

语法

/reload-plugins

功能说明

重新加载所有活跃的插件,无需重启 Claude Code。

实际使用示例

/reload-plugins

输出示例:

Reloading plugins...
- @claude-code/plugin-github: OK (5 skills, 2 MCP servers)
- @claude-code/plugin-memory: OK (3 skills, 1 MCP server)
- my-custom-plugin: OK (1 skill)
Total: 9 skills, 3 MCP servers

注意事项/技巧

  1. 开发调试:开发插件时频繁使用此命令测试更改
  2. 错误报告:如果插件加载失败,会显示具体错误信息
  3. 不影响会话:重载不会中断当前的对话或已打开的文件
  4. MCP 重连:MCP servers 也会重新连接,可能需要重新认证

9.8 /claude-api — API 参考

语法

/claude-api [command] [language]

功能说明

为当前项目的编程语言加载 Claude API 的参考文档,包括最新 API 使用方法、最佳实践和代码示例。

实际使用示例

为 Python 项目加载 API 参考:

/claude-api python

为 TypeScript 项目加载:

/claude-api typescript

升级旧版 API 代码:

/claude-api migrate

自动检测项目语言并加载:

/claude-api

支持的语言

  • Python (anthropic 包)
  • TypeScript/JavaScript (@anthropic-ai/sdk 包)
  • Java (anthropic-java 包)
  • Go (github.com/anthropics/anthropic-sdk-go 包)
  • 其他语言

注意事项/技巧

  1. 自动检测:如果不指定语言,会根据 package.jsonrequirements.txt 等文件自动检测
  2. 迁移功能migrate 命令可以自动更新旧版 API 代码到最新版本
  3. 缓存优化:文档会被缓存,第二次加载会更快
  4. 离线使用:首次加载后可以离线使用(依赖本地缓存)

9.9 动手做:扩展番茄钟

通过实践学习如何使用 MCP 和自定义 Skill 扩展番茄钟项目。

步骤 1:添加 web-reader MCP Server

首先添加 web-reader MCP Server,让 Claude Code 可以读取网页内容。

编辑 .claude/settings.json

{
  "mcpServers": {
    "web-reader": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-web-reader"]
    }
  }
}

验证 MCP Server 是否加载成功:

/mcp

步骤 2:获取 UI 设计灵感

现在让 Claude 通过 MCP 读取网页,获取番茄钟应用的 UI 设计灵感:

使用 web-reader MCP 工具读取番茄计时器设计的最佳实践网页,为我的项目提供 UI 优化建议。

Claude 会调用 mcp__web_reader__webReader 工具获取网页内容,然后提供建议。

步骤 3:创建自定义 Skill /pomodoro-stats

创建一个 skill 来统计今日完成的番茄数。

首先创建目录和文件:

mkdir -p .claude/skills/pomodoro-stats

编写 SKILL.md:

---
name: pomodoro-stats
description: 显示今日番茄钟统计
disable-model-invocation: true
---

今日番茄钟统计

当前数据:
`!cat src/data/stats.json`

基于以上数据,请显示:
1. 今日完成的番茄数
2. 本周完成的番茄数
3. 平均专注时长
4. 休息时间占比

创建示例数据文件:

{
  "today": 8,
  "thisWeek": 42,
  "averageFocusMinutes": 25,
  "breakPercentage": 15
}

步骤 4:确认新 Skill

使用 /skills 命令查看新 skill 是否出现在列表中:

/skills

在列表中找到 pomodoro-stats,确认它的 disable-model-invocation 状态正确。

步骤 5:测试 Skill

调用新创建的 skill:

/pomodoro-stats

预期输出:

今日番茄钟统计

当前数据:
{
  "today": 8,
  "thisWeek": 42,
  "averageFocusMinutes": 25,
  "breakPercentage": 15
}

基于以上数据,请显示:
1. 今日完成的番茄数:8
2. 本周完成的番茄数:42
3. 平均专注时长:25 分钟
4. 休息时间占比:15%

进阶练习

尝试创建更复杂的 skill:

  1. /pomodoro-report:生成周报,发送到指定邮件
  2. /pomodoro-reset:重置今日统计数据
  3. /pomodoro-analyze:分析效率趋势,生成图表建议

提示

  • 使用 !command`` 动态注入时,确保命令输出格式稳定
  • skill 中使用 ${CLAUDE_SKILL_DIR} 可以引用辅助脚本
  • 测试 skill 时,可以先手动执行 shell 命令确认输出正确

本章小结

Claude Code 的扩展能力是其强大之处:

  1. MCP 通过标准化协议连接外部服务,让 Claude Code 访问数据库、API、文件系统等资源
  2. Plugin 是打包的扩展集合,方便分享和安装,包含 skills、MCP servers、hooks 等组件
  3. Skill 是自定义命令和工作流,封装常用操作,提高开发效率
  4. 创建自定义 skill 时,合理使用 frontmatter 字段控制行为,用动态注入获取实时数据
  5. /reload-plugins/skills 命令帮助管理和调试扩展

通过扩展,Claude Code 可以适应各种开发场景,从简单的代码编辑到复杂的自动化工作流。下一章将学习高级主题,如性能优化、故障排查等。