做产品 PMaker
空格的键盘
两个词总被混着用,其实分工很清楚 Skill 装「怎么做」 某类任务的步骤、规范、例子、边界 例:写周报的格式、代码审查的清单 本质:一段高质量提示 + 参考资料 改进它 = 改文档,不碰一行代码 MCP 装「怎么调」 某个外部系统的一批接口,统一接入 例:查订单、发邮件、读写数据库 本质:接口接入的开放标准 改进它 = 调服务、改接口、管权限 一句话分清 「它知不知道怎么做」→ Skill 「它怎么碰到外部系统」→ MCP 都加 = 最完整的形态 别混着上:Skill 解决不了接口问题,MCP 也替代不了做事的方法

Skill 是给模型的「操作手册」,MCP 是给系统的「插线板」。一个改知识,一个改接口,两条线。

Skill 与 MCP

这两个词经常被当成同一个东西。但它们解决的是两类完全不同的问题:一个给模型「怎么做」,一个给系统「怎么接」。

你会遇到的现象
  • 文档里两个词混着写,会上讨论半天才发现说的是两件事
  • 以为装了 MCP 模型就会做事了,结果它还是不会
  • 想「让 Agent 会写周报」,不知道该做成 Skill 还是 MCP

两个词分别解决什么

Skill 装的是「怎么做」。它是一份给模型的说明:做某类任务时要遵循的步骤、要用的格式、要注意的边界、可以参考的例子。它不碰任何外部系统,只影响模型「用脑子办事」的方式。

MCP 装的是「怎么调」。它是一套接口接入的标准:把你的系统(数据库、订单服务、邮件)按统一格式包装起来,让 Agent 通过一套规范就能调用这些能力。它解决的是连接问题,不管模型会不会用这些能力做事。

用一个比喻:Skill 是操作手册,MCP 是插线板。手册告诉人怎么操作,插线板让人能通上电。两件事都重要,但它们是两件事。

Skill 怎么组织

一个 Skill 通常由几部分组成:

触发条件。什么时候该用这个 Skill。是用户提到了相关需求,还是检测到某个动作。

步骤说明。完成这类任务要按什么顺序做。这是主体。

规范和边界。哪些不能做、格式要求、质量底线、出错怎么办。

示例。一到两个完整的输入输出例子,比任何抽象描述都有用。

一个 Skill 就是一个文件夹,打开来几乎全是文本 写周报/ SKILL.md 必需 触发条件 + 步骤说明,主体在这里 reference/ 可选 规范、边界、术语表——用到才读 examples/ 可选 一两个完整的输入输出,最管用 scripts/ 可选 确定性的活交给代码,别让模型算 改 Skill = 改文档,不碰一行代码 模型只在需要时才展开读,不占常驻上下文
只有 SKILL.md 是必需的,其余按需增补。模型先读 SKILL.md 的说明,判断要用哪部分才去展开对应文件——所以把长材料拆到子目录,比全塞进一个文件更省上下文。

所以 Skill 本质上是一份高质量的提示与参考资料。它最大的价值是组织化的:把散落在各处的最佳做法收进一个可复用的包里。改 Skill 就是改文档——不碰一行代码,改完即生效,这比改逻辑便宜得多。

这也引出它的边界:Skill 改变不了模型会不会推理。它只能让模型按更好的流程去用已有能力。若任务本身超出模型能力,Skill 写得再细也白搭。

MCP 解决什么

MCP 解决的是接入的标准化问题。在它出现之前,每个 Agent 要接一个新系统,都得写一套专用的适配代码,格式五花八门。MCP 定义了一套统一的形状:

工具。外部系统暴露的可调用操作,以及各自的参数说明。

资源。可读取的数据和文件。

提示。可复用的指令模板。

对产品经理来说,MCP 最重要的含义不是协议本身,而是生态:主流系统和工具越来越多地原生提供 MCP 接口,意味着「接一个新服务」的成本大幅下降,就像 USB 取代了一堆专用线缆。

但要注意它的边界:MCP 只是把接口摆到 Agent 面前,不保证 Agent 会正确使用。工具说明写得差、权限没配好、数据不可信——这些问题 MCP 都管不了,照样会翻车。

什么时候用哪个

一个实用的判断法:

问题出在「它不会做事」→ Skill。需要它遵循某种流程、格式、规范——这是知识层面的事,用 Skill 解决,改起来也便宜。

问题出在「它够不着」→ MCP(或自定义工具)。需要它真的去查数据库、发消息、操作某个系统——这是连接层面的事。系统已有 MCP 接口就用 MCP,没有就写自定义工具。

两者常常一起用。一个成熟的 Agent 通常是:MCP 提供一组外部能力,Skill 告诉它怎么把这些能力组合成一件完整的事,提示词分层管住整体的行为框架。

最后一条提醒:别为了用而用。只有一个接口要接,写个简单的工具函数就够了,不必上一整套 MCP。只有当接入的系统多、要统一管理时,MCP 才真正划算。