教程概述
MCP(Model Context Protocol)是连接 Claude Code 与外部服务的桥梁。正确配置 MCP 可以大幅扩展 Claude 的能力,但也需要谨慎管理上下文窗口。
你将学到
- ✅ MCP vs CLI 技能化的权衡
- ✅ MCP 安装与禁用流程
- ✅ 上下文窗口管理策略
- ✅ 推荐 MCP 列表
- ✅ 懒加载配置
什么是 MCP?
MCP(Model Context Protocol)是一种标准协议,让 Claude Code 能够直接与外部服务交互:
flowchart LR
subgraph Claude Code
A[Claude] --> B[MCP Client]
end
subgraph MCP Servers
C[GitHub]
D[Supabase]
E[Vercel]
F[Firecrawl]
end
B <--> C
B <--> D
B <--> E
B <--> F
MCP vs CLI 技能化
| 特性 | MCP | CLI 技能化 |
|---|---|---|
| 交互方式 | 直接 API 调用 | 命令行封装 |
| 上下文占用 | 较高(每个 MCP 占用工具槽) | 较低(按需加载) |
| 灵活性 | 结构化数据 | 自由格式 |
| 成本 | 始终占用上下文 | 仅执行时消耗 |
| 实时性 | 实时数据 | 可能需要刷新 |
建议:
- 高频使用服务 → 使用 MCP
- 低频使用服务 → 使用 CLI 技能化
MCP 安装流程
流程图
flowchart TD
A[选择 MCP Server] --> B{已有 npm 包?}
B -->|是| C[npx 安装]
B -->|否| D{HTTP 接口?}
D -->|是| E[HTTP 配置]
D -->|否| F[本地启动]
C --> G[配置到 settings.json]
E --> G
F --> G
G --> H[验证连接]
H --> I{成功?}
I -->|是| J[启用使用]
I -->|否| K[排查问题]
K --> A
配置位置
MCP 配置存储在 ~/.claude.json 中:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
},
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase@latest", "--project-ref=YOUR_REF"]
}
},
"projects": {
"disabledMcpServers": ["unused-mcp"]
}
}
安装命令
# 方法 1:在 Claude Code 中使用斜杠命令
/mcp
# 方法 2:手动编辑配置文件
vim ~/.claude.json
# 方法 3:通过插件安装
claude plugin install mcp-plugin-name
上下文窗口管理
问题:MCP 吃掉你的上下文
每个 MCP Server 会向 Claude 暴露一组工具,这些工具会占用你的 200k 上下文窗口:
flowchart LR
A[200k 上下文窗口] --> B[系统提示]
A --> C[MCP 工具描述]
A --> D[对话历史]
A --> E[工具结果]
B --> F[~20k]
C --> G[~30-50k]
D --> H[~80k]
E --> I[~50k]
style C fill:#ffcccc
管理规则
黄金法则:
- 启用的 MCP ≤ 10 个
- 活跃工具总数 ≤ 80 个
禁用未使用的 MCP
在 ~/.claude.json 中:
{
"projects": {
"disabledMcpServers": [
"ableton",
"magic",
"clickhouse"
]
}
}
使用 /mcp 检查状态
/mcp
# 输出示例
已启用的 MCP Servers (6/14):
✅ github (15 tools)
✅ supabase (8 tools)
✅ firecrawl (5 tools)
✅ memory (3 tools)
✅ vercel (12 tools)
✅ railway (6 tools)
已禁用的 MCP Servers (8/14):
⬜ ableton
⬜ magic
⬜ clickhouse
...
当前工具总数: 49/80
推荐 MCP 列表
核心推荐(必装)
| MCP | 工具数 | 用途 | 优先级 |
|---|---|---|---|
| GitHub | 15 | 仓库、Issue、PR 操作 | ⭐⭐⭐ |
| Supabase | 8 | 数据库操作、认证 | ⭐⭐⭐ |
| Memory | 3 | 跨会话记忆 | ⭐⭐ |
| Firecrawl | 5 | 网页抓取 | ⭐⭐ |
开发工具
| MCP | 工具数 | 用途 | 优先级 |
|---|---|---|---|
| Vercel | 12 | 部署管理 | ⭐⭐ |
| Railway | 6 | 部署管理 | ⭐⭐ |
| Cloudflare Docs | 3 | 文档查询 | ⭐ |
数据与分析
| MCP | 工具数 | 用途 | 优先级 |
|---|---|---|---|
| ClickHouse | 8 | 数据分析 | ⭐ |
| Sequential Thinking | 1 | 复杂推理 | ⭐⭐ |
创意工具
| MCP | 工具数 | 用途 | 优先级 |
|---|---|---|---|
| Magic | 5 | UI 生成 | ⭐ |
| Ableton | 10 | 音乐制作 | ⭐ |
完整配置示例
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
},
"supabase": {
"command": "npx",
"args": ["-y", "@supabase/mcp-server-supabase@latest", "--project-ref=YOUR_REF"]
},
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${FIRECRAWL_API_KEY}"
}
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
},
"vercel": {
"type": "http",
"url": "https://mcp.vercel.com"
},
"railway": {
"command": "npx",
"args": ["-y", "@railway/mcp-server"]
},
"cloudflare-docs": {
"type": "http",
"url": "https://docs.mcp.cloudflare.com/mcp"
},
"clickhouse": {
"type": "http",
"url": "https://mcp.clickhouse.cloud/mcp"
},
"magic": {
"command": "npx",
"args": ["-y", "@magicuidesign/mcp@latest"]
},
"ableton": {
"command": "uvx",
"args": ["ableton-mcp"]
}
},
"projects": {
"disabledMcpServers": ["ableton", "magic", "clickhouse"]
}
}
懒加载策略
问题
所有配置的 MCP 都会在启动时加载,即使你不使用它们。
解决方案 1:项目级配置
// 项目根目录 .claude.json
{
"mcpServers": {
// 只配置这个项目需要的 MCP
"supabase": {...}
}
}
解决方案 2:动态注入
使用别名按需启动:
# ~/.bashrc 或 ~/.zshrc
alias claude-github='claude --mcp github,supabase'
alias claude-deploy='claude --mcp vercel,railway'
alias claude-research='claude --mcp firecrawl,memory'
解决方案 3:技能化替代
将低频 MCP 替换为 CLI 技能:
# ~/.claude/commands/deploy.md
---
description: "部署到 Vercel"
---
运行以下命令部署:
`vercel --prod`
如果需要查看部署状态,运行:
`vercel list`
上下文管理配置示例
配置 1:轻量开发模式
{
"mcpServers": {
"github": {...},
"memory": {...}
}
}
// 总工具数: ~18
// 上下文占用: ~25k
配置 2:全栈开发模式
{
"mcpServers": {
"github": {...},
"supabase": {...},
"vercel": {...},
"firecrawl": {...},
"memory": {...}
}
}
// 总工具数: ~43
// 上下文占用: ~35k
配置 3:数据研究模式
{
"mcpServers": {
"clickhouse": {...},
"memory": {...},
"sequential-thinking": {...}
}
}
// 总工具数: ~12
// 上下文占用: ~20k
最佳实践
1. 定期审计 MCP 使用
# 每周检查一次
/mcp
# 禁用不常用的
# 编辑 ~/.claude.json
2. 分项目配置
项目 A (前端):
- github
- vercel
项目 B (后端):
- github
- supabase
- railway
项目 C (数据分析):
- clickhouse
- memory
3. 使用环境变量
{
"mcpServers": {
"github": {
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
# 在 shell 中设置
export GITHUB_TOKEN="ghp_xxxx"
小结
关键要点
- ✅ MCP 提供与外部服务的直接连接
- ✅ 限制启用的 MCP 数量(≤10)和工具数(≤80)
- ✅ 使用 disabledMcpServers 禁用未使用的 MCP
- ✅ 低频服务用 CLI 技能化替代
- ✅ 按项目配置不同的 MCP 组合
系列导航:
- ← 上一篇:教程 5:Subagents - 子代理架构与任务委托
- → 下一篇:教程 7:Rules 与 Memory - 持久化你的开发规范
- 返回:教程系列索引