近期在 AI 开发者社区(尤其是 X 与各大开源社区)出现了一种激进的声音:“MCP(Model Context Protocol)已死,SKILL.md 才是唯一未来”。不少人主张淘汰复杂的 MCP Server,转而向代码库丢一个 Markdown 文件,命令 Agent 安装一个本地 CLI 工具来解决所有外部能力接入。
针对这种思潮,重度 AI 开发者 David(日常重度依赖 Claude Code、Codex、Gemini、ChatGPT 等)在其博文《I Still Prefer MCP Over Skills》中提出了极具洞察力的技术反思:纯知识型 Skill 固然优秀,但企图用「CLI + Skill 说明书」取代「MCP 标准连接器」不仅不是进步,反而是架构上向脆弱生态的巨大倒退。
知识库关联:关于 MCP 与工具列表在 Harness 中的全量机制请参考 anatomy-of-coding-agent-harness,通用 Agent 技能体系参考 agent-skills 与 agent-workflow-patterns。
核心论点与术语重构
一句话厘清分工边界
MCP 的本质是连接器(Connectors),解决“连上外部实体(What)”的标准化协议;Skills 的本质是操作说明书(Manuals /
LLM_MANUAL.md),解决“如何高效使用系统与规避暗坑(How)”的知识封装。理想的工程架构绝非非此即彼,而是:由 MCP 提供安全、便携、免安装的连接层,由 Skills 作为其上的操作指南与备忘单(Cheat Sheet)。
架构对比:MCP 连接器 vs. 技能说明书
flowchart TD subgraph ClientLayer["客户端生态 (全平台)"] Web["Web 网页版<br/>(ChatGPT / Claude Web / Perplexity)"] Mobile["手机移动端<br/>(iOS / Android 客户端)"] Local["本地执行环境<br/>(Claude Code / Codex / Cursor / 终端)"] end subgraph MCPArch["MCP 架构 (Remote Connector)"] MCPClient["MCP 协议客户端<br/>(原生支持 Tool Search 按需发现)"] OAuth["OAuth 标准鉴权<br/>(无明文密钥暴露)"] MCPServer["Remote MCP Server<br/>(云端托管 / 沙盒隔离 / 集中自动升级)"] ServiceA["外部服务<br/>(Notion / Gmail / Fastmail / 业务 API)"] MCPClient --> OAuth --> MCPServer --> ServiceA end subgraph SkillCLIArch["Capability Skill + CLI 架构"] SkillMD["SKILL.md 说明书<br/>(告诉 Agent 如何调用本地命令行)"] EnvFile[".env 环境变量<br/>(明文暴露 API Token)"] LocalBin["专用 CLI 二进制<br/>(gogcli / remindctl / npm 包)"] ServiceB["外部服务"] SkillMD --> EnvFile --> LocalBin --> ServiceB end Web -.->|完美兼容| MCPArch Mobile -.->|完美兼容| MCPArch Local -->|完美兼容| MCPArch Web x-.-x|完全不支持 (无 Shell/二进制环境)| SkillCLIArch Mobile x-.-x|完全不支持 (无本地计算环境)| SkillCLIArch Local -->|勉强可用 (但带来包依赖与密钥管理混乱)| SkillCLIArch
详细特性矩阵对比
| 评估维度 | Remote MCP(远程连接器) | Capability Skills + 本地 CLI |
|---|---|---|
| 跨平台可移植性 (Portability) | 全平台通吃。手机端、网页端、轻量环境只需填入 Server URL 即可使用。 | 环境严重受限。仅在 Claude Code、Codex 等具备本地完整 Shell 的重量级环境可用,网页版与手机端直接死锁。 |
| 依赖安装与部署 (Deployment) | 零安装(Zero-Install)。客户端无须安装任何本地运行时或二进程包。 | 部署碎片化。用户必须手动配置 npm、uv、brew 或系统环境变量。 |
| 版本无缝迭代 (Updates) | 服务端热更新。服务端增加工具或修复 Bug,全球所有客户端瞬间生效。 | 版本陈旧滞后。用户机器上的 CLI 二进制必须手动拉取与重新升级。 |
| 密钥安全性 (Secret Management) | 标准优雅。通过 OAuth 授权流完成握手,Token 储存在隔离沙盒中。 | 明文裸奔。通常强依赖本地 .env 纯文本存储;临时容器一旦重启,密钥即刻丢失。 |
| 沙盒与安全防护 (Sandboxing) | 天然沙盒隔离。仅暴露严格声明的 Tool 函数,不会赋予模型本地任意命令执行权。 | 过度提权。模型为了运行 CLI,获得了执行任意 Shell 命令的系统高危权限。 |
| 上下文按需检索 (Discovery) | 按需加载(Tool Search)。现代客户端具备工具搜索能力,仅在调用时拉取上下文。 | 初始依靠 Prompt/Description 匹配,若包含大量 CLI 帮助文档易膨胀。 |
为什么滥用“CLI + Skill”是一场倒退?
当开发者试图用 SKILL.md 替代一切外部服务集成时,陷入了所谓的“万物皆 CLI”陷阱:
- 终端沙文主义的傲慢:
- 很多重度命令行开发者默认所有用户都在全功能的 macOS/Linux 终端里跑 Agent。然而,数以千万计的用户使用的是 iPad、手机 App 或纯 Web 端交互。
- 要求“查一下日历”就必须在本地安装一个
calendar-cli并配置本地密钥,彻底切断了非终端环境接入智能的可能。
- 密钥管理的梦魇:
- 本地 CLI 无法原生承载复杂的三方授权流。为了让 Agent 能够调通接口,用户被迫去开发者后台申请 Long-lived API Token,并将这些高危机密以明文形式贴在各种临时目录的
.env中。
- 本地 CLI 无法原生承载复杂的三方授权流。为了让 Agent 能够调通接口,用户被迫去开发者后台申请 Long-lived API Token,并将这些高危机密以明文形式贴在各种临时目录的
- 生态割裂与管理蛮荒:
- 目前除了少数通过
npx skills分发的规范包外,大多数 Skill 的安装全靠在各个目录乱拷 Markdown;一旦底层接口变更,分布在各处的说明书迅速沦为过时伪代码。
- 目前除了少数通过
那么,Skills 真正的统治区在哪里?
作者明确指出,他反对的是“能力型(Capability)Skill 取代连接器”,而非否定 Skills 本身。Skills 在以下纯知识、流程约束与心智模型传递场景具有无可替代的统治力:
- 编码哲学与领域规范:指导 Agent 如何撰写符合团队审美的 Commit Message、如何编写特定架构的单元测试、如何规避代码中的过度工程化。
- 文件与介质处理指南:例如 Anthropic 官方的
read_pdfSkill,它教给模型的是“如何利用现有 Python 脚本对 PDF 进行解包、解析 XML 结构与提取素材”,而非凭空造一个外接服务。 - 项目级私有工具约束:例如在仓库中约定“本代码库统一使用
fnox管理密钥,执行命令前请按以下姿态读取配置”,这比写一个无谓的 MCP 去调get_secret()优雅百倍。
终极方案:Skills + MCP 混合协同架构
最成熟、最优雅的工业级方案是:不要用 Skills 去消灭 MCP,而是在 MCP 连接器之上,封装一层轻量的“避坑与用法说明书”。
flowchart LR subgraph MCP["底层: MCP Connector (协议层)"] direction TB M_Tool["提供 raw 工具调用接口<br/>如: noteplan.search(), noteplan.create()"] end subgraph Skill["顶层: Skill Manual (知识层)"] direction TB S_Doc["记录领域 Gotchas 与调用经验<br/>- 强制日期参数格式必须为 'YYYY-MM-DD'<br/>- 搜索接口必须带 limit=50 避免分页截断<br/>- 避免重复生成双向链接的避坑备忘"] end Skill -->|在模型发起 Tool Call 前注入常识| MCP MCP -->|安全稳定地执行远程交互| Service["外部 SaaS / 个人数据库"]
生产实战工作流:让 Agent 自动为 MCP 沉淀 Skill
David 在日常开发 NotePlan 等 MCP 集成时的经典闭环:
- 探索与踩坑:在对话中通过 MCP 操作外部服务,难免会遇到 API 参数命名不直观、日期格式要求为
YYYY-MM-DD、特定参数不加会导致截断等隐蔽暗坑。 - 就地沉淀为 Skill:当解决完这批坑点后,直接让 Agent:“将我们刚才调试该 MCP 所发现的所有非显而易见的注意事项、参数格式与最佳实践,打包写成一个专门针对此 MCP 的 Skill。”
- 后续会话自动获益:未来的任何一个 Agent 会话在唤醒该 MCP 时,首先读取这篇“操作备忘单”,绝不在同一个坑里浪费 Token 重复试错。
总结:专业分工才是正道
- MCP 是桥梁(Connectors):为整个 AI 生态提供跨设备、免安装、安全受控的标准化数据通道;
- Skills 是地图(Manuals):教导模型如何看懂地图、如何以最优雅的姿态驾驶工具;
- 行业呼吁:不要放弃 MCP 的标准化进程去倒退回各种简陋脆弱的临时 CLI 拼凑体,标准化连接层(MCP)与敏捷知识层(Skills)的结合,才是自主智能体走向健壮工程的正确方向。