MCP、Rule、Skill 三者的区别与联系

5 阅读5分钟

适用场景:Cursor IDE + AI Agent 协作开发


概览

维度MCPRuleSkill
本质外部能力扩展协议持久化行为约束按需加载的专项工作流
触发方式自动(工具调用)自动(会话启动时注入)按需(AI 识别场景后主动读取)
作用范围工具能力层思维约束层执行策略层
配置位置~/.cursor/mcp.json 或项目 mcp.json.cursor/rules/*.mdc.agents/skills/*/SKILL.md.cursor/skills/*/SKILL.md
持久性长期(服务进程)长期(每次会话注入)临时(单次任务加载)

一、MCP(Model Context Protocol)

是什么

MCP 是 Anthropic 提出的开放协议,让 AI 模型能够连接并调用外部工具与数据源。在 Cursor 中,MCP Server 以独立进程运行,AI 通过标准化接口调用它们。

解决什么问题

AI 模型天然是无状态的文字处理系统,MCP 打破了这个边界,赋予 AI 实际操作能力

  • 查询数据库、读写文件系统
  • 调用第三方 API(GitHub、Slack、Jira)
  • 执行代码、运行 Shell 命令
  • 访问实时数据(搜索、天气、股价)

核心特点

用户提问 → AI 决策 → 调用 MCP 工具 → 获取真实数据 → 生成回答
  • 双向通信:AI 不仅能读数据,还能写入和操作
  • 标准化:任何人都可以开发符合协议的 MCP Server
  • 隔离性:工具逻辑在独立进程中运行,不污染 AI 上下文

示例

// ~/.cursor/mcp.json
{
  "mcpServers": {
   "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

二、Rule(规则)

是什么

Rule 是写在 .cursor/rules/*.mdc 文件中的持久化行为约束,每次对话开始时自动注入 AI 的系统提示,影响 AI 在整个会话中的思维模式和输出风格。

解决什么问题

在没有 Rule 的情况下,AI 每次对话都是"全新"的,不了解:

  • 项目的技术栈和编码规范
  • 团队的架构决策和偏好
  • 业务领域的背景知识

Rule 的作用是将团队共识固化为 AI 的默认行为,无需每次重复说明。

核心特点

会话开始 → 自动注入匹配的 Rule → AI 整个会话遵循约束
  • 被动触发:无需用户主动请求,自动生效
  • 范围控制:可全局生效(alwaysApply: true)或仅对特定文件生效(globs: **/*.ts
  • 轻量简洁:建议 50 行以内,聚焦单一关注点

Rule 的两种模式

# 模式一:始终生效
---
description: 项目核心编码规范
alwaysApply: true
---

# 模式二:文件触发
---
description: TypeScript 类型规范
globs: **/*.ts
alwaysApply: false
---

示例

某个前端项目开发规范 development-quality.mdc 规定了:

  • 禁止使用 any 类型,必须明确定义类型。
  • 禁止使用魔法数字和数组索引常量,必须定义有语义的常量。
  • TODO 项必须用 // TODO: ... 标注。

三、Skill(技能)

是什么

Skill 是存放在 .agents/skills/*/SKILL.md(或 .cursor/skills/*/SKILL.md)中的专项工作流指南,AI 在识别到特定任务场景时,主动读取并按照其中的步骤和模板执行。

解决什么问题

Rule 负责"AI 平时应该怎样思考",而 Skill 解决"AI 执行特定复杂任务时应该遵循什么流程":

  • 如何做代码 Review(分角色、分优先级给出反馈)
  • 如何做产品需求分析(生成 PRD、用户故事、状态图)
  • 如何生成标准化 commit message
  • 如何执行 PDF 处理(调用哪个库、验证步骤是什么)

核心特点

用户请求 → AI 识别匹配场景 → 读取 SKILL.md → 按流程执行 → 输出结构化结果
  • 主动触发:AI 根据描述(description)判断是否需要读取该 Skill
  • 按需加载:不会默认占用上下文,只在需要时读取
  • 流程化:包含详细的步骤、模板、示例,指导 AI 完成复杂任务
  • 可复用:Personal Skill 跨项目复用,Project Skill 随代码库共享

Skill 的目录结构

Skills 会自动从以下位置加载:

位置作用域
.agents/skills/项目级(开放标准推荐)
.cursor/skills/项目级
~/.cursor/skills/用户级(全局)

推荐的目录结构:

.agents/
└── skills/
    └── deploy-app/
        ├── SKILL.md           # 主指令文件(必须)
        ├── scripts/           # 可执行脚本(可选)
        │   ├── deploy.sh
        │   └── validate.py
        ├── references/        # 按需加载的参考文档(可选)
        │   └── REFERENCE.md
        └── assets/            # 模板、配置等静态资源(可选)
            └── config-template.json
目录用途
scripts/Agent 可执行的脚本(Bash、Python 等)
references/详细参考文档,Agent 按需加载,节省上下文
assets/模板、配置文件等静态资源

示例

某个全栈项目的研发 Skill development-ops 定义了并行子 Agent 模式:

  • API Developer Agent:设计 RESTful 接口
  • Frontend Agent:实现 React 组件
  • Test Agent:生成单元测试和集成测试
  • Security Agent:扫描安全漏洞

三者的层次关系

graph TD
graph TD
    A[用户请求] --> B[Rule - 约束层]
    B --> C[Skill - 策略层]
    C --> D[MCP - 能力层]
    
    B -.- B1[始终生效,规范 AI 的思维方式、输出格式、技术选型偏好]
    C -.- C1[按需加载,提供特定任务的详细执行流程和输出模板]
    D -.- D1[调用真实工具,获取/操作外部数据]
    
    style A fill:#e1f5fe
    style B fill:#fff3e0
    style C fill:#e8f5e9
    style D fill:#fce4ec

协作关系:一个完整的例子

任务:"帮我 Review 这个 PR 并写入评论"

1. Rule 生效
   └─ AI 自动遵循编码规范

2. Skill 触发
   └─ AI 识别到"代码 Review"场景,读取 development-ops Skill
   └─ 按照 API / Frontend / Test / Security 四个子角色分析代码

3. MCP 调用
   └─ AI 调用 GitHub MCP Server
   └─ 获取 PR diff → 写入 Review 评论 → 请求合并

三者分工清晰,缺一不可:

  • 没有 Rule:AI 不知道项目用 TypeScript,可能给出 JavaScript 建议
  • 没有 Skill:AI Review 代码时没有固定流程,输出随机且不标准
  • 没有 MCP:AI 只能"说"要做什么,无法真正操作 GitHub

如何选择?

需求场景使用什么
强制 AI 始终遵循某种编码风格RulealwaysApply: true
仅在编辑 .ts 文件时提示某规范Ruleglobs: **/*.ts
为某类复杂任务提供标准化执行流程Skill
让 AI 访问数据库 / 调用 APIMCP
跨项目复用的个人工作流Skill(存放在 ~/.cursor/skills/
团队共享的项目规范RuleSkill(存放在 .cursor/ 目录,提交到 Git)