MCP与SKill

代码示例:一个简单的 MCP 服务器

from mcp.server.fastmcp import FastMCP

# 创建 MCP 服务器
mcp = FastMCP("我的工具服务")

# 定义一个工具:两数相加
@mcp.tool()
def add(a: int, b: int) -> int:
    """将两个数字相加"""
    return a + b

# 定义一个资源:个性化问候
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
    """获取个性化问候语"""
    return f"你好, {name}!"

# 启动服务器
mcp.run(transport="streamable-http")

代码示例:一个 SKILL.md 文件

---
name: 代码审查技能
description: 当用户要求"审查代码"、"检查这段代码"或提到"code review"时使用此技能
version: 0.1.0
---

## 代码审查流程

当审查代码时,请遵循以下步骤:

### 1. 安全性检查
- 检查是否存在 SQL 注入风险
- 检查是否有硬编码的敏感信息
- 验证输入是否经过适当处理

### 2. 代码质量
- 函数是否单一职责
- 变量命名是否清晰
- 是否有重复代码

### 3. 输出格式
使用以下模板输出审查结果:

**安全性**: ✅/⚠️/❌
**可维护性**: ✅/⚠️/❌
**建议**: [具体改进建议]

如果只有MCP,那么每次都需要自己手动使用context7提供的两个工具来获取最新文档,而如果写好skill文档,那么就可以自动执行获取你需要的最新文档的重复性任务。

创建一个配套的 Skill

我们可以创建一个 Skill 来规范这个流程:


```yaml
---
name: 智能文档查询
description: 当用户询问任何编程库的用法、API、最佳实践时使用此技能
version: 0.1.0
allowed-tools: [
  "mcp__context7__resolve-library-id",
  "mcp__context7__get-library-docs"
]
---

## 文档查询流程

当用户询问某个库的使用方法时:

### 步骤 1:解析库名
调用 `mcp__context7__resolve-library-id`
- 输入用户提到的库名
- 获取 Context7 兼容的 library ID

### 步骤 2:获取文档
调用 `mcp__context7__get-library-docs`
- 使用上一步获得的 library ID
- 如果用户有具体问题,设置 topic 参数聚焦相关内容

### 步骤 3:整理输出
按以下格式呈现结果:

**库名**: [名称] ([版本])
**官方来源**: [文档链接]

### 核心用法
[整理后的关键代码示例]

### 注意事项
[从文档中提取的重要提示]

总结

1. 核心定义与区别

特性

Model Context Protocol (MCP)

Agent Skill (智能体技能)

性质

通信协议/连接层。一套用于规定 Agent 如何与 Tool/服务之间交互的统一标准。

知识包装/逻辑层。一组组织化的指令、脚本和资源文件夹,用于赋予 Agent 特定领域的专业能力。

关注点

侧重于**“如何连接”**。解决不同工具接口不统一、代码重复开发的问题。

侧重于**“如何执行”**。侧重于传授复杂的程序化知识和组织上下文。

结构

服务器-客户端架构。包含 MCP Server(提供工具/资源)和 MCP Client(Agent)。

文件/文件夹架构。核心是一个包含 SKILL.md 的目录,可包含本地代码(Python/Bash)和文档。

机制

统一接口规范,支持 Tool、Resource 和 Prompt 三种服务类型。

渐进式披露 (Progressive Disclosure)。根据任务需要分层次加载信息,以节省上下文空间。

2. 优缺点对比

Model Context Protocol (MCP)

优点:

    ◦ 标准化: 消除不同厂商工具接口的差异,实现“一次开发,到处调用”。

    ◦ 解耦性: Server 与 Client 可以运行在不同环境,通过标准协议交互。

    ◦ 生态丰富: 允许 Agent 轻松集成日益增长的第三方工具生态系统。

缺点:

    ◦ 逻辑较薄: 它主要提供工具的“访问权”,而不一定包含如何使用这些工具完成复杂、多步骤任务的高级指令。

Agent Skill (智能体技能)

优点:

    ◦ 上下文效率: 通过“渐进式披露”,智能体只在需要时读取详细文件,支持绑定几乎无限量的背景知识。

    ◦ 确定性强: 允许内置 Python 脚本等代码,通过确定性执行而非 Token 生成来处理排序、数据提取等任务。

    ◦ 可组合与移植: 像共享知识库一样分享智能体能力,将通用智能体快速转化为专业智能体。

缺点:

    ◦ 安全风险: 恶意的 Skill 可能包含危险脚本,引导 Agent 执行非预期操作,需要从信任源安装并进行审计。

3. 适用场景

MCP 适合:

    ◦ 跨平台工具调用: 需要访问 CRM 系统、数据库、Slack 或外部 API 服务时。

    ◦ 构建开放工具生态: 开发一套可以被多个不同 Agent 架构通用的工具集时。

Agent Skill 适合:

    ◦ 领域专业任务: 如“PDF 表单填写”,需要特定的操作规程和代码支持。

    ◦ 复杂工作流传承: 将人类的 SOP(标准作业程序)或复杂的代码编辑逻辑打包给 Agent。

    ◦ 本地环境操作: 配合 Claude Code 等工具执行本地文件系统任务和代码调试。

4. 相互结合使用

根据文档,Agent Skill 可以与 MCP 形成互补关系,构建更强大的系统:

能力互补: MCP 负责将 Agent 连接到外部软件和工具,而 Skill 负责教导 Agent 如何在复杂的工作流中使用这些工具

Skill 封装 MCP 调用: 开发者可以编写一个 Skill,其 SKILL.md 指令中包含调用特定 MCP Server 工具的逻辑。Skill 提供了“策略和方法”,而 MCP 提供了“执行路径”。

动态加载: Agent 可以根据任务,先通过 Skill 发现某种复杂操作的“秘籍”,然后通过 MCP 协议去调用外部服务器上的资源来完成该秘籍中的步骤。

比喻理解: MCP 就像是标准的电源插座和数据线接口,无论你插入什么设备(工具),只要符合规格就能通电联网;而 Agent Skill 则更像是一本专业的操作手册和配套的工具箱驱动,它告诉 Agent 如何利用现有的设备(通过 MCP 连接的工具)去完成一项精密的任务

Claude Skills与MCP的关系究竟是什么?_哔哩哔哩_bilibili

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐