ORANGE BOOK · CURSOR

第十章 MCP 与扩展能力


一、为什么需要 MCP

先看一个对比。

不用 MCP 时

你跟 Cursor 说:"帮我看一下 Notion 里那篇'番茄钟产品需求',然后照着写代码。"

Cursor 说:"我看不到你的 Notion,请把内容复制粘贴给我。"

你打开 Notion → 复制 → 粘贴 → 又打开 Slack 找设计稿 → 复制 → 粘贴…… 人工成了搬运工

用了 MCP 后

你跟 Cursor 说:"帮我看一下 Notion 里那篇'番茄钟产品需求',然后照着写代码。"

Cursor(通过 Notion MCP):

  • 自动搜索你 Notion 工作区里"番茄钟产品需求"。
  • 拉取页面内容。
  • 读理解后,开始写代码。

你的工作流变成"动嘴"。

MCP 的本质

MCP 是 Anthropic 在 2024 年发布的一个开源协议。它定义了一个"AI 和外部工具如何对话"的标准。

任何工具只要实现了 MCP 协议,Cursor / Claude Desktop / Continue / Cody 等都能"开箱即用"。

类比:MCP 之于 AI 工具,就像 USB 之于硬件——一个统一接口,连接所有东西。


二、MCP 的工作原理(30 秒科普)

不需要懂技术细节,但理解大致流程能帮你排查问题。

你(在 Cursor 里)
  ↓  自然语言指令
Cursor(理解你说什么)
  ↓  调用 MCP 工具
MCP Server(一个本地或云端的小程序)
  ↓  调用真实 API
Notion / Figma / GitHub / Postgres / ...
  ↓  返回数据
MCP Server  →  Cursor  →  你

每个 MCP Server 是一个独立小程序,跑在你电脑里(或云端)。 Cursor 通过 mcp.json 知道有哪些 MCP Server 可用。


三、安装 MCP 的两种方式

方式 1:从 Cursor Marketplace 一键装(推荐)

Cursor 3 内置了 Marketplace——一个"MCP 应用商店"。

  1. Cmd+Shift+P,输入 MCP Marketplace
  2. 浏览 / 搜索 MCP,比如 "GitHub"。
  3. 点 "Install"。
  4. 跟着提示填 token / 配置。
  5. 装好。

方式 2:手动编辑 mcp.json

进阶玩家用。 位置:

OS 路径
macOS ~/.cursor/mcp.json
Windows %APPDATA%\Cursor\mcp.json
Linux ~/.config/Cursor/mcp.json

打开后是一个 JSON:

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"],
      "env": {
        "NOTION_API_TOKEN": "你的 Notion Token"
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "你的 GitHub Token"
      }
    }
  }
}

每个 MCP 一个键,值里写"怎么启动这个 MCP 程序"。

存盘后重启 Cursor,新 MCP 生效。

方式 3:项目级 MCP

mcp.json 放在项目根目录的 .cursor/mcp.json,就只对这个项目生效。 适合"这个项目专属的 MCP",比如某个客户的 Postgres 连接。


四、10 个普通人优先装的 MCP

下面是按"普通人友好度"排序的 10 个 MCP。复制配置,跟着装。

MCP 1:Filesystem(文件系统)

用途:让 Agent 操作你电脑上指定文件夹的文件(默认 Cursor 只能看打开的项目)。

安装

"filesystem": {
  "command": "npx",
  "args": [
    "-y",
    "@modelcontextprotocol/server-filesystem",
    "/Users/me/Desktop",
    "/Users/me/Documents"
  ]
}

把后面两个路径换成你想授权的目录。

使用例子

读一下我桌面上"会议纪要 2026-04.docx",
帮我提取"待办"那部分,整理成 markdown 列表。

安全提醒:只授权"你愿意 AI 看的"目录。绝不要授权 ~/ 根目录


MCP 2:GitHub

用途:读 / 写 GitHub 仓库——查 issue、提 PR、看 commit、读 README。

前置:去 GitHub Settings → Tokens 生成一个 Personal Access Token(勾选 repo / read:org 权限)。

安装

"github": {
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-github"],
  "env": {
    "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxx"
  }
}

使用例子

@github 列一下 facebook/react 仓库里 "performance" 标签的 open issues,
按评论数排序,前 10 个。
@github 在我的仓库 my-pomodoro 里,
找上周所有 closed PR,
帮我写一段 changelog。

安全提醒:Token 等于密码,绝不要 commit 到 git。


MCP 3:Notion

用途:读 / 写你的 Notion 工作区。

前置

  1. Notion Integrations 创建一个 Internal Integration,拿 Token。
  2. 在你想让 AI 访问的 Notion 页面右上角"…" → "Connections" → 选你刚建的 Integration。

安装

"notion": {
  "command": "npx",
  "args": ["-y", "@notionhq/notion-mcp-server"],
  "env": {
    "NOTION_API_TOKEN": "ntn_xxxxxxxx"
  }
}

使用例子

@notion 找一下我工作区里所有标题含"OKR"的页面,
帮我汇总成一个总表(标题 / 创建日期 / 最近修改)。
@notion 把我刚才写的会议纪要追加到"日记"那个 database 里,
日期填今天。

安全提醒:Notion Integration 只能访问你显式 connect 的页面,所以默认就比较安全。


MCP 4:Postgres / Supabase

用途:让 AI 直接查 / 改你的数据库。

安装(Postgres)

"postgres": {
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://user:pass@localhost:5432/mydb"]
}

安装(Supabase)

"supabase": {
  "command": "npx",
  "args": ["-y", "@supabase/mcp-server-supabase"],
  "env": {
    "SUPABASE_URL": "https://xxx.supabase.co",
    "SUPABASE_ANON_KEY": "eyJxxxxxx"
  }
}

使用例子

@postgres 查一下 users 表里 created_at > '2026-04-01' 的总数。
@supabase 给 subscriptions 表加一个 paused 字段(boolean,默认 false)。
然后给我看一下迁移 SQL,我确认后再执行。

安全提醒

  • 强烈推荐用只读凭证——AI 一不小心 DROP TABLE 你哭都来不及。
  • 生产数据库不要直接连。先连本地副本或 staging。
  • 每次 schema 变更前先 --dry-run

MCP 5:Figma

用途:让 AI 读你的 Figma 设计稿,把"设计转代码"。

前置:去 Figma 个人设置生成一个 Personal Access Token。

安装

"figma": {
  "command": "npx",
  "args": ["-y", "figma-mcp-server"],
  "env": {
    "FIGMA_TOKEN": "figd_xxxxxxxx"
  }
}

使用例子

@figma 链接:https://www.figma.com/file/abc/login-page
读这个设计稿,帮我用 Tailwind + React 实现登录页,
保持像素级一致。

强大之处:你不必描述设计——AI 直接看你的 Figma 文件结构、颜色、字号、间距。


MCP 6:Playwright(浏览器自动化)

用途:让 AI 控制浏览器——打开网页、点击、填表、截图、运行测试。

安装

"playwright": {
  "command": "npx",
  "args": ["-y", "@playwright/mcp"]
}

第一次启动会下载浏览器(约 200MB)。

使用例子

@playwright 打开 https://my-pomodoro.vercel.app,
点"开始"按钮,等 3 秒,截图,
然后告诉我有没有视觉异常。
@playwright 帮我写一个 e2e 测试:
访问首页 → 输入用户名密码 → 点登录 → 确认跳转到 /dashboard。
跑一遍确认通过。

适用场景

  • E2E 自动化测试。
  • 自动填表 / 数据采集(合规前提下)。
  • 视觉回归(截图对比)。

MCP 7:Slack

用途:让 AI 读 / 发 Slack 消息。

前置:去 Slack API 创建一个 App,给它 chat:write / channels:read / im:read 等权限,安装到工作区,拿 Bot Token。

安装

"slack": {
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-slack"],
  "env": {
    "SLACK_BOT_TOKEN": "xoxb-xxxxxxxx",
    "SLACK_TEAM_ID": "T01XXXXX"
  }
}

使用例子

@slack 看一下 #engineering 频道今天的所有消息,
帮我整理成一份"今日重点"。
@slack 给 @张三 发条消息:"会议改到 14:00 了。"

安全提醒:Bot Token 能看 / 发它有权限的所有消息,谨慎给权限。


MCP 8:Stripe

用途:查 / 改你的 Stripe 账户——客户、订阅、支付、退款、产品。

前置:在 Stripe Dashboard 拿到 Secret Key(建议先用 test mode 的)。

安装

"stripe": {
  "command": "npx",
  "args": ["-y", "@stripe/mcp"],
  "env": {
    "STRIPE_SECRET_KEY": "sk_test_xxxxxxxx"
  }
}

使用例子

@stripe 给我看一下本月所有失败的 charge,
按金额从大到小,前 20 笔。
告诉我失败原因占比。
@stripe 创建一个新产品 "番茄钟 Pro",月费 ¥19.9。
返回 price_id。

安全提醒

  • test mode 优先:Test key(sk_test_...)在测试环境验证。
  • 生产 key 加只读权限:在 Stripe → Developers → API keys → restricted key,只勾"读"权限。

MCP 9:Linear(任务管理)

用途:让 AI 读 / 写 Linear 任务。

前置:Linear → Settings → API → Create personal API key。

安装

"linear": {
  "command": "npx",
  "args": ["-y", "@linear/mcp"],
  "env": {
    "LINEAR_API_KEY": "lin_api_xxxxxxxx"
  }
}

使用例子

@linear 列出本周分配给我的所有 in-progress 任务,按优先级排序。
@linear 把"修番茄钟 Safari 漂移"这个 issue 移到 "In Review",
评论一句"已开 PR #234"。

MCP 10:Browserbase(云端浏览器)

用途:在云端跑浏览器(不占你本地资源),适合 24 小时定时任务。

前置browserbase.com 注册,拿 API key。

安装

"browserbase": {
  "command": "npx",
  "args": ["-y", "@browserbase/mcp"],
  "env": {
    "BROWSERBASE_API_KEY": "bb_xxxxxxxx",
    "BROWSERBASE_PROJECT_ID": "xxx"
  }
}

使用例子

@browserbase 每天早上 9:00 自动打开 https://store.example.com/products/my-item,
检查价格,价格变化时给我发通知。

和本地 Playwright 的区别

  • 本地 Playwright:你电脑要开着、要装 200MB 浏览器、跑得快。
  • Browserbase:云端跑、按使用计费、可定时、可在 GitHub Actions 触发。

五、这 10 个 MCP 的"组合配方"

光装单个 MCP 用处一般,组合起来才有威力。下面 6 个组合,每个让你工作效率提升一截。

配方 1:Notion + GitHub

读 Notion 里的 PRD → 在 GitHub 自动开 epic issue → 自动拆子任务

@notion 读"番茄钟 Pro PRD" 这页。
@github 在 my-pomodoro 仓库开一个 epic issue:
- 标题:"番茄钟 Pro 开发"
- body:把 PRD 关键决策列出来
- 然后按 PRD 的功能点拆 5-10 个子任务,全部标 "feature" label

配方 2:Figma + 文件系统

看 Figma 设计 → 直接写代码到本地项目

@figma 链接:https://www.figma.com/file/xxx
@filesystem 在 ~/Code/my-pomodoro/components/
按设计实现 PaymentDialog.tsx,用 Tailwind。

配方 3:Postgres + GitHub

看数据库找慢查询 → 自动开 issue 修

@postgres 跑:
SELECT query, mean_time FROM pg_stat_statements
ORDER BY mean_time DESC LIMIT 10;

@github 把上面 Top 5 慢查询每个开一个 issue,
标 "performance" label,分配给 @张三。

配方 4:Playwright + 文件系统

自动化 e2e 测试 + 截图对比

@playwright 跑 tests/e2e/login.spec.ts。
@filesystem 把每一步截图保存到 ~/Desktop/test-screenshots/2026-04-19/。

配方 5:Slack + Linear + GitHub

早会时让 AI 帮你"汇报站立会"

@slack 我在 #standup 频道。
@linear 我现在 in-progress 的任务有哪些?
@github 我昨天 merge 了哪些 PR?

请把上面三个数据合并成一段 30 秒的"站立会发言"。

配方 6:Stripe + Notion

财务月报自动生成

@stripe 拉本月所有成功的 charge,按客户聚合。
@notion 在 "财务报表" database 里追加一行:
- 月份:2026-04
- 总收入:xxx
- Top 客户:xxx
- 退款数:xxx

六、Marketplace:MCP 的"应用商店"

6.1 怎么打开

Cmd+Shift+PMCP Marketplace

或者访问网页版 cursor.com/marketplace

6.2 你能在 Marketplace 找到什么

  • 官方 MCP:Cursor / Anthropic 维护的,质量最高。
  • 第三方 MCP:社区开发者贡献的,功能花样多。
  • Cursor Extensions:不止 MCP,还有"扩展"——比如新的 UI 主题、新的代码片段。
  • Subagents:预制的"AI 角色模板",比如"前端架构师 Subagent"、"安全审计 Subagent",调用时让 AI 扮演这个角色。
  • Hooks:自定义 Cursor 内部事件钩子(高级)。
  • Rules:别人分享的 Cursor Rules,可以一键导入到你的项目。

6.3 怎么挑 MCP

看三个维度:

  1. 官方与否:Marketplace 上有"Verified"标记的优先。
  2. 下载数:1k+ 下载的有人用过。
  3. 更新频率:超过 6 个月没更新的慎用。

七、MCP 的安全清单

MCP 的便利是**"AI 能动你的真实数据"**——这也是它最大的风险。

安全清单(每个都要做)

必做 1:最小权限

  • 给 MCP 的 Token 只勾"必须的"权限。
  • 比如 GitHub,只读用 read:repo,不要给 admin:repo_hook

必做 2:分环境

  • 个人 / 测试用 token:随便用。
  • 生产 token:单独管理,且只在云端 Cloud Agent 用,本地不存。

必做 3:不要把 mcp.json 提交到 git

  • 默认 ~/.cursor/mcp.json 不在你项目里。
  • 项目级 .cursor/mcp.json 要 git ignore。
  • mcp.json.example 占位,真实 token 用环境变量。

必做 4:定期审查 Token

  • 每 3 个月去各服务的 Token 列表看一眼,过期 / 没用的删掉。
  • 怀疑泄漏,立刻 revoke + 重建。

必做 5:MCP 的"可疑行为"开 log

  • 在 Cursor 设置 → MCP → 打开 "Log all MCP calls"。
  • 隔几天翻一下,看有没有"AI 跑了你没指示的操作"。

可选 6:审计开源 MCP 源码

  • 装第三方 MCP 前,去 GitHub 看一眼源码(很短,几百行)。
  • 看有没有"偷偷上传数据"的逻辑。
  • 有疑虑就别装。

八、MCP 故障排查

故障 1:MCP 装了但 Cursor 找不到

  • 检查 mcp.json 路径对不对。
  • 检查 JSON 语法(少逗号 / 多逗号)。
  • 重启 Cursor。

故障 2:MCP 启动报错

  • 看 Cursor 底部状态栏的"MCP"图标,点开看错误日志。
  • 常见原因:node 没装 / npx 找不到 / Token 错了。

故障 3:AI 不会主动用 MCP

  • 你直接 @mcp名 ... 触发。
  • 或者写规则文件让 AI"优先用 MCP 而不是搜索"。

故障 4:MCP 调用报权限错

  • 99% 是 Token 权限不够。
  • 去对应平台重新生成更高权限的 Token。

故障 5:MCP 调用太慢

  • MCP 启动有冷启动开销。
  • 第一次调用慢正常,后面应该快。
  • 如果一直慢,可能是 MCP 实现差(换一个)。

九、综合实战:给番茄钟 Pro 装一套 MCP

回到 第八章 "个人副业 SaaS 雏形:30 天能上线的产品" 那一节的番茄钟 Pro。 我们给它配一套真正"工程化"的 MCP。

装哪些

  1. GitHub:管理代码仓库、issues、PR。
  2. Supabase:数据库(用户、订阅、番茄记录)。
  3. Stripe:支付。
  4. Notion:产品规划文档。
  5. Linear:任务跟踪。
  6. Playwright:E2E 测试。
  7. Filesystem:本地脚本。

~/.cursor/mcp.json 完整配置

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/me/Code"
      ]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" }
    },
    "supabase": {
      "command": "npx",
      "args": ["-y", "@supabase/mcp-server-supabase"],
      "env": {
        "SUPABASE_URL": "https://xxx.supabase.co",
        "SUPABASE_ANON_KEY": "eyJxxx"
      }
    },
    "stripe": {
      "command": "npx",
      "args": ["-y", "@stripe/mcp"],
      "env": { "STRIPE_SECRET_KEY": "sk_test_xxx" }
    },
    "notion": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"],
      "env": { "NOTION_API_TOKEN": "ntn_xxx" }
    },
    "linear": {
      "command": "npx",
      "args": ["-y", "@linear/mcp"],
      "env": { "LINEAR_API_KEY": "lin_api_xxx" }
    },
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp"]
    }
  }
}

一段"复合提示词"演示

打开 Composer:

我们今天的目标:上线番茄钟 Pro 的支付功能。

请按下面顺序操作:

1. @notion 读"番茄钟 Pro PRD",找"支付"部分的需求。
2. @stripe(test mode)创建产品"番茄钟 Pro"和价格 $5/月。
3. @supabase 在 subscriptions 表加 stripe_subscription_id 字段。
4. @filesystem 在 ~/Code/pomodoro-pro/ 写支付页面 + webhook 处理代码。
5. @playwright 跑 e2e 测试:模拟用户下单 → 跳转 Stripe → 用测试卡支付 → 回跳成功。
6. @github 给上面所有改动开一个 PR,标题"feat: Stripe 支付集成"。
7. @linear 把 BLT-15 这个任务标记为 "In Review"。

完成后告诉我每一步的结果。如果某一步失败,停下问我。

按回车。

Cursor Agent 会串联使用 7 个 MCP完成全部工作。整个流程你只动嘴


十、MCP 的未来与你

MCP 协议的发展

  • 2024 年 11 月:Anthropic 发布 MCP 协议。
  • 2025 年初:Cursor / Continue / Cody 全部接入。
  • 2025 年中:MCP 工具数破 1000。
  • 2026 年:MCP 成为 AI 工具的"USB"标准,Claude / GPT / Gemini 全部原生支持。

你能做什么

  • 使用者:装现成 MCP,组合出你的工作流。
  • 进阶:改别人的 MCP,定制功能。
  • 高级:自己写 MCP(不到 100 行 Python / TypeScript),分享给社区。

写 MCP 比你想的简单——基本上就是"包一层 API + 暴露给 LLM"。 Anthropic MCP 文档 有详细教程。


本章一图回顾

MCP 是什么
═══════════════════════════════════════════════
  Model Context Protocol
  让 AI 工具能调用外部世界(Notion、Figma、DB...)

10 个普通人优先装
─────────────
  1. Filesystem        本地文件
  2. GitHub            代码 / Issue / PR
  3. Notion            知识库
  4. Postgres/Supabase 数据库
  5. Figma             设计稿
  6. Playwright        浏览器自动化
  7. Slack             沟通
  8. Stripe            支付
  9. Linear            任务
  10. Browserbase      云端浏览器

6 个组合配方
─────────────
  Notion + GitHub        PRD → 自动开 epic
  Figma + Filesystem     设计 → 代码
  Postgres + GitHub      慢查询 → 自动开 bug
  Playwright + FS        自动化 + 截图
  Slack + Linear + GH    站立会发言
  Stripe + Notion        财务月报

5 条安全清单
─────────────
  1. 最小权限
  2. 分环境
  3. 不提交 mcp.json
  4. 定期审查 Token
  5. 开 MCP log

下章预告

到这里你已经能用 Cursor 做"完整的项目"。最后一公里是"上线"——让你的作品真正给别人用上。下一章 第十一章 从作品到上线 教 Vercel 部署、Supabase 数据库、Stripe 收款、买域名、HTTPS、监控告警,外加一份"上线前 30 项检查清单"。