MCP Server vs Skills 全面对比指南
概述
在 AI Agent 生态系统中,MCP Server 和 Skills 是两种重要的能力扩展机制。它们都旨在增强 AI Agent 的功能边界,但在设计理念、实现方式和使用场景上存在显著差异。本文将从多个维度深入对比这两种技术方案。
🎯 一句话区分
| 概念 | 核心作用 | 解决的问题 |
|---|---|---|
| MCP(Model Context Protocol) | 解决”连接”问题 | 让 AI 能访问外部世界 |
| Agent Skill | 解决”方法论”问题 | 教 AI 怎么做某类任务 |
💡 形象比喻: - MCP 是 AI 的”手” —— 能触碰外部世界,连接各种系统和数据源 - Skill 是 AI 的”技能书” —— 知道怎么做某件事,包含专业知识和流程
核心结论:Skills 让 Agent 更像”专家”,MCP 让 Agent 有”插座”去连世界。
┌─────────────────────────────────────────────────────────────────────┐
│ AI Agent 能力扩展方案对比 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────┐ │
│ │ AI Agent (LLM) │ │
│ └─────────────┬───────────────────────┘ │
│ │ │
│ ┌────────────────┴────────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ MCP Server │ │ Skills │ │
│ │ (协议层) │ │ (功能层) │ │
│ ├───────────────┤ ├───────────────┤ │
│ │ • 标准化协议 │ │ • 预定义能力 │ │
│ │ • 独立进程 │ │ • 内置集成 │ │
│ │ • 动态连接 │ │ • 配置驱动 │ │
│ └───────────────┘ └───────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌───────────────┐ ┌───────────────┐ │
│ │ 外部服务/API │ │ 内部功能模块 │ │
│ │ 数据库/文件 │ │ 工具集合 │ │
│ └───────────────┘ └───────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
1. 基本概念
1.1 什么是 MCP Server?
MCP (Model Context Protocol) 是由 Anthropic 提出的一种开放标准协议,旨在统一 AI 模型与外部工具、数据源之间的交互方式。MCP Server 是实现该协议的服务端组件。
技术架构特点: - 基于 JSON-RPC 2.0 协议 - 采用 客户端-主机-服务器 三层架构 - 支持两种传输方式: - Stdio(标准输入输出)—— 本地进程通信 - HTTP/SSE(Server-Sent Events)—— 远程服务通信
┌─────────────────────────────────────────────────────────────────┐
│ MCP 架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ MCP Client │ │ MCP Server │ │
│ │ (客户端) │ │ (服务端) │ │
│ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │
│ │ JSON-RPC 2.0 协议 │ │
│ │◄──────────────────────────────────────►│ │
│ │ Stdio / HTTP SSE │ │
│ │ │ │
│ ┌──────▼──────┐ ┌──────▼──────┐ │
│ │ MCP Host │ │ 外部资源 │ │
│ │ (AI 应用) │ │ 数据库/API │ │
│ │ Claude │ │ 文件系统 │ │
│ │ Cursor IDE │ │ 第三方服务 │ │
│ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
MCP 的核心特性:
| 特性 | 描述 |
|---|---|
| 标准化协议 | 定义了统一的通信格式和交互规范 |
| 独立进程 | MCP Server 作为独立进程运行 |
| 动态发现 | 支持工具和资源的动态注册与发现 |
| 跨平台 | 可与任何支持 MCP 的 AI 应用集成 |
| 安全隔离 | 进程级别的隔离,增强安全性 |
1.2 什么是 Skills?
Skills(技能) 是 AI Agent 平台内置或可配置的功能模块,通常以插件或预定义能力的形式存在。Skills 直接集成在 Agent 框架内部,提供即开即用的功能。
┌─────────────────────────────────────────────────────────────────┐
│ Skills 架构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ AI Agent 平台 │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ LLM 核心 │ │ │
│ │ └─────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ┌──────────────┼──────────────┐ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │ Skill A │ │ Skill B │ │ Skill C │ │ │
│ │ │ 网络搜索 │ │ 代码执行 │ │ 文件操作 │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Skills 的核心特性:
| 特性 | 描述 |
|---|---|
| 内置集成 | 直接嵌入 Agent 框架,无需额外部署 |
| 配置驱动 | 通过配置文件或 UI 启用/禁用 |
| 预定义行为 | 功能边界明确,行为可预测 |
| 平台绑定 | 通常与特定 Agent 平台深度绑定 |
| 即开即用 | 开箱即用,学习成本低 |
2. 核心对比
2.1 架构对比
┌─────────────────────────────────────────────────────────────────────┐
│ 架构模式对比 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ MCP Server (分布式架构) Skills (集中式架构) │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────────────────────┐ │
│ │ Host A │ │ Server1 │ │ Agent 平台 │ │
│ └────┬────┘ └────┬────┘ │ ┌───┬───┬───┬───┐ │ │
│ │ │ │ │ S │ S │ S │ S │ │ │
│ │ MCP │ │ │ 1 │ 2 │ 3 │ 4 │ │ │
│ └──────────────┘ │ └───┴───┴───┴───┘ │ │
│ └─────────────────────────┘ │
│ ┌─────────┐ ┌─────────┐ │
│ │ Host B │ │ Server2 │ 特点: │
│ └────┬────┘ └────┬────┘ • 单体部署 │
│ │ │ • 进程内调用 │
│ └──────────────┘ • 紧耦合 │
│ │
│ 特点: │
│ • 微服务架构 │
│ • 跨进程通信 │
│ • 松耦合 │
│ │
└─────────────────────────────────────────────────────────────────────┘
2.2 详细对比表
| 维度 | MCP Server | Agent Skills |
|---|---|---|
| 核心关注点 | 连接与上下文:怎么把外部系统接给模型 | 程序性知识/SOP:怎么做更专业、更一致 |
| 解决的问题 | 工具/数据源接入碎片化、N×M 集成成本高 | prompt 难复用、流程不统一、输出不稳定 |
| 形态 | “协议+服务端”:标准化暴露 tools/resources/prompts | “技能包”:指令+脚本+资源,按需加载 |
| 最适合场景 | 多系统统一接入、跨客户端复用、平台化治理 | 固化流程、模板化产出、稳定写作/审查/分析 |
| 设计理念 | 开放协议,互操作性优先 | 平台集成,易用性优先 |
| 部署方式 | 独立进程/服务 | 内置模块/插件 |
| 通信方式 | JSON-RPC 2.0 over Stdio/HTTP SSE | 进程内函数调用 |
| 开发语言 | 多语言支持(Python、TypeScript、Go 等) | 通常限定于平台技术栈 |
| 可扩展性 | 高(独立扩展,不影响主应用) | 中(受平台架构限制) |
| 性能 | 有通信开销 | 性能较高(无 IPC 开销) |
| 隔离性 | 强(进程级隔离) | 弱(共享进程空间) |
| 版本管理 | 独立版本控制 | 随平台版本更新 |
| 调试复杂度 | 较高(涉及多进程) | 较低(单进程调试) |
| 社区生态 | 开放生态,可复用 | 平台特定生态 |
3. 功能对比
3.1 MCP Server 的三大核心原语
MCP 定义了三个核心原语(Primitives),分别对应不同的控制主体:
┌─────────────────────────────────────────────────────────────────┐
│ MCP Server 三大核心原语 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────┐ ┌────────────────┐ ┌────────────────┐ │
│ │ 🔧 Tools │ │ 📁 Resources │ │ 📝 Prompts │ │
│ │ (工具) │ │ (资源) │ │ (提示模板) │ │
│ │ 模型控制 │ │ 应用控制 │ │ 用户控制 │ │
│ ├────────────────┤ ├────────────────┤ ├────────────────┤ │
│ │ • 可执行函数 │ │ • 数据源 │ │ • 预定义模板 │ │
│ │ • AI 调用执行 │ │ • 上下文信息 │ │ • 结构化交互 │ │
│ │ • 返回执行结果 │ │ • 文件/URI │ │ • 引导式对话 │ │
│ └────────────────┘ └────────────────┘ └────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
| 原语 | 控制主体 | 描述 | 示例 |
|---|---|---|---|
| Tools | 模型控制 | 可执行的函数,AI 可以调用来执行操作 | 执行 SQL 查询、发送邮件、调用 API |
| Resources | 应用控制 | 数据源,为 AI 提供上下文信息 | 读取配置文件、访问数据库表、获取系统状态 |
| Prompts | 用户控制 | 预定义的提示模板,帮助结构化与 AI 的交互 | 代码审查模板、数据分析向导、文档生成器 |
3.2 Agent Skills 的组成结构
Agent Skill 是一个”技能包”,由以下三个核心部分组成:
┌─────────────────────────────────────────────────────────────────┐
│ Agent Skill 组成结构 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────────────────────────────────────────────────┐ │
│ │ 📦 Skill 技能包 │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ 📝 指令 │ │ ⚙️ 脚本 │ │ 📁 资源 │ │ │
│ │ │ (SKILL.md) │ │ (Scripts) │ │ (Resources) │ │ │
│ │ ├──────────────┤ ├──────────────┤ ├──────────────┤ │ │
│ │ │ • 任务描述 │ │ • 自动化流程 │ │ • 模板文件 │ │ │
│ │ │ • 执行步骤 │ │ • 处理逻辑 │ │ • 配置数据 │ │ │
│ │ │ • 最佳实践 │ │ • 工具调用 │ │ • 示例文档 │ │ │
│ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │
│ │ │ │
│ │ 特点:可被 Agent 动态发现并按需加载 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
3.3 Skills 的典型功能分类
┌─────────────────────────────────────────────────────────────────┐
│ Skills 功能分类 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 搜索技能 │ │ 编程技能 │ │ 数据技能 │ │
│ │ 🔍 │ │ 💻 │ │ 📊 │ │
│ ├─────────────┤ ├─────────────┤ ├─────────────┤ │
│ │ • 网页搜索 │ │ • 代码生成 │ │ • 数据分析 │ │
│ │ • 知识检索 │ │ • 代码执行 │ │ • 可视化 │ │
│ │ • 文档查询 │ │ • 调试辅助 │ │ • 报表生成 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 文件技能 │ │ 通信技能 │ │ 多媒体技能 │ │
│ │ 📂 │ │ ✉️ │ │ 🎨 │ │
│ ├─────────────┤ ├─────────────┤ ├─────────────┤ │
│ │ • 文件读写 │ │ • 邮件发送 │ │ • 图像生成 │ │
│ │ • 目录管理 │ │ • 消息推送 │ │ • 语音合成 │ │
│ │ • 格式转换 │ │ • API 调用 │ │ • 视频处理 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
4. 使用方式对比
4.1 MCP Server 使用流程
# 1. 安装 MCP Server SDK
# pip install mcp
# 2. 定义 MCP Server
from mcp.server import Server
from mcp.types import Tool, TextContent
server = Server("my-mcp-server")
# 3. 注册工具
@server.tool("search_database")
async def search_database(query: str) -> str:
"""搜索数据库"""
# 执行数据库查询
results = await db.query(query)
return TextContent(text=str(results))
# 4. 启动服务
if __name__ == "__main__":
server.run()