先说结论

一句话区分:Skill 是“教模型做事的方法论”,离线装进上下文,断网也能用;MCP 是“给模型接通外部服务和数据的通道”,运行时要联网、要凭据。该装技能还是该接服务,不看喜不喜欢,看你要不要实时数据、要不要写操作、要不要跨会话状态。本文数据来自 2026-09-26 的 GitHub API:anthropics/skills 约 17.8 万 star(Agent Skills 官方示例库),modelcontextprotocol/servers 约 9.1 万 star(官方 MCP 服务器集合),python-sdk 约 2.4 万 star。两者不是二选一,往往是搭档。

本质:一个是方法,一个是通道

官方对 skill 的定义是“folders of instructions, scripts, and resources that Claude loads dynamically to improve performance on specialized tasks”——它是一包提示词加脚本加参考资源,在会话开始时只把 name+description(约 100 token)挂进上下文,被调用时才读完整内容(建议低于 5000 token),更重的参考文档按需再读。渐进式加载是 skill 省上下文的关键:未被调用的 skill 只占约 100 token 的 description,不会把整篇长文灌进窗口,这正是它能塞很多个而不撑爆模型的原因;MCP 没有这层缓冲,每个工具的描述始终在场。换句话说,skill 的全部知识在写好的那一刻就固定了,它解决“怎么做”这类稳定问题。

MCP(Model Context Protocol)反过来,是把模型连到一个运行中的服务:数据库、内部 API、文件系统、SaaS。模型通过这个通道实时查数据、调工具。它解决的是 skill 天生做不到的事——拿当下此刻的信息、对外部系统做写操作。规范上 MCP 暴露的是 tools 和 resources,模型按需要调用。

“Skills teach Claude how to complete specific tasks in a repeatable way.” —— 重点在“how”,是方法;MCP 的重点在“access”,是能力通道。

判定表:该装技能,还是接 MCP

你的需求装 Skill接 MCP
知识/流程长期稳定是否
需要实时数据(现在库存、今天日志)否是
要做写操作(改库、发消息、建工单)否(无凭据)是
需要凭据且跨服务鉴权否是
需要跨会话保留状态否(上下文随会话结束)是(服务端持有)
在意延迟和成本是(本地、零网络)否(每次往返服务)

一个实用的判断顺序:先问“这事需不需要此刻的数据或外部系统的写权限”。不需要,就用 skill;需要,就上 MCP。再问“流程本身稳不稳”,稳就写成 skill 固化下来。两者都不要硬凑——别为了“看起来先进”给一个纯本地固定流程也起一个 MCP 服务。现实里多数团队两头都要,关键是把两边职责搞对,别让 skill 去查实时数、也别让 MCP 去背流程。反例很有代表性:有人给“每天生成运营日报”做了个 skill,里面写死“昨日新增用户=xxx”,可这数字是写文件时的快照,三天后模型还拿它当真——这种该接 MCP 查数,而不是写死进 skill。

两者配合:MCP 取数,Skill 定流程

真实场景里它们常搭档:MCP 负责“拿到活数据、执行动作”,skill 负责“拿到之后按什么流程处理”。例如一个发布助手——MCP 连 CI 和仓库拿构建状态、未合 PR,skill 规定评审清单、tag 规则、变更日志格式。模型先经 MCP 取数,再按 skill 里的步骤推进。

# Skill 的 SKILL.md 里描述流程(方法论,离线可用)
description: 发布前读取 CI 状态与未合 PR,按评审清单核对,再打 tag 并写 CHANGELOG。
# 真正“取状态 / 打 tag”的动作,由已连接的 MCP 服务完成

示意性的 MCP 接入(字段名以你用的客户端为准,仅表达结构,不保证逐字可跑):

{
  "mcpServers": {
    "ci": { "command": "npx", "args": ["-y", "my-ci-mcp"], "env": { "TOKEN": "..." } }
  }
}

分工原则:凡是“查什么、改什么”交给 MCP 工具;凡是“按什么顺序、满足什么标准”交给 skill 写死。这样 MCP 换了实现,skill 的流程不用动;流程升级了,MCP 连接也不用动。具体串起来是五步:一、MCP 拉取未合 PR 与 CI 状态;二、skill 按评审清单逐条核对;三、发现问题退回开发者;四、MCP 打 tag 并推送;五、skill 生成 CHANGELOG 条目。取数和执行全在 MCP,判断与格式全在 skill,各管一段。skill 侧只声明它允许用的本地工具,比如:

---
name: release-flow
description: 发布前按评审清单核对未合 PR 与 CI 状态,打 tag 并写 CHANGELOG。
allowed-tools: Bash(git:*) Read
---

各自的坑

Skill 的坑:

  • 拿不到实时数据,写在 SKILL.md 里的“当前版本号”“最新接口”会过期,还被当真理。
  • 知识固化,业务规则一变就得改文件重发,否则全员用旧规范。
  • description 写太泛会乱触发(见第 67 篇),写太窄又永远不触发。
  • 主文件过长会吃上下文,规范建议 SKILL.md 控制在 500 行内,细节拆到 references/。
  • allowed-tools 字段仍是实验性,不同客户端支持不一,别把关键权限完全押在它上;需要稳定授权还是走 MCP 的凭据。

MCP 的坑:

  • 工具一多,所有 tool 描述都塞进上下文,直接挤爆窗口、拉高延迟和成本——这是接 MCP 最常见的翻车点。经验值是工具尽量控制在十几个以内,超过就按需分批暴露,否则工具清单本身就成了噪声,模型反而不会选。
  • 必须联网、必须凭据;服务挂了或 token 过期,模型当场失明,而 skill 断网仍能跑。
  • 写操作有副作用,权限和审计要自己兜底,不能假手于“模型觉得该做”。

反模式清单:

  • 用 skill 写死“实时库存”之类的活数据,过期了还信。
  • 把几十个 API 全挂成 MCP 工具,上下文被工具清单占满,模型反而不会选。
  • 该接 MCP 却硬用 skill 配一长串 curl 片段,既无凭据管理又不可维护。
  • 该用 skill 却起一个 MCP 服务,只为跑一段固定流程,杀鸡用牛刀。

下一步怎么做

把团队里“稳定流程”先做成 skill 沉淀进仓库(见第 66 篇);一旦遇到要查实时数据或写外部系统,就去找或写一个 MCP server,从 modelcontextprotocol/servers 仓库挑官方维护的实现。两者不是二选一,而是“方法用 skill 固化、能力用 MCP 接通”的组合——先想清哪段是方法、哪段是能力,自然就知道该装还是该接。若只做纯本地固定流程,一个 skill 顶十个 MCP;若离了线上数据就寸步难行,MCP 才是正解,别用 skill 硬凑实时查询。

声明:1.本站所有文章,如无特殊说明或标注,均为本站原创发布。本网站中【文本生成/文生图】使用了DeeSseek人工智能生成内容技术, 算法来源说明:本网站未自行开发、训练或部署深度合成算法,所使用的人工智能算法来自:DeepSeek、Chatgpt、Google Gemini。 2.为了网站加载速度优化,本站预览图片进行压缩处理,所以有些不是太清晰,并不影响AI提示词生图、AI设计等内容。3.任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。--GUUNN.COM