什么是MCP?

MCP 的全称是 Model Context Protocol。它是由 AI 公司 Anthropic 创建的一个开放协议

它的核心目标是:让大语言模型能够安全、标准化地使用外部工具和数据源

你可以理解为:

  • 在 MCP 出现之前,每家 AI 应用开发商(比如做个 AI 编程助手或数据分析助手)都需要自己编写代码,去连接数据库、读取文件、调用搜索引擎。这就像每家电器厂都要自己发明一种插座和电压标准,非常混乱且重复劳动。

  • MCP 的出现,统一了“插座”和“供电标准”。它规定了一套简单的通信规则(基于 JSON-RPC),让任何工具或数据源(我们称之为 “MCP 服务器”)都能以标准的方式,被任何支持 MCP 的 AI 应用(我们称之为 “MCP 客户端”)识别和使用。

MCP的两个核心问题

  1. 上下文爆炸问题
    MCP 服务器通常会暴露大量工具(如表和查询方法),其完整的 JSON Schema 会在连接时加载到系统提示词中,占用大量上下文 token(例如一个 Playwright 服务器就占用了约 200k 上下文的 8%)。在多轮对话中,这会导致上下文窗口被快速消耗,造成成本上升和模型推理能力下降。

  2. 能力鸿沟问题
    MCP 解决了“连接能力”的问题,但未解决“使用能力”的问题。即使智能体能够连接数据库或访问文件系统,它仍缺乏必要的专业知识(如编写高效安全的 SQL、理解项目代码结构和开发规范),如同给新手提供系统权限却没有提供操作指南。

这正是 Agent Skills 要解决的核心问题。2025年初,Anthropic 在推出 MCP 之后,进一步提出了 Agent Skills 的概念,引发了业界的广泛关注。有开发者评论说:"Skills 和 MCP 是两种东西,Skills 是领域知识,告诉模型该如何做,本质上是高级 Prompt;而 MCP 对接外部工具和数据。" 也有人认为:"从 Function Call 到 Tool Call 到 MCP 到 Skills,核心大差不差,就是工程实践和表现形式的优化演进。"

什么是Skills?

Agent Skills 是一种标准化的程序性知识封装格式。如果说 MCP 为智能体提供了"手"来操作工具,那么 Skills 就提供了"操作手册"或"SOP(标准作业程序)",教导智能体如何正确使用这些工具。

这种设计理念源于一个简单但深刻的洞察:连接性(Connectivity)与能力(Capability)应该分离。MCP 专注于前者,Skills 专注于后者。这种职责分离带来了清晰的架构优势:

  • MCP 的职责:提供标准化的访问接口,让智能体能够"够得着"外部世界的数据和工具
  • Skills 的职责:提供领域专业知识,告诉智能体在特定场景下"如何组合使用这些工具"

用一个类比来理解:MCP 像是 USB 接口或驱动程序,它定义了设备如何连接;而 Skills 像是软件应用程序,它定义了如何使用这些连接的设备来完成具体任务。你可以拥有一个功能完善的打印机驱动(MCP),但如果没有告诉你如何在 Word 里设置页边距和双面打印(Skill),你仍然无法高效地完成打印任务。

渐进式披露

渐进式披露的核心思想是:不要一次性把所有能力、知识和细节都塞给智能体,而是按“需要程度”逐层加载。系统在启动时只加载最小、最关键的信息,等到具体任务出现,再逐步引入更详细、更昂贵的上下文,从而控制 token 消耗、提升效率和稳定性。

从图里的结构看,它把 skills 拆成了三层。第一层是 Metadata(元数据),比如技能的名称、描述、版本、允许使用的工具等。这一层体量很小,启动时统一加载,用来“让模型知道有哪些技能存在、能做什么”。即便有很多技能,总 token 成本也很低,适合常驻内存。

第二层是 Instructions(指令层),是真正的“怎么做”。包括工作步骤、示例、最佳实践等。这一层不在启动时加载,而是在任务被匹配到某个 skill 时才引入。这样模型只有在“真的要用这个技能”时,才看到详细说明,避免无关指令污染上下文。

第三层是 Scripts & References(脚本与参考资源),比如代码、模板、数据样例。这一层完全是按需、按资源加载,甚至可以是无限量的。只有当任务确实需要某个脚本或数据时才加载,最大化节省 token,同时保持系统可扩展。

综合来说,渐进式披露是一种“从知道 → 会用 → 精通细节”的加载策略
先让模型“知道技能存在”,再在合适的时机“教它怎么用”,最后只在必要时“给它具体工具和材料”。这让复杂系统在规模变大、技能变多的情况下,依然能保持高效、可控和可维护。

社区开发者分享的实践案例充分证明了渐进式披露的威力。在一个真实场景中:

  • 传统 MCP 方式:直接连接一个包含大量工具定义的 MCP 服务器,初始加载消耗 16,000 个 token
  • Skills 包装后:创建一个简单的 Skill 作为"网关",仅在 Frontmatter 中描述功能,初始消耗仅 500 个 token

当智能体确定需要使用该技能时,才会加载详细指令并按需调用底层的 MCP 工具。这种架构不仅大幅降低了初始成本,还使得对话过程中的上下文管理更加精准和高效。

Skills和MCP本质的区别

互补而非竞争:Skills + MCP 的混合架构

理解了两者的差异后,我们会发现:Skills 和 MCP 不是竞争关系,而是互补关系。最佳实践是将两者结合,形成分层架构。

典型工作流

  1. 用户问:"分析公司内部谁的话语权最高"
  2. Skills 层识别这是一个数据分析任务,加载 mysql-employees-analysis 技能
  3. Skills 层根据技能指令,将任务分解为子步骤:查询管理关系、薪资对比、任职时长等
  4. MCP 层执行具体的 SQL 查询,返回结果
  5. Skills 层根据技能中的领域知识,解读数据并生成综合分析
  6. 返回结构化的答案给用户

这种架构的优势是:

  • 关注点分离:MCP 专注于"能力",Skills 专注于"智慧"
  • 成本优化:渐进式加载大幅降低 token 消耗
  • 可维护性:业务逻辑(Skills)与基础设施(MCP)解耦
  • 复用性:同一个 MCP 服务器可以被多个 Skills 使用
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐