Skip to content

05 - MCP 服务体系设计 ​

1. 定位 ​

MCP(Model Context Protocol)服务器通过标准协议连接外部工具和服务,扩展 Claude Code 的能力边界。

核心定位:MCP 是胶水,不是大脑。 它负责连接和数据搬运,不负责决策。决策由 Prompt/Skill/SubAgent 完成。

2. 关键约束 ​

  • 同时激活不超过 5 个 MCP — 每个 MCP 都向上下文注入工具定义,消耗 token
  • 总 MCP 上下文控制在约 20K token 以内 — 超出会挤压有效工作空间
  • Tool Search 延迟发现 — Claude Code 默认启用 Tool Search Tool,MCP 工具最多加载上下文的 10%,其余按需延迟发现。内部测试显示可节省约 85% token,Opus 4 工具调用成功率从 49%→74%,Opus 4.5 从 79.5%→88.1%。可在 MCP 配置中对不常用工具设置 defer_loading: true 标记为可发现但不预加载
  • 禁用未使用的 MCP — 即使不调用,工具定义仍然占用上下文
  • MCP 每次会话都占 context,Skill 按需加载 — 能用 Skill 解决的不用 MCP
  • 审慎对待第三方 MCP — 第三方 MCP 服务器存在 prompt injection 风险,优先使用官方或经过审计的服务器
  • 显式禁用项目 MCP 自动加载 — 在 settings.json 中设置 "enableAllProjectMcpServers": false。.mcp.json 存在于 git 中,恶意或被入侵的仓库可能通过 .mcp.json 注入 MCP 服务器。显式禁用后,每个项目 MCP 需要手动确认启用

3. MCP vs Skill 的边界 ​

场景用 MCP用 Skill
查询实时数据库YesNo
操作浏览器做 E2E 测试YesNo
检索第三方库最新文档YesNo
代码审查流程NoYes
生成 commit messageNoYes
编码规范检查NoYes(或 Hook)
项目脚手架生成NoYes

判断标准:需要访问外部实时系统 → MCP,固化的内部流程 → Skill

4. React + Node.js 全栈推荐 MCP 清单 ​

4.1 P0 — 强烈推荐(日常必用) ​

Context7 — 实时框架文档 ​

解决 AI 知识截止日期问题。Next.js、React、Prisma 等快速迭代框架的最新文档。

json
{
  "context7": {
    "command": "npx",
    "args": ["-y", "@upstash/context7-mcp@latest"]
  }
}

使用场景:

  • 用到框架新 API 时:"用 Context7 查一下 Next.js 15 的 Server Actions 用法"
  • 遇到废弃警告时:"查一下 React 19 中 forwardRef 的替代方案"

Playwright — 浏览器自动化 ​

E2E 测试和 UI 验证,使用无障碍树(非截图),更高效。

json
{
  "playwright": {
    "command": "npx",
    "args": ["@playwright/mcp@latest"]
  }
}

使用场景:

  • 验证前端页面渲染是否正确
  • 自动化 E2E 测试执行
  • 调试 UI 交互问题

4.2 P1 — 推荐(按需启用) ​

PostgreSQL — 数据库操作 ​

直接在 Claude Code 中查询和验证数据库。

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

使用场景:

  • 验证 Prisma migration 是否正确执行
  • 调试数据问题(直接查询验证)
  • Schema 设计时检查索引和约束

Sequential Thinking — 链式推理 ​

复杂问题的结构化思考,减少幻觉。

json
{
  "sequential-thinking": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
  }
}

使用场景:

  • 复杂架构决策(多方案权衡)
  • 难以定位的 Bug 分析
  • 大型功能的分步规划

Figma MCP — 设计稿到代码 ​

从 Figma 设计文件中提取结构化设计信息,实现 Design-to-Code 工作流。

配置(官方 Remote MCP Server,无需桌面端):

bash
# 项目级安装
claude mcp add --transport http figma https://mcp.figma.com/mcp

# 全局安装(跨项目共享,推荐)
claude mcp add --scope user --transport http figma https://mcp.figma.com/mcp

# 首次使用:/mcp → 选择 figma → Authenticate 完成 OAuth 授权

也可写入 .mcp.json 供团队共享:

json
{
  "figma": {
    "type": "http",
    "url": "https://mcp.figma.com/mcp"
  }
}

核心工具(13 个中最常用的 6 个):

工具功能
get_design_context提取选中图层的结构化表示(默认 React + Tailwind),包含样式和布局
get_metadata获取大文件节点地图,大型设计应先调用此工具再精准获取子节点
get_screenshot捕获视觉截图,用于实现后的 1:1 对比
get_code_connect_map获取 Figma 组件→代码组件的映射关系
add_code_connect_map建立/更新组件映射,让 AI 遇到设计组件实例时直接导入生产组件
create_design_system_rules自动生成设计系统规则文件,约束 AI 代码生成行为

其他工具:get_variable_defs(design tokens)、generate_figma_design(Code to Canvas,将代码 UI 推送到 Figma,仅 Remote Server 支持)等。

使用场景:

  • 从 Figma 设计稿生成页面代码(粘贴 Figma 链接即可)
  • 提取 design tokens 生成 Tailwind 配置或 CSS 变量
  • Code Connect:AI 遇到设计中的组件实例时直接导入已有生产组件
  • 双向迭代:代码→Figma→精修→拉回代码

注意事项:

要点说明
速率限制Dev/Full 席位:约 10-20 次/分,200-600 次/天;Starter 计划:仅 6 次/月
Token 超限get_design_context 对大型设计可能返回 35 万+ token,先用 get_metadata 获取节点地图再精准获取子节点
Figma 文件质量语义化命名、Auto Layout、组件化、变量定义——直接决定 MCP 输出质量
安全优先使用 Figma 官方 MCP Server,第三方方案曾有 RCE 漏洞

详细的 UI 开发工作流配合见 doc-11 §4.3 和 §5。

4.3 P2 — 可选(特定场景) ​

GitHub MCP — PR/Issue 管理 ​

替代手动切换到 GitHub 网页。

json
{
  "github": {
    "type": "http",
    "url": "https://api.githubcopilot.com/mcp",
    "headers": {
      "Authorization": "Bearer ${GITHUB_PAT}"
    }
  }
}

Memory — 跨会话记忆 ​

知识图谱存储,跨会话保持记忆。

json
{
  "memory": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-memory"],
    "env": {
      "MEMORY_FILE_PATH": "./.claude/memory.jsonl"
    }
  }
}

Codex MCP — 异构模型审查 ​

跨模型族的反证审查器。在高风险变更的设计/实施/验收节点调用 OpenAI Codex,获取异构"第二意见",补足同模型体系的确认偏差。

配置(一次性,用户级):

bash
# 前置:安装 Codex CLI 并认证
npm i -g @openai/codex
export OPENAI_API_KEY='your_key'
printenv OPENAI_API_KEY | codex login --with-api-key

# 注册 MCP(仅需一次)
claude mcp add --scope user codex -- codex mcp-server

# 验证
claude mcp list

使用原则:

  • 门禁触发,不常驻 — 仅在高风险变更时启用(认证/支付/数据迁移/核心架构),日常 CRUD 不调用
  • 反证视角,不做决策 — Codex 提供风险假设和反例,人做最终仲裁,符合"胶水不是大脑"
  • 按需启停 — 不计入日常 5 个 MCP 配额,用完即可 claude mcp remove codex 或下次按需重新启用
  • 注意数据外发 — 代码会发送到 OpenAI API,评估隐私/合规要求

调用模板(三个关键节点):

节点调用时机Prompt 示例
设计关方案确定前用 Codex 审查这个架构方案,列出风险假设和反例
实施关核心代码完成后用 Codex 审查 git diff,找出可能导致崩溃或数据丢失的场景
验收关合并前用 Codex 做最终安全审查,列出遗漏的边界条件

成本提示: 额外产生 OpenAI API 费用。对个人开发者,建议先做 2 周试点,记录发现问题数和误报率,评估 ROI 后决定是否长期启用。

风险与缓解:

风险缓解
结论冲突(Claude vs Codex 意见相反)人工仲裁,参考三会话隔离审查模式(食谱 04 §6)
成本失控门禁触发 + 限制上下文大小(只传 diff,不传全量代码)
过度依赖"第二意见"≠"最终正确",始终由人做最终决策

5. .mcp.json 配置模板 ​

项目根目录的 .mcp.json(Git 追踪,团队共享):

json
{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp@latest"]
    },
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}

用户级配置 ~/.claude.json(个人全局):

json
{
  "mcpServers": {
    "sequential-thinking": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
    }
  }
}

原则:项目共用的 MCP 放 .mcp.json,个人偏好的 MCP 放 ~/.claude.json。

6. MCP 管理命令 ​

bash
# 添加 MCP
claude mcp add context7 npx -- -y @upstash/context7-mcp@latest

# 查看已配置的 MCP
claude mcp list

# 移除 MCP
claude mcp remove context7

# 添加到项目级(默认)vs 用户级
claude mcp add --scope project context7 ...
claude mcp add --scope user sequential-thinking ...

作用域优先级: local(会话级)> project(.mcp.json)> user(~/.claude.json)。同名 MCP 服务器,高优先级层级的配置胜出。

7. 性能与成本考量 ​

按需启用策略 ​

不是所有 MCP 都需要一直开着:

日常开发:Context7(查文档)
前端调试:+ Playwright
数据库工作:+ PostgreSQL
架构设计:+ Sequential Thinking
发布流程:+ GitHub

建议在 .mcp.json 中只配置最常用的 2 个,其他通过 claude mcp add 临时启用。

MCP 故障处理 ​

故障表现处理
MCP 服务器启动失败会话启动时报错检查 npx 版本和网络,或临时 remove
MCP 调用超时工具调用长时间无响应检查外部服务连通性
MCP 连接静默断开工具突然不可用,无显式报错输入 /mcp 检查连接状态,必要时重启会话
MCP 返回错误数据AI 基于错误信息做判断让 AI 验证 MCP 返回内容的合理性
上下文被 MCP 挤占AI 开始"忘记"之前的指令减少同时启用的 MCP 数量

8. 与其他子系统的关系 ​

CLAUDE.md:MCP 的使用规则写在 CLAUDE.md 中
  如:"使用 Context7 查询框架文档时,指定具体版本号"

Skills:Skill 内部可以指导何时调用 MCP
  如:/plan Skill 内部 "使用 Sequential Thinking 分析方案"

SubAgents:子代理可以调用 MCP
  如:Explore Agent 可以调用 Context7 查文档

Hooks:Hooks 不直接调用 MCP
  Hooks 是确定性脚本,不经过 Claude 的工具调用机制

Codex MCP:作为 P2 异构审查器,与 /review Skill 互补
  如:高风险变更时 /review 先做内部审查,再用 Codex 做异构复审

面向个人开发者的 AI 辅助编程工程化方案