MCP 和 Agent Skill 到底有什么区别?
很多人第一次看到 MCP 和 Agent Skill,会觉得它们都在给 Agent 增强能力,所以容易把两者混在一起。其实它们不是一类东西,也不是谁替代谁。MCP 更像工具和数据的标准接口;Skill 更像一份可复用的操作手册,告诉 Age
很多人第一次看到 MCP 和 Agent Skill,会觉得它们都在给 Agent 增强能力,所以容易把两者混在一起。其实它们不是一类东西,也不是谁替代谁。MCP 更像工具和数据的标准接口;Skill 更像一份可复用的操作手册,告诉 Agent 拿到工具之后按什么步骤完成任务。
这篇文章用更通俗的方式讲清楚:MCP 和 Skill 各自解决什么问题、为什么经常一起出现、真实项目里应该怎么搭配。
一、先说结论:MCP 是“手”,Skill 是“操作手册”
MCP 解决的是外部连接能力。Agent 想读文件、查数据库、调用搜索接口、访问企业系统,都需要有一套标准方式把这些能力接进来。MCP 就是为这件事服务的。
Skill 解决的是流程沉淀能力。Agent 有了读文件、查数据库、运行脚本这些工具以后,面对复杂任务仍然可能不知道先做什么、后做什么、用什么标准判断。Skill 就是把这些经验、步骤、模板、脚本打包起来。
所以最容易记的说法是:MCP 让 Agent 能做事;Skill 让 Agent 会做事。
二、MCP:把外部工具和数据标准化接入
MCP 的核心价值是标准化。过去每接一个工具,都要单独写一套适配逻辑:数据库一套、文件系统一套、搜索接口一套、内部业务系统又一套。工具多了以后,维护成本会很高。
MCP 把这些外部能力包装成 Server,再通过 Client 提供给 AI 应用。模型不需要关心底层是 HTTP、数据库连接,还是本地文件系统;它只需要看到统一的工具描述和参数结构。
在 MCP 里,常见能力主要有三类:Tools 用来执行动作,比如查库、读文件、发请求;Resources 用来提供上下文,比如文件内容、数据库记录;Prompts 用来复用提示模板。
从工程角度看,MCP 更靠近“基础设施层”。它关心的是连接、协议、发现、调用、权限和结果返回。
三、Agent Skill:把任务流程打包成可复用模块
一个 Skill 通常由 SKILL.md、脚本、参考资料和模板组成
Skill 不是简单的一段提示词。一个 Skill 通常是一个文件夹,里面至少有一份 SKILL.md,里面写清楚技能名称、适用场景、执行步骤和输出要求。复杂一点的 Skill 还会带脚本、参考文档、模板、示例文件。
比如一个“代码审查 Skill”,可以在 SKILL.md 里写清楚审查流程:先读取改动文件,再检查安全问题,再检查性能问题,最后按固定模板输出报告。如果团队有自己的审查规范,也可以放到 references 目录里;如果要做自动扫描,可以放脚本到 scripts 目录里。
Skill 的好处是把重复经验沉淀下来。你不用每次都在提示词里说“请先检查安全漏洞,再检查性能问题,再按这个格式输出”。只要 Skill 写好,Agent 在遇到相关任务时就能按流程做。
更重要的是,Skill 通常采用按需加载:启动时只让 Agent 看到技能名和描述;当任务匹配时再加载完整的 SKILL.md;执行时如果需要脚本或模板,再继续读取相关文件。这样既能沉淀复杂知识,又不会一开始就把所有内容塞进上下文。
四、两者的核心区别
MCP 和 Skill 的区别可以从四个角度理解。
第一,解决的问题不同。MCP 解决“怎么访问外部系统”;Skill 解决“怎么完成某类任务”。
第二,粒度不同。MCP 通常是一个个原子工具,比如 read_file、query_database、send_message;Skill 通常是一套完整流程,比如代码审查、投研报告、合同审查、数据分析。
第三,加载方式不同。MCP 会把工具描述和 schema 暴露给模型,让模型知道有哪些工具可以调用;Skill 会先暴露简短描述,命中任务后再加载完整的工作说明。
第四,风险边界不同。MCP 可能真的执行外部动作,所以要做权限、白名单、参数校验和用户确认;Skill 可能影响 Agent 的行为流程,所以要防止描述过宽、误触发、脚本不安全或流程过时。
五、代码审查场景:Skill 负责排流程,MCP 负责干活
用一个代码审查场景来理解最直观。用户说:“帮我审查这次提交的代码。”Agent 会先判断这个任务适合使用 code-review Skill,于是加载这个 Skill 的说明。
SKILL.md
---
name: code-review
description: 对代码变更做审查,重点检查 bug、安全风险、性能问题和可维护性。
---
# 代码审查流程
1. 读取本次提交涉及的文件和 diff。
2. 识别变更影响范围,区分核心逻辑、配置、测试和文档。
3. 检查安全风险,例如鉴权绕过、敏感信息泄露、SQL 注入。
4. 检查性能风险,例如重复查询、循环调用、无缓存热点路径。
5. 按 references/review_report.md 模板输出审查报告。这段 Skill 只是在告诉 Agent “怎么审查”。但它自己并不能读文件,也不能查 Git diff。真正执行读取动作时,Agent 仍然需要调用 MCP 提供的工具。
# Skill 说:先读取本次提交涉及的文件
# Agent 发现 MCP 有 query_git_diff 和 read_file 工具,于是调用它们
diff = mcp_client.call_tool("query_git_diff", {
"base": "main",
"target": "feature/login-fix"
})
code = mcp_client.call_tool("read_file", {
"path": "src/auth/login.py"
})这就是两者的分工:Skill 定义流程,MCP 提供动作。Skill 像项目经理,告诉 Agent 按什么步骤做;MCP 像专业工人,负责把每一步真正执行出来。
六、什么时候只用 MCP?什么时候只写 Skill?
如果你的问题是“Agent 连接不到某个系统”,比如不能查数据库、不能读企业知识库、不能调内部接口,那优先做 MCP。因为此时缺的是外部能力接入。
如果你的问题是“Agent 每次都有工具,但结果不稳定”,比如代码审查漏项、报告格式乱、数据分析没有固定步骤,那优先写 Skill。因为此时缺的是流程、标准和模板。
如果是复杂业务,通常两个都需要。比如让 Agent 写一份投研报告,MCP 负责连接行情数据、公告系统、新闻源;Skill 负责规定报告结构、分析顺序、风险检查和输出格式。
七、再看一个更贴近业务的组合例子
假设你要做一个“竞品分析 Agent”。只用 MCP,它能查网页、拉数据、读文件,但它未必知道竞品分析该按什么框架写;只用 Skill,它知道分析框架,但没有数据来源,也只能空写。
更合理的做法是:Skill 写清楚竞品分析流程,MCP 提供搜索、数据库、文档读取、表格生成等能力。
SKILL.md
---
name: competitor-analysis
description: 当用户需要分析竞品、产品差异、市场定位和增长策略时使用。
---
# 竞品分析流程
1. 明确分析对象和目标用户。
2. 通过 MCP 搜索工具收集公开资料。
3. 读取内部资料库中的历史分析报告。
4. 按“产品功能、定价、渠道、用户评价、风险点”五个维度整理。
5. 使用 assets/report_template.md 输出结构化报告。这个例子里,Skill 决定报告怎么写,MCP 决定资料怎么拿。两者结合以后,Agent 才既有方法,也有数据。
八、生产环境别忽略安全边界
MCP 和 Skill 都能增强 Agent,但增强能力也意味着风险变大。MCP 可能执行真实动作,比如删除文件、发送邮件、修改数据库;Skill 可能改变 Agent 的行为方式,比如让它优先执行某个脚本、跳过某些检查。
生产环境里,MCP 要特别注意工具权限、参数校验、用户确认和审计日志。Skill 要特别注意描述边界、脚本来源、依赖版本和触发条件。
一个比较稳妥的做法是:读操作默认允许;写操作需要更严格的权限;高风险动作必须二次确认;所有工具调用都要记录 tool name、参数、执行结果和用户确认信息。
九、面试里怎么一句话讲清楚?
可以这样回答:MCP 和 Agent Skill 不是同类概念。MCP 解决 Agent 如何连接外部工具、数据和系统,属于能力接入层;Skill 解决 Agent 拿到这些能力后,如何按稳定流程完成具体任务,属于知识和流程层。MCP 的粒度更像一个个工具调用,Skill 的粒度更像完整工作流。实际项目里,两者经常一起用:Skill 编排流程,MCP 提供工具。
这句话能把定位、粒度和配合方式都讲清楚,比单纯背“一个是协议,一个是技能”更容易让人听懂。
要点速读
很多人第一次看到 MCP 和 Agent Skill,会觉得它们都在给 Agent 增强能力,所以容易把两者混在一起。其
- 很多人第一次看到 MCP 和 Agent Skill,会觉得它们都在给 Agent 增强能力,所以容易把两者混在一起
- 其
- 更多细节仍在持续更新中