Skill 与 MCP 详解
一、Skill(技能)
一句话理解
Skill 就是预写好的 Prompt 模板,用 / 触发。相当于 SOP(标准操作流程)。
底层原理
你输入: /commit
系统做的事:
1. 找到 commit 这个 skill 的定义文件
2. 读取里面预写好的 prompt
3. 把这段 prompt 注入到当前对话中
4. Claude 按照这段 prompt 执行
等于你手动输入了一大段话,只是 skill 帮你省了打字
Skill 的定义格式
就是一个 Markdown 文件,带元数据:
---
name: commit
description: 提交代码变更
---
请按照以下步骤提交代码:
1. 运行 git status 查看改动
2. 运行 git diff 查看具体变更
3. 分析变更内容,生成简洁的 commit message
4. 执行 git add 和 git commit
...
本质就是一个"专家写好的指令",让 Claude 按照最佳实践执行。
Skill 的三个来源
1. 内置 Skill → Claude Code 自带的
/commit, /review-pr, /compact, /init 等
2. 插件 Skill → 插件提供的
superpowers 插件:
/superpowers:writing-plans → 写实施方案
/superpowers:executing-plans → 执行方案
/superpowers:brainstorming → 头脑风暴
/superpowers:test-driven-development → TDD 开发
/superpowers:systematic-debugging → 系统化调试
/superpowers:code-reviewer → 代码审查
3. 自定义 Skill → 你自己写的
放在 .claude/commands/ 目录下
自定义 Skill 示例
在 .claude/commands/deploy.md 创建文件:
---
name: deploy
description: 部署项目到生产环境
---
请按以下步骤部署:
1. 运行测试确保全部通过
2. 构建生产版本
3. 检查环境变量配置
4. 执行部署命令
5. 验证部署是否成功
然后输入 /deploy 就能触发。
Skill vs 直接打字
直接打字: "帮我提交代码"
→ Claude 按自己的理解执行,质量不稳定
用 Skill: /commit
→ Claude 按照预定义的最佳实践执行
→ 每次流程一致、质量稳定
二、MCP(Model Context Protocol)
一句话理解
MCP 是一个标准协议,让 Claude 能连接任何外部工具和数据源。
没有 MCP:Claude 只能用内置工具(Read、Edit、Bash...)
有了 MCP:Claude 可以连 Slack、GitHub、数据库、浏览器、任何 API
类比理解
USB 接口标准 = MCP 协议
U盘/键盘/鼠标 = 各种 MCP Server
电脑不用关心插进来的是什么设备,只要符合 USB 标准就能用
Claude 不用关心连的是什么服务,只要符合 MCP 协议就能用
工作原理
Claude Code (MCP Client)
│
├──── MCP 协议 ────→ Slack MCP Server
│ ├─ 工具: send_message
│ ├─ 工具: search_messages
│ └─ 工具: list_channels
│
├──── MCP 协议 ────→ Browser MCP Server
│ ├─ 工具: screenshot
│ ├─ 工具: click
│ └─ 工具: type
│
└──── MCP 协议 ────→ Database MCP Server
├─ 工具: query
└─ 工具: execute
MCP Server 向 Claude 暴露工具,Claude 像调用内置工具一样调用它们。
从 Claude 的视角
Claude 看到的是一个统一的工具列表,不区分来源:
可用工具:
Read ← 内置
Edit ← 内置
Bash ← 内置
screenshot ← 来自 computer-use MCP Server
left_click ← 来自 computer-use MCP Server
send_message ← 来自 Slack MCP Server
query_docs ← 来自 context7 MCP Server
Claude 不知道也不关心工具来自哪里,只知道"我有这些工具可以用"。
MCP Server 的两种通信方式
1. stdio(本地进程)
Claude Code 启动一个子进程,通过标准输入输出通信
适合:本地工具(文件操作、数据库等)
Claude ←→ [stdin/stdout] ←→ MCP Server 进程
2. HTTP/SSE(远程服务)
通过网络连接远程服务
适合:云服务(Slack、GitHub、远程 API)
Claude ←→ [HTTP请求] ←→ 远程 MCP Server
MCP 协议传输的内容
// Claude 发给 MCP Server 的(调用工具)
{
"method": "tools/call",
"params": {
"name": "screenshot",
"arguments": {}
}
}
// MCP Server 返回给 Claude 的(工具结果)
{
"content": [
{ "type": "image", "data": "base64..." }
]
}
就是 JSON 来回传。
MCP 配置方式
三个作用域:
1. 用户级别 → ~/.claude/settings.json 的 MCP 配置块
所有项目都能用
2. 项目级别 → .claude/.mcp.json
只在这个项目里用,可以提交到 git 共享给团队
3. 本地级别 → ~/.claude/.mcp.json
只在当前机器上生效
配置示例(.claude/.mcp.json):
{
"mcpServers": {
"zhongyi": {
"command": "node",
"args": ["./mcp-server/index.js"]
},
"slack": {
"command": "npx",
"args": ["-y", "@anthropic/slack-mcp-server"],
"env": { "SLACK_TOKEN": "xoxb-xxx" }
},
"remote-api": {
"type": "sse",
"url": "https://api.example.com/mcp"
}
}
}
自己写一个 MCP Server
以中医项目为例:
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
const server = new McpServer({ name: "zhongyi-server" });
// 注册工具:查体质
server.tool(
"getConstitution", // 工具名
"查询用户的中医体质类型", // 描述(给模型看)
{ userId: { type: "string" } }, // 参数定义
async ({ userId }) => { // 执行逻辑
const result = await db.query(
`SELECT * FROM constitution_assessment
WHERE user_id = $1
ORDER BY created_at DESC LIMIT 1`,
[userId]
);
return {
content: [{ type: "text", text: JSON.stringify(result) }]
};
}
);
// 注册工具:查经典文献
server.tool(
"searchClassics",
"搜索中医经典文献(黄帝内经、伤寒论等)",
{ query: { type: "string" } },
async ({ query }) => {
const results = await vectorSearch(query);
return {
content: [{ type: "text", text: JSON.stringify(results) }]
};
}
);
// 启动服务
server.start();
注册后 Claude Code 就能直接调用 getConstitution 和 searchClassics。
MCP 的高级功能
基础功能:
Tools → 暴露可调用的工具(最常用)
进阶功能:
Resources → 暴露可读取的资源(文件、数据)
Prompts → 暴露预定义的 Prompt 模板
Sampling → MCP Server 主动请求 LLM 生成内容
交互功能:
Elicitation → MCP Server 请求用户输入
Notification → MCP Server 推送消息给会话
OAuth → 动态 OAuth 认证流程
三、Skill vs MCP 对比
Skill = 告诉 Claude "怎么做"(一段预写好的指令)
MCP = 给 Claude "新能力"(连接外部工具和数据)
| | Skill | MCP |
|---|-------|-----|
| 本质 | Prompt 模板 | 工具/能力扩展 |
| 做什么 | 定义工作流程 | 提供新工具 |
| 类比 | 操作手册 | USB 外设 |
| 例子 | /commit 定义提交流程 | computer-use 提供截屏能力 |
| 谁执行 | Claude 按指令用已有工具执行 | MCP Server 执行,返回结果 |
| 创建方式 | 写一个 .md 文件 | 写一个 Server 程序 |
| 复杂度 | 低(写 Markdown) | 中(写代码) |
配合使用
Skill /deploy 定义部署流程:
1. 运行测试 ← 用内置 Bash 工具
2. 构建项目 ← 用内置 Bash 工具
3. 发 Slack 通知 ← 用 MCP 的 Slack 工具
4. 更新 Jira 状态 ← 用 MCP 的 Jira 工具
Skill 编排流程,MCP 提供能力,Claude 执行一切。
四、MCP 生态(常用 MCP Server)
官方/主流
| MCP Server | 功能 | 用途 |
|-----------|------|------|
| computer-use | 截屏、点击、打字 | 控制桌面应用 |
| slack | 发消息、搜索、管理频道 | Slack 自动化 |
| github | PR、Issue、代码搜索 | GitHub 操作 |
| postgres | 查询、执行 SQL | 数据库操作 |
| filesystem | 文件读写、目录操作 | 扩展文件能力 |
| brave-search | 网页搜索 | 联网搜索 |
| puppeteer | 浏览器自动化 | 网页爬取/测试 |
社区
| MCP Server | 功能 |
|-----------|------|
| notion | 操作 Notion 文档 |
| linear | 管理 Linear 任务 |
| figma | 读取 Figma 设计稿 |
| docker | 管理容器 |
| kubernetes | K8s 集群操作 |
你当前已配置的
computer-use → 控制你的 Mac(截屏、点击、打字)
pencil → 操作 .pen 设计文件
context7 → 查询技术框架文档
五、面试话术
关于 Skill
"Skill 本质是预定义的 Prompt 模板,用 / 命令触发。它把最佳实践固化成标准流程,保证每次执行的一致性。可以内置、插件提供或自定义。我在项目中会把常用的工作流封装成 Skill,比如部署、代码审查、发布流程。"
关于 MCP
"MCP 是 Anthropic 提出的标准协议,让 AI 模型能通过统一接口连接任何外部工具和数据源。类似 USB 标准——只要 Server 遵循 MCP 协议,Claude 就能直接调用它暴露的工具,不需要定制集成。MCP Server 通过 stdio 或 HTTP 两种方式与 Client 通信。"
关于两者关系
"Skill 定义流程,MCP 提供能力。比如一个部署 Skill 可能会编排使用内置的 Bash 工具跑测试、MCP 的 Slack 工具发通知、MCP 的 Jira 工具更新状态。它们是互补的。"