做 AI 应用开发,经常会遇到两个概念:Agent Skill 和 MCP(Model Context Protocol)。

虽然都是让 AI 能调用工具,但它们根本不是一个维度的东西。

简单来说:

Skill是 Agent 内部的能力封装与编排,MCP 是工具能力的标准化接入协议。

先搞清楚各自是什么

Agent Skill:给 Agent 的专用招式

Skill,说白了,就是 Agent 所拥有的一项具体能力。

比如你用某个开发框架,给它写个 Python 函数去调天气 API,这就是一个 Skill。

它通常与具体 Agent 框架的能力体系绑定,因此可移植性往往有限。

你给 Agent A 写的 Skill,换到 Agent B 身上,或者换一个模型接口,可能就不认了。

这就好比以前每家电器都要配专用的充电头——三星的手机用三星的头,小米的用小米的头,互不通用。

这种烟囱式的开发方式,带来的问题是什么?

在没有统一协议的情况下,每个 Agent 都需要分别适配每个工具,整体接入复杂度约为 O(N×M)。

你有 N 个不同的Agent,M 个不同的工具,那你就得写 N 乘以 M 次适配代码。

N 和 M 稍微大一点,工作量就直接爆炸。

MCP:AI 界的 USB 接口

MCP(Model Context Protocol,模型上下文协议),解决的就是这个问题。

它不关心底层使用哪个大模型,而定义的是 Agent 与工具之间的标准通信协议。

只要工具按照 MCP 协议封装成一个标准的 MCP Server,不管你是用 Claude Desktop、Cursor,还是自己写的 Agent,只要支持 MCP 协议,直接插上就能用。

N 个Agent 只需要实现一次 MCP 客户端,M 个工具只需要实现一次 MCP Server,两边对接一次就通了,复杂度直接降到 O(N + M)。

标准化的代价是多了一层抽象,但换来的是规模化能力,这就是从手工作坊到标准化工业总线的跨越。

类比一下

打个比方:

Skill 就像是每个 App 自己写的插件系统。 微信的插件只能在微信里跑,钉钉的插件只能在钉钉里跑,彼此不兼容。

MCP 就像是 USB 标准。 不管鼠标、键盘还是摄像头来自哪个厂商,只要遵循 USB 协议,插到电脑上就能正常使用。

Skill 解决的是"这个 Agent 能不能做这件事"。

MCP 解决的是"这个工具能不能被任何 Agent 使用"。

它们的关系:一个硬币的两面

很多人容易陷入一个误区:觉得 MCP 是 Skill 的替代品,选了 MCP 就不用 Skill 了。

这不是替代关系,而是互补关系。

维度 Agent Skill MCP
定位 能力的具体实现 能力的接入标准
关注点 怎么做(How) 有什么(What)
作用域 单个 Agent 内部 跨 Agent、跨平台
复杂度 O(N × M) O(N + M)
灵活性 高,可以深度定制 标准化,通用性强

Skill 侧重于具体的能力实现——比如"帮我查数据库"、“帮我发通知”。

MCP 侧重于能力的标准化接入——比如"怎么让任意 Agent 都能调用这个工具"。

一个完整的 AI 应用架构中,两者通常同时存在:MCP 负责对外暴露能力,Skill 负责在 Agent 内部编排和执行。

落地时遇到的四个硬骨头

方案听起来很美,但真正落到工程实践中,有几个坑绕不开。

一、上下文膨胀

你有几百个 MCP 工具,全塞给 AI 吗?

那prompt比书都厚,模型还没开始干活,光看说明书就迷糊了。

这种现象有个专业名词,叫"模型迷失"(Lost in the Middle)。

解决方案:动态路由 + RAG 思路。

用户问什么,就去工具库里通过语义搜索找到相关的几个工具说明,按需加载。

不是所有工具都一次性塞进去,而是"用哪个加载哪个",这才是高手玩法。

二、安全风险

这个最吓人。

你给 AI 接了 MCP,它万一执行个命令把数据库删了怎么办?

尤其是涉及写操作、系统变更或资金操作时,模型只能提出建议,最终执行必须经过权限控制或人工确认。

解决方案:人机回环 + 权限分级。

在 MCP Server 端加一道过滤层,关键操作需要人工确认,权限做精细化控制。

真正危险的不是模型"不会思考",而是它拥有了超出授权范围的执行权限。

三、存量代码怎么办?

公司里以前写了几百个 Skill,难道全推倒重写成 MCP?

这就不厚道了。

解决方案:适配器模式。

可以借助 AST 等工具分析已有代码,结合适配器模式,将原有 Skill 包装成符合 MCP 协议的服务。

一键转换,老树发新芽,既保住了存量资产,又接轨了未来。

四、参数幻觉

模型在调用复杂的工具时,经常丢个参数,或者返回的数据格式不对。

解决方案:结构化输出 + 强校验。

利用 Pydantic 之类的工具卡死输入输出格式,错了就立刻反馈给模型,让它重试,直到格式完全正确为止。

小贴士

  1. MCP Server 的权限控制一定要做。 不要依赖模型"自觉",模型是会犯错的。
  2. 动态路由不是可有可无的。 当工具数量超过 20 个的时候,就必须上了,否则上下文窗口会被工具描述直接填满。
  3. 存量 Skill 不必全部重写。 用适配器包装一层 MCP 协议就行,没必要推倒重来。

为什么一定要理解这个区别?

因为大模型应用开发正从"手搓 API"的农业时代,迈向"标准化即插即用"的工业时代。

今天的 MCP 可能是标准,明天可能有 NCP、PCP 冒出来。

协议思想本身不会过时——解耦、标准化、即插即用。

真正会变化的是协议名称,不会变化的是软件工程追求解耦、标准化和可复用的思想。理解这一点,比记住 MCP 本身更重要。

Logo

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

更多推荐