
在 MCP 和 Skills 概念刚兴起的时候,有很多混乱的观点。有人认为 Skills 是来代替 MCP 的。这种观点是不正确的,MCP 和 Skill 完全是两个不同的东西,甚至有时候他俩是可以相辅相成的。
MCP (Model Context Protocal)
官方介绍:MCP 是一个可以使 LLM 程序和外部数据和外部工具无缝的整合在一起。
从官方的话中,我们可以看到 MCP 主要是给LLM长出"一双手",而这个观点又和 Function Calling 很相似。Function Calling 就是在给 LLM 长出一双手。
模型 --function calling--> Host(客户端) --MCP(JSON-RPC)--> MCP Server (模型侧接口) (翻译/路由) (外部系统)这个链路图就解释了 MCP 和 function calling 的关系。MCP 是拓展了 Function Calling的能力。
一个经典的案例:
LLM想要操控 IDEA 执行相关运行操作。这时候 IDEA 侧就需要将自己相关功能通过 MCP Server 暴露出来,最后塞到LLM里,LLM发现这个工具后,他就可以调用这个MCP工具,达到我们的目的。
Skills
Skills 本质其实就是一段提示词,但这个提示词并不是一股脑在启动初期全部加载到Agent的上下文中的,他是渐进式按需加载的。
这个 渐进式披露 就好比你给Agent一本开发手册,起初只给他一份 "目录",Agent 并不清楚具体内容是什么,后续如果Agent希望了解这部分的内容,他会自己去查之后加入到自己的上下文中。
MCP 与 Skills 的对比
MCP 是 连接层
- MCP 是一种协议,目的是解决 AI 和 外部系统 如何对接的问题。
- 特点:跨进程,跨程序,能够真实的调用工具。
Skills 是 编排层/知识层
- Skills 本身并不提供任何工具调用,本质知识 按需引入的提示词
- 他不提供任何工具,但他可以告诉模型,为了完成这个目的,他应该 怎么做,用什么,什么顺序
再类比一下:
MCP = 给AI装上一双 "手" 使AI有能力触碰到外部的世界。
Skills = AI 的一本操作手册,(碰到这个问题后,应该按什么流程做)
MCP 与 Skills 协作的例子
User 发起一个问题:查一下无锡的天气。
Agent 内部思考:有一个 查询天气的 Skills,让我来仔细看一下这个 Skills...
查询天气 Skills:
1. 明确用户需要查询天气的地址。
2. 随后去调用 weather-mcp 中的 query 工具,带上相关地址参数。
3. 整理后反馈给用户。
随后 Agent 就开始去请求mcp-server并总结。
Agent 返回:无锡市天气 xxxx。
当然这种简单单步问题可以不需要 Skills,这里仅做协作演示。