💡 不知道你有没有过这种困惑:刚开始接触Agent技术的时候,各种名词满天飞——MCP、Skill、LangGraph、AutoGen,看着都和「给Agent加能力」有关,却分不清谁是谁、分别该用在什么地方。

尤其是MCP和Agent Skill,很多人会觉得它们差不多,都是用来扩展Agent能力的,只是格式不一样。但实际上,两者的定位、层级、解决的问题完全不同,它们不是竞争关系,而是上下配合的互补关系。

这篇我们就从底层逻辑到实际落地,把两者的区别、各自的作用、配合的方式彻底讲透,看完你就能理清Agent技术栈的分层脉络。


一、先搞懂本质:两者分别是做什么的

在讲区别之前,我们先分别把两个概念的核心定位说清楚,先建立基本认知。

1. MCP:给Agent装上「能干活的手脚」

MCP全称 Model Context Protocol(模型上下文协议),是Anthropic推出的一套智能体工具接入标准协议

它要解决的,是「Agent从0到1拥有实操能力」的问题:
在没有MCP的时代,大模型本质上就是个“聊天框”,只能输出文字,没法直接读取本地文件、查询业务数据库、调用第三方系统接口。而MCP把这些外部能力统一封装成标准化的服务,Agent只要连上对应的MCP Server,就能通过函数调用的方式使用这些工具。

MCP的粒度是「原子操作」:比如read_file读一个文件、query_database执行一条SQL、send_email发一封邮件,每个工具只做一件明确、独立的事,工具的参数、返回格式都以schema的形式完全对模型透明。

打个通俗的比方:MCP就像给新员工配电脑、装软件、开系统权限,是他能动手开展工作的硬件基础。没有它,员工再聪明也只能纸上谈兵。

2. Agent Skill:给Agent配上「会做事的手册」

Agent Skill同样是Anthropic推出的开放标准,它的核心定位是可复用的任务流程与知识模块

它要解决的,是「有了工具之后,怎么把事做对、做标准」的问题:
就算给Agent开了文件权限、数据库权限、代码执行权限,你让它做“代码审查”,它也不知道该先查什么、后查什么、按什么标准判断漏洞、最后输出成什么格式。Skill就是把这类任务的完整流程、判断标准、参考资料、输出模板打包成一个可复用的模块。

每个Skill都是一个完整的文件夹:核心是SKILL.md指令文件,用YAML头声明名称和描述,正文写执行步骤和标准;除此之外还可以附带Python脚本、输出模板、参考规范文档、配置文件等等资源。

Skill的粒度是「完整工作流」:它覆盖的是一整类任务的全流程,比如“代码审查”“数据分析报告生成”“文档格式校验”,内部可能包含多步操作、多次工具调用。

对应上面的比方:Skill就像给员工发的SOP操作手册+工作模板+参考规范,告诉他这类任务该按什么步骤、什么标准来完成,保证输出质量稳定。


二、一张表看懂:MCP与Agent Skill的核心差异

为了让大家更直观地理清边界,我从六个核心维度做了对比:

对比维度 MCP(模型上下文协议) Agent Skill(智能体技能模块)
核心定位 工具接入的标准化协议 任务流程与知识的可复用模块
解决的问题 Agent怎么获得外部能力(能做事) Agent怎么按标准完成任务(会做事)
内容粒度 原子操作,单个工具调用 完整工作流,一类任务的全流程
内容形态 工具定义、参数schema、执行逻辑 指令文档、脚本、模板、参考资料
加载方式 连接Server后全量加载工具列表 渐进式加载:先加载简介,匹配任务后再加载完整内容
核心价值 拓展Agent的可执行边界 提升Agent任务完成的标准化与准确率

为了更直观地理解两者的定位差异,我们可以用一张流程图来对比它们的核心区别:

提供执行能力

提供流程与标准

Agent Skill(智能体技能模块)

核心定位:任务流程与知识模块

解决问题:Agent 会做事

粒度:完整工作流(一类任务全流程)

形态:指令文档、脚本、模板、参考资料

加载方式:渐进式加载(按需匹配)

MCP(模型上下文协议)

核心定位:工具接入标准协议

解决问题:Agent 能做事

粒度:原子操作(单个工具调用)

形态:工具定义、参数 Schema

加载方式:连接 Server 后全量加载

完成一个任务

三、纠正一个常见误区:Skill根本不是「高级Prompt模板」

很多人刚接触Skill的时候,会觉得“这不就是写得精致点的Prompt模板吗,换个名字而已”。这其实是非常典型的误解,两者的核心差异远不止文字多少。

1. 自动发现 + 渐进式加载,和手动喂Prompt完全是两回事

普通的Prompt模板,需要你手动把指令复制粘贴给Agent,或者在代码里写死加载逻辑。
而Skill是可以被Agent自动检索匹配的:用户提出一个任务,Agent会自己扫描可用的Skill库,找到和任务最匹配的那个,主动加载使用,不需要人工指定。

同时它采用渐进式加载机制来节省上下文空间:

  • Agent启动时,只加载每个Skill的名称和一句话简介,单个只占30~50个token;
  • 只有当判断某个Skill和当前任务相关时,才会加载完整的指令正文;
  • 执行过程中需要用到模板、参考文档时,才会进一步加载对应的资源文件。

这种设计既保证了Skill的丰富度,又不会浪费宝贵的上下文窗口,和一次性全量塞进去的Prompt模板有本质区别。

2. 不止是文字,是完整的可执行资源包

普通Prompt只有文字指令,最多能规定输出格式和步骤。
而Skill是一个完整的资源包:除了文字流程,还可以附带Python脚本、Markdown模板、配置文件、参考规范文档等等。Agent执行任务时,可以直接调用包里的脚本、套用包里的模板,能力远不止文字指令。

换句话说:Prompt是“告诉Agent怎么做”,而Skill是“把做法连同工具一起打包给Agent”。


四、一文看懂:两者怎么配合完成一个完整任务

讲了这么多概念,我们用「代码审查」这个最常见的开发场景,走一遍完整的协作流程,你就能直观感受到两者的分工。

第一步:任务触发,Skill匹配

用户向Agent提出需求:“帮我审查一下src/auth.py这次提交的代码”。
Agent收到任务后,扫描本地可用的Skill列表,匹配到了code-review代码审查技能,于是加载它的核心指令文件SKILL.md,内容大致如下:

---
name: code-review
description: 对代码进行全面审查,识别功能bug、安全漏洞和性能问题,输出结构化报告
---

# 代码审查执行流程

## 第一步:读取目标文件
读取用户指定的代码文件,梳理功能逻辑和本次改动范围。

## 第二步:执行安全扫描
运行脚本目录下的`check_security.py`,对代码做自动化安全漏洞扫描。

## 第三步:逻辑与性能检查
结合代码规范,检查逻辑漏洞、性能隐患和不规范写法。

## 第四步:输出审查报告
套用`assets/report_template.md`模板,整理所有问题,按严重等级排序输出。

到这里,Skill就把整个任务的流程、步骤、标准都定好了,相当于给Agent了一份操作说明书。

第二步:流程执行,MCP落地

Skill只定义了“做什么”,真正“动手做”全靠MCP提供的工具能力:

  1. 执行第一步读文件:Agent调用文件系统MCP Server提供的read_file工具,传入文件路径,获取到代码内容。

    # 伪代码:调用MCP工具
    code_content = mcp_client.call_tool(
        "read_file",
        params={"path": "src/auth.py"}
    )
    
  2. 执行第二步安全扫描:Agent先通过MCP的文件工具读取Skill包里的check_security.py脚本,再调用代码执行MCP工具运行脚本,得到扫描结果。

  3. 执行第四步输出报告:Agent加载Skill包里的report_template.md模板,把前面几步的结果按模板格式整理好,生成最终的结构化审查报告。

整个流程的分工总结

  • Skill是指挥的“大脑”:负责定流程、定标准、做编排,告诉Agent先做什么后做什么、按什么标准判断;
  • MCP是执行的“手脚”:负责落地每一步具体操作,读文件、跑脚本、调接口,真正和外部系统交互。

缺了Skill,Agent拿着一堆工具不知道按什么顺序用,全靠模型临场发挥,输出质量不稳定;
缺了MCP,Skill里的流程再详细也只是纸上谈兵,没法真正落地执行。


下面这张流程图可以清晰地展示 Skill 和 MCP 在「代码审查」任务中的协作关系:

MCP 工具执行

Skill 流程编排

用户:审查 src/auth.py 代码

Agent 接收任务

扫描 Skill 库,匹配 code-review 技能

加载 SKILL.md 指令文件

第一步:读取目标文件

第二步:执行安全扫描

第三步:逻辑与性能检查

第四步:输出审查报告

调用 read_file 工具
读取 src/auth.py

调用代码执行工具
运行 check_security.py

加载 report_template.md 模板

生成结构化审查报告

输出最终审查报告给用户

五、落地参考:什么时候用MCP?什么时候封装Skill?

很多朋友做Agent项目的时候,会纠结什么能力该放MCP里,什么逻辑该封装成Skill。这里给大家两个核心判断原则,以及对应的落地场景。

1. 适合封装成MCP工具的场景

核心原则:只做「动作」,不做「判断和规划」

  • 通用的底层能力:比如文件读写、数据库查询、API调用、邮件发送、代码执行
  • 和具体业务流程无关、可以被多类任务复用的原子操作
  • 有明确输入输出、不需要复杂决策的单一动作

简单说:所有“和外部系统交互的单一动作”,都适合做成MCP工具,作为通用能力底座沉淀下来。

2. 适合封装成Skill的场景

核心原则:封装「流程、标准、知识」

  • 有固定流程的标准化业务任务:比如代码审查、数据分析报告、文档格式校验、竞品信息整理
  • 有明确输出标准、判断规则的重复性工作
  • 包含最佳实践、需要统一输出质量的任务

简单说:所有“有固定SOP的一类任务”,都适合封装成Skill,把最佳实践沉淀下来,让Agent每次都按最优流程执行。

3. 生产级最佳实践:能力与流程分离

在真正的生产级Agent系统里,通常会做分层设计:

  • 底层:MCP能力层,统一接入所有外部工具和数据能力,做成通用的能力底座,全公司复用;
  • 上层:Skill业务层,基于不同的业务场景,封装各类Skill流程模块,不同业务线可以复用底层的MCP能力。

这种分层设计的好处是:底层能力统一维护,不用每个业务重复造轮子;上层流程可以快速迭代,适配不同业务的个性化需求,扩展性和可维护性都会好很多。


下面这张分层架构图可以清晰地展示生产级 Agent 系统的设计思路:

框架层(运行底座)

LangGraph / AutoGen

能力层(MCP)

文件系统 MCP Server

数据库 MCP Server

代码执行 MCP Server

邮件发送 MCP Server

业务层(Skill)

代码审查 Skill

数据分析 Skill

文档校验 Skill

竞品分析 Skill

六、拓展:和其他相关概念的边界

为了帮大家彻底理清Agent技术栈,我们再补充两个容易混淆的概念,帮你建立完整的认知。

1. 和Agent开发框架(LangGraph、AutoGen)的区别

很多人会把MCP、Skill和开发框架放在一起比,其实它们根本不是一个层级的东西:

  • 开发框架是Agent的运行底座:负责任务调度、状态管理、多智能体协作,是整个Agent程序的运行容器;
  • MCP是框架里的一个组件:专门负责工具接入,是框架能力的一部分;
  • Skill是框架里的业务模块:可以被框架加载、调度,用来实现具体的业务逻辑。

打个比方:框架是手机操作系统,MCP是手机的硬件接口(比如充电口、摄像头),Skill是手机里安装的一个个App。

2. 和普通Function Calling的区别

还有人会问:MCP不就是函数调用吗,和普通的Function Calling有什么区别?

  • 普通的Function Calling是零散的、各自定义的:每个项目自己写工具定义、自己写调用逻辑,换个项目就不能用了;
  • MCP是统一的标准化协议:只要符合MCP规范的工具,任何兼容的Agent、任何框架都能直接用,不需要重复做适配,相当于行业通用的“接口标准”。

而Skill和Function Calling就差得更远了:Function Calling是单次工具调用,而Skill是包含多步工具调用的完整工作流,两者不在一个层级。


最后

如今Agent技术正在快速走向分层和标准化:底层有统一的工具接入协议,中层有成熟的开发框架,上层有可复用的流程知识模块。

很多人学Agent喜欢追新概念,今天出个新框架就去学,明天出个新协议就去看,最后反而越学越乱。其实更重要的是理清每个技术的定位和边界:它解决了什么问题?处在技术栈的哪一层?和其他技术是什么关系?

理解了这些,就不会被层出不穷的新概念带着走,才能搭出真正稳定、高效、易维护的Agent系统。


Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐