Part III · 10

扩展性三件套:
MCP · Skills · Hooks

Claude Code 的核心是可扩展性——不是"我们做好一切",而是"我们提供框架,你扩它"。 4 月在三个方向都做了重要打磨。

🔌MCP

Model Context Protocol

把外部工具/服务接入 Claude 的开放协议。 你能让 Claude 操作你的数据库、Jira、内部 API、向量库——任何能写成 MCP server 的东西。

🧩Skills

可调用的能力包

预打包的工作流——比如 init 项目骨架、运行 security review、跑 ESLint 修复。 类似"宏 + 提示词模板"的组合。

🪝Hooks

事件钩子

在工具调用前/后、用户提交前、模型响应后等关键事件上挂自定义逻辑。 配置驱动、不写代码也能用。

这三者的关系:MCP 提供工具 → Skills 把工具组合成能力 → Hooks 在能力执行的关键节点插入控制。 下面三页各看一面。

10.1 · MCP

MCP · 4 月关键更新

v2.1.121alwaysLoad 配置选项

过去 MCP 工具是 lazy load——首次使用时延迟加载,可能几秒卡顿。 alwaysLoad: true 让指定 server 启动就加载,避免延迟。 代价:启动稍慢,但运行时无感。对生产可靠性敏感的工作流推荐

v2.1.117并发连接默认

本地 MCP server + claude.ai MCP server 现在并发连接。 老实现是串行——5 个 server 配下来启动等好几秒。 新实现:所有 server 同时握手,启动时间几乎只决定于最慢的那个。

v2.1.118Hooks 支持 MCP 工具调用

type: "mcp_tool" 让 hook 能拦截 MCP 工具调用—— 可以用来强制审批、记日志、改写参数、阻止特定操作。
典型用例:所有 production 数据库写操作必须二次确认。

v2.1.118OAuth 修复(关键)

修复一系列长期 OAuth 问题:① token 没 expires_in 时不再每小时重认证; ② 步进式授权能在已有 scope 时弹出新意图; ③ token 被撤销时自愈刷新;④ macOS 钥匙串竞态修了。 这些 4 月之前是社区抱怨的高频项。

v2.1.119RFC 9728 支持

MCP HTTP OAuth 现在符合 RFC 9728 (Protected Resource Metadata)—— 提升与外部系统对接的标准合规性。修复 OAuth 发现返回非 JSON 时连接失败。

v2.1.122/mcp 显示连接器隐藏关系

当手动添加的 server 与 claude.ai 内置连接器同名时, /mcp 现在能告诉你"哪个被覆盖了"——避免"为啥我配了没生效"的迷惑。

MCP 配置示例

~/.claude/mcp.json
{
  "servers": {
    "postgres": {
      "command": "mcp-postgres",
      "args": ["--readonly"],
      "alwaysLoad": true,    # 启动即加载
      "env": {
        "DATABASE_URL": "$PG_URL"
      }
    },
    "jira": {
      "command": "mcp-jira",
      "oauth": {
        "clientId": "...",
        "scope": ["read:jira-work"]
      },
      "headersHelper": "./jira-auth.sh"
    }
  }
}

配套 Hook 示例

~/.claude/hooks.json
{
  "PreToolUse": [{
    "matcher": {
      "type": "mcp_tool",
      "name": "postgres.execute_*"
    },
    "if": "environment == 'production'",
    "command": "./scripts/require-approval.sh"
  }]
}

↑ 生产环境下任何 postgres 写操作都先经过 approval 脚本。

10.2 · Skills

Skills · 让常用工作流"开箱即用"

Skills 是 Claude Code 的"小程序生态"——你或团队可以打包一个特定能力(含提示词、工具调用顺序、配置), 分发给整个项目使用。4 月围绕 Skills 做了几件事:

v2.1.111/skills 按 token 数排序

t 切换排序——让你看到哪些 skill 上下文成本高。 对本身就是 prompt 的 skill 来说,token 数是真实成本。

v2.1.121/skills 类型过滤搜索

新增搜索框,可按类型 / 关键词过滤——长 skill 列表不用滚到底。

v2.1.111新增 /less-permission-prompts

这是一个内置 skill——扫描你最近的会话,识别频繁出现的 read-only Bash / MCP 调用, 提议加到 allowlist 减少授权弹窗。是"减少摩擦"的体现

v2.1.111/powerup 系统

引入 /powerup——新用户的交互式 onboarding。 比 docs 更主动,让首次用户在几分钟内体验关键功能。

v2.1.111Skill 访问内置 slash 命令

Skills 现在能调用内置 slash 命令——意味着 skill 能用 /resume、/effort 等核心能力组合自己的工作流。

v2.1.120${CLAUDE_EFFORT} 变量

Skill 内可以引用当前努力级别——同一个 skill 在不同 effort 下行为不同(比如 low effort 跳过深度检查)。

一个 Skill 的样子

.claude/skills/setup-feature-flag.md
---
name: setup-feature-flag
description: Wire up a new GrowthBook flag
type: development
trigger: "add a feature flag"
---

You are setting up a feature flag in this codebase.

Steps:
1. Read .growthbook/flags.yaml to see existing flags
2. Add the new flag with $${KEY} as the user provided
3. Update server-side gate in src/flags/index.ts
4. Add a test in src/flags/index.test.ts
5. Open a PR draft

If $${CLAUDE_EFFORT} is xhigh, also:
- Add a kill-switch hook
- Document rollout plan
- Schedule a /loop check in 2 weeks

Skill 生态的设计哲学

① 团队 > 个人

Skills 默认放在 .claude/skills/——和代码一起 git commit, 团队成员自动同步。不是"装在我电脑上的 plugin",是"项目内的能力"。

② 文本 > 代码

Skill 是 markdown,不是 JS——任何团队成员都能读、能改、能 review。 技术门槛极低。

10.3 · Hooks

Hooks · 配置驱动的自动化

Hooks 让你在事件点插入自定义脚本——不写代码(指 JS / Python),只配 JSON。 4 月的 Hook 升级让它从"小修补"变成"可信赖的策略层"。

支持的事件点

UserPromptSubmit用户按回车前——可拦截/改写 prompt
PreToolUse工具调用前——可强制审批/改参数/拒绝
PostToolUse工具调用后——可改输出(v2.1.121 新)
SessionStart新会话开始
StopClaude 停止响应(写日志/触发后续)

条件 Hook (v2.1.118 新)

# if 字段使用权限规则语法过滤执行
{
  "PreToolUse": [{
    "matcher": {"type": "Bash"},
    "if": "command =~ '^rm -rf'",
    "command": "./scripts/double-confirm.sh"
  }]
}

PostToolUse 改写输出 (v2.1.121 新)

scripts/redact-secrets.sh
#!/bin/bash
# 接收 tool 的原始输出 from stdin
# 通过 hookSpecificOutput.updatedToolOutput 替换

INPUT=$(cat)
REDACTED=$(echo "$INPUT" | sed -E 's/sk-[A-Za-z0-9]+/[REDACTED]/g')

cat <<EOF
{
  "hookSpecificOutput": {
    "updatedToolOutput": "$REDACTED"
  }
}
EOF

↑ 在 Claude 看到工具输出之前自动 redact 密钥—— 是"对 prompt injection 防御"的具体落地。

真实使用场景

合规:所有 prod DB 写操作触发 ServiceNow 工单
成本:session 启动时检查月度 token 预算
安全:PostToolUse 自动 redact 密钥
追踪:Stop 事件写入团队 audit log
10.4 · 设计哲学映射

扩展性背后
的 "哲学声明"

Anthropic 把"扩展性"做得这么厚,本身就是哲学的体现: 不替用户决定什么是好工具,而是把控制权下放到用户手里

核心立场

"Claude Code 不假设它知道你的项目长什么样、你的合规要求是什么、你的预算上限有多少—— 所以它给你 MCP 接你的工具、给你 Skills 表达你的工作流、给你 Hooks 定义你的策略。"

MCP alwaysLoad / 并发 Helpful 消除摩擦——让"接外部工具"成本接近零。
OAuth 全链修复 Honest 承认 OAuth 的复杂性——做扎实而不是回避。
Skills · 团队级 markdown 用户自主 把"工作流"做成代码资产——团队拥有,团队改。
/less-permission-prompts 理解意图 主动观察用户重复行为,提议优化——是"理解"的进阶版。
Hooks 条件 if 字段 用户自主 策略可精确表达,不是"all or nothing"。
PostToolUse 改写输出 Harmless 用户能在 Claude 看到工具输出前 redact 敏感信息——防 prompt injection。

下一页:主题 / Vim / UI 改进——开发者每天都会感受到的体验提升。

Claude · April 2026 · MCP / Skills / Hooks
10 / 17