# MCP、Skills、Tools:我怎么看这三层东西

116 阅读4分钟

学 Agent 久了,术语会糊成一锅:MCP、Skills、Tools、Rules……名字都像「给 AI 加能力」,但我越来越觉得它们不是同一类东西。我自己的划分很简单:

  • Skills 像围栏——我把边界和要求讲清楚,AI 在里头按我的方式做
  • MCP 是协议层——接公司内网、别的平台,AI 原本看不了、调不了的东西,从这儿进来
  • Tools 是具体的手——我自己写的,AI 也可以自己写

下面是我实际用下来形成的看法。


Skills:围栏,不是多几个功能

我对 Skills 的理解,不太像「给 AI 装插件」,更像 围一块地,立几条规矩,再把说明书钉在围栏上。

Cursor 里的 Skill 就是一堆 SKILL.md(再加 reference、examples、脚本)。YAML 头写 name、description——相当于告诉 Agent:什么情况下你要进这块地;正文写步骤、格式、禁忌——进来了就按这个做。

所以我愿意叫它「围栏」:

  • 范围:只做 PR review、只做 commit、只做 debug,别跑偏
  • 标准:commit 怎么写、测试必须先跑、中文怎么回
  • 细节:我自己讲清楚「到底要怎么做」,不用 AI 每次猜

和 MCP 最大的差别:Skill 本身通常不能多出一个 API。它不会 magically 让 AI 连上数据库。它只是约束和引导——「你有这些工具了,但在这个任务里,必须按我的流程用」。

我会在 Skills 里加各种 md:主流程、边界 case、输出模板。本质上都是 限制 + 说明。Rules 也有约束,但 Rules 更像「全厂规定」(始终生效、宜短);Skills 是 某个工种的作业指导书,只有相关任务才翻出来,不占每轮对话的 permanent 前缀。

什么时候值得写 Skill:同一件事反复做,AI 总漏步骤、总格式不对、总用错团队约定——不是缺能力,是缺 按你的要求做 的围栏

(例如: 解决用户bug时的流程,先看判断属于前端问题还是后端问题,接着查看是否有项目权限,再看代码逻辑,再看看有没有涉及其他项目.......)。

什么时候写 Skill 没用:AI 根本访问不了内部系统——围栏里没工具,手册再厚也白搭。那是 MCP / Tool 的事。


MCP:协议层,把「外部世界」接进来

MCP(Model Context Protocol)在我这儿就是 标准插座。

AI 默认只能看到上下文里的文字、宿主提供的内置能力。公司 MySQL、内部文档站、别的 SaaS、浏览器里跑着的页面——没权限、没通道、模型训练里也没有。MCP Server 单独跑,用统一协议暴露 Tools / Resources,Cursor 这类客户端连上之后,Agent 才「多了一截内部功能」。

我会分几类想:

类型例子我的理解
公司 MCP内网 API、工单、权限内的库AI 平时绝对碰不到,必须走公司搭的 Server
平台 MCPGitHub、masterGo、figma第三方能力,协议统一,换客户端也能复用
个人 MCP自己写的 small server把某一坨集成封成标准接口

核心就一句:AI 没有权限调用、或者看不了的东西,通过 MCP 去获取。
不是让模型「更聪明」,是 合法、可控地扩大感知和行动半径。

和 Skill 的配合也清楚:MCP 负责能;Skill 负责在能的前提下,必须怎么用。比如 MCP 连了 MySQL,Skill 可以写「只读、先查 schema、禁止 DELETE」——围栏套在插座外面。

我不把 MCP 当成「高级版 Tool 配置文件」。它是 协议 + 独立进程/服务。团队可以维护一个「公司 MCP 套件」,多个项目、多个 Agent 产品挂同一套。


Tools:具体的手,人可以写,AI 也可以写

Tool 是最底层、最实在的一层:一个函数、一个脚本、一个 HTTP 调用,模型通过 function calling 决定「现在调哪个、参数是什么」,宿主执行完把结果塞回上下文。

来源在我眼里有两条:

  1. 人写的 Tool

    • 宿主内置(读文件、跑终端、grep)
    • MCP Server 暴露的(本质也是人/团队写的,只是走 MCP 协议)
    • 自研 Agent 里注册的 JSON schema + handler
  2. AI 自己写的 Tool

    • 写一段脚本解决当前问题,再调这个脚本
    • 临时拼一个 small utility,用完即弃
    • 在 Cursor 里「写个脚本跑一下」——手是现长的

所以 Tool 不等于 MCP。MCP 是 一堆 Tool(和资源)的打包与交付方式;Tool 是 单次可执行能力。
一个 MCP Server 里可以有很多 Tool;一个 Tool 也可以不经过 MCP,直接绑在你的 Agent 代码里。

我实践里的分工:

  • 稳定、要复用、要权限隔离 → 人写好,最好挂 MCP
  • 一次性、探索性 → AI 写脚本当 Tool 用,不必什么都 MCP 化
  • 流程容易乱 → 上面加 Skill 围栏,别让它乱调、乱写