MCP(Model Context Protocol,模型上下文协议)和Skill(技能),这两个概念在AI Agent的讨论中经常被相提并论,但实际上它们源自完全不同的技术路线,所要解决的问题和所处的抽象层级也截然不同。今天,我们就来详细解析一下,从定义、来源、用途到它们之间的真实关系,彻底弄明白这两者的区别。

一、核心定义
| 概念 | 全称 | 定义 |
|---|---|---|
| MCP | Model Context Protocol | 一种标准化协议,专门用于让大语言模型与外部工具或服务进行结构化的通信——你可以将其理解为一种函数调用的通用接口规范 |
| Skill | — | 一种功能单元的抽象描述,代表了Agent能够执行的具体能力,例如“查询天气”、“发送邮件”,通常包含了工具、提示词和业务逻辑的组合 |
二、来源与生态
| MCP | Skill | |
|---|---|---|
| 提出方 | Modular(2024年开源) | Microsoft Semantic Kernel(2023年) |
| 定位 | 跨厂商的通信协议标准,类似于AI工具领域的gRPC | Agent能力的封装单元,是特定框架内的概念 |
| 目标 | 让任何大模型都能调用任何工具,无需为每个工具单独进行适配工作 | 在Semantic Kernel框架内,组织和管理可复用的功能模块 |
三、技术本质区别
MCP:协议层
- 定义了一套基于JSON-RPC风格的API规范
- 工具通过MCP Server来对外暴露其能力
- 大模型则通过MCP Client发起调用请求
- 与具体的模型、框架完全无关,具有高度通用性
graph LRA[LLM] -- MCP Request --> B[MCP Server]B -- 执行工具 --> C[Weather API]C -- MCP Response --> A
其优势显而易见:工具只需实现一次,所有支持MCP协议的大模型均可调用;社区也可以共享现成的MCP工具,例如mcp-server-browser、mcp-server-notion。
Skill:应用层
- 在Semantic Kernel框架中,Skill是一个目录或类:
EmailSkill/├── send_email.yaml # 函数定义└── send_email.py # 实现 - 技能绑定到Kernel后,大模型可以通过自然语言直接触发执行
- 它强烈依赖于Semantic Kernel框架
它的优势在于封装复杂的业务逻辑,例如一个“发送周报”的Skill,内部可以组合查询数据、生成摘要、发送邮件等多个步骤,并且支持上下文记忆与插件组合。
四、关系:MCP可以作为Skill的底层实现
尽管这两个概念处于不同层级,但它们完全可以协同工作。举个例子:
- 你在Semantic Kernel框架中定义一个
SearchSkill - 这个Skill内部不直接调用Google API,而是通过MCP协议去调用一个MCP Search Server
- 这样一来,搜索功能就变成了一个可替换、可共享的MCP服务
# Semantic Kernel 中的 Skill 可能这样调用 MCPclass SearchSkill:def search(self, query):# 通过 MCP Client 调用远程搜索服务return mcp_client.call("search", {"query": query})
五、对比总结表
| 维度 | MCP | Skill |
|---|---|---|
| 类型 | 通信协议 | 功能模块 |
| 作用范围 | 跨框架、跨模型 | 限于Semantic Kernel框架 |
| 是否标准化 | ✅ 是(开源规范) | ❌ 否(微软私有抽象) |
| 部署方式 | 独立的MCP Server | 集成在Agent应用中 |
| 典型工具 | mcp-server-filesystem, mcp-server-slack | TextSkill, TimeSkill, EmailSkill |
| 类比 | USB接口标准 | 带USB接口的打印机 |
六、实际应用场景
| 场景 | 用MCP | 用Skill |
|---|---|---|
| 想让Ollama + DeepSeek + Claude都能使用同一个日历工具 | ✅ MCP(工具只需实现一次) | ❌ 需为每个框架编写适配器 |
| 在.NET应用中快速集成AI发邮件功能 | ❌ | ✅ Semantic Kernel Skill |
| 构建企业级Agent平台,支持第三方工具接入 | ✅ MCP是理想选择 | 需定制扩展机制 |
结论
- MCP 和 Skill 不属于同一抽象层级,二者不能简单画等号。
- MCP 是“工具调用的通用语言”,旨在解决系统间的互操作性问题。
- Skill 是“能力的封装单位”,着重于解决功能的组织与复用问题。
- 未来的发展趋势很可能是:Skill这类抽象将在底层采用MCP协议,真正实现“一次编写,到处调用”的愿景。
