返回

Everything Claude Code 教程 6:MCP 配置与上下文管理

本文详解 Everything Claude Code 的 MCP 配置方法,包含上下文窗口优化、推荐 MCP 列表和懒加载策略。

教程概述

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 组合

系列导航