Day2 : Skill 与 MCP 详解

9 阅读6分钟

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.jsonMCP 配置块

   所有项目都能用

  


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 工具更新状态。它们是互补的。"