适用场景:Cursor IDE + AI Agent 协作开发
概览
| 维度 | MCP | Rule | Skill |
|---|---|---|---|
| 本质 | 外部能力扩展协议 | 持久化行为约束 | 按需加载的专项工作流 |
| 触发方式 | 自动(工具调用) | 自动(会话启动时注入) | 按需(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 始终遵循某种编码风格 | Rule(alwaysApply: true) |
仅在编辑 .ts 文件时提示某规范 | Rule(globs: **/*.ts) |
| 为某类复杂任务提供标准化执行流程 | Skill |
| 让 AI 访问数据库 / 调用 API | MCP |
| 跨项目复用的个人工作流 | Skill(存放在 ~/.cursor/skills/) |
| 团队共享的项目规范 | Rule 或 Skill(存放在 .cursor/ 目录,提交到 Git) |