Claude Code MCP装与不装
概述
MCP (Model Context Protocol) 是一个开源标准协议,允许 Claude Code 连接外部服务和数据源。本文档介绍 MCP 的安装配置方法、使用技巧,以及如何在功能扩展和上下文开销之间取得平衡。
ℹ适用场景
建议优先安装 Context7 和 Exa 两个核心 MCP,其他 MCP 按需临时添加,以平衡功能扩展与上下文开销。
MCP 协议简介
MCP (Model Context Protocol) 是一个开源标准协议,用于实现 AI 工具与外部服务的集成。通过 MCP,Claude Code 可以连接数据库、API、问题跟踪系统等外部资源,显著扩展其能力边界。
flowchart LR
A[Claude Code] --> B[MCP 协议]
B --> C[GitHub]
B --> D[数据库]
B --> E[Exa 搜索]
B --> F[Context7 文档]
B --> G[其他服务]
核心能力
- 集成问题跟踪系统:从 JIRA 读取需求并在 GitHub 创建 PR
- 分析监控数据:检查 Sentry、Statsig 等服务的使用情况
- 查询数据库:基于 PostgreSQL 数据库查找用户信息
- 实时搜索:通过 Exa 获取最新技术文档和代码示例
安装 MCP Server
远程 HTTP 服务器
HTTP 传输是连接远程 MCP 服务器的推荐方式。
# 基本语法
claude mcp add --transport http <name> <url>
# 连接 GitHub
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
# 带认证头
claude mcp add --transport http secure-api https://api.example.com/mcp \
--header "Authorization: Bearer your-token"
💡HTTP 传输优势
HTTP 传输适合远程服务,无需本地安装依赖,启动速度快,适合团队共享配置。
本地 stdio 服务器
stdio 服务器以本地进程运行,适合需要直接系统访问的工具。
# 基本语法
claude mcp add [options] <name> -- <command> [args...]
# 添加 Context7
claude mcp add --transport stdio context7 -- npx -y @upstash/context7-mcp
# 添加 Exa
claude mcp add --transport http exa https://mcp.exa.ai/mcp
⚠Node.js 依赖
stdio 传输的 npx 命令需要本地安装 Node.js 环境,首次运行会自动下载依赖包。
从 JSON 配置添加
# HTTP 服务器
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp"}'
# stdio 服务器
claude mcp add-json context7 '{"type":"stdio","command":"npx","args":["-y","@upstash/context7-mcp"]}'
管理 MCP Server
常用命令
# 列出所有已配置的服务器
claude mcp list
# 获取特定服务器详情
claude mcp get github
# 删除服务器
claude mcp remove github
在 Claude Code 会话中使用 /mcp 命令可以检查服务器状态和完成 OAuth 认证。
配置作用域
MCP 服务器支持三个作用域级别:
| 作用域 | 存储位置 | 适用场景 |
|---|
| local | ~/.claude.json | 个人开发、实验性配置 |
| project | .mcp.json | 团队共享、项目特定工具 |
| user | ~/.claude.json | 跨项目的个人工具 |
# 添加到不同作用域
claude mcp add --transport http stripe --scope local https://mcp.stripe.com
claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
ℹ作用域选择建议
个人实验性 MCP 使用 local 作用域,团队共享的项目工具使用 project 作用域,跨项目的个人工具使用 user 作用域。
项目级配置文件
在项目根目录创建 .mcp.json 文件,可与团队共享配置:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
},
"exa": {
"command": "npx",
"args": ["-y", "exa-mcp-server"],
"env": {
"EXA_API_KEY": "${EXA_API_KEY}"
}
}
}
}
💡环境变量
配置文件支持 ${VAR} 和 ${VAR:-default} 语法,敏感信息可通过环境变量注入。
触发 MCP 工具
提示词触发
在提示词末尾添加 use <mcp名称> 可明确指定使用哪个 MCP 工具,避免 Claude Code 自动选择时加载不必要的工具定义,有效降低 Token 占用。
# 使用 Exa 搜索
> "查找 Spring Boot 3.2 的配置方式 use exa"
# 使用 Context7 查询文档
> "Vue3 组合式 API 的 watch 用法 use context7"
# 使用 GitHub MCP
> "查看 PR #123 的评论 use github"
触发原理
Claude Code 默认会将所有已配置 MCP 的工具定义加载到上下文中,当 MCP 数量较多时会占用大量 Token。通过 use <mcp名称> 明确指定后,Claude Code 只加载指定 MCP 的工具定义。
| 方式 | Token 占用 | 适用场景 |
|---|
| 自动选择 | 较高 | MCP 数量少、不确定用哪个 |
| use 指定 | 较低 | 明确知道需要哪个 MCP |
💡节省 Token
配置多个 MCP 时,建议养成使用 use 指定的习惯。
Exa 搜索引擎
Exa 是专为 AI 优化的搜索 API,提供实时网络搜索和代码检索能力,返回结构化 JSON 数据供 LLM 直接使用。
解决 WebFetch 403 问题
Claude Code 内置的 WebFetch 工具本质上是直接爬取网页内容,许多网站会检测并拦截此类请求,返回 403 Forbidden 错误。Exa 通过专业的搜索基础设施获取内容,绕过了这一限制:
| 方式 | 原理 | 403 问题 |
|---|
| WebFetch | 直接爬取目标网页 | 经常被拦截 |
| Exa | 通过搜索 API 获取已索引内容 | 不受影响 |
💡推荐做法
遇到 WebFetch 无法访问的网站时,改用 Exa 搜索获取相关内容。
安装配置
# 获取 API Key:访问 https://exa.ai 注册
# 添加 Exa MCP
claude mcp add --transport stdio --env EXA_API_KEY=your-key exa -- npx -y exa-mcp-server
提供的工具
| 工具 | 功能 |
|---|
web_search_exa | 网络搜索,获取最新信息 |
get_code_context_exa | 代码上下文搜索,支持 GitHub 和 StackOverflow |
company_research_exa | 公司研究和商业信息 |
使用示例
# 搜索最新技术文档
> "搜索 Spring Boot 3.2 的最新配置方式 use exa"
# 查找代码示例
> "在 GitHub 上搜索 Vue3 组合式 API 的最佳实践 use exa"
# 获取实时信息
> "搜索 Java 21 虚拟线程的性能基准测试 use exa"
MCP 上下文开销陷阱
问题背景
每个 MCP Server 的工具定义会占用 2000-5000 tokens,安装 5 个 MCP 可能消耗 10000+ tokens 的上下文空间,直接影响可用对话长度和响应质量。
⚠上下文开销
每个 MCP 的工具定义会占用 2000-5000 tokens,过多的 MCP 配置会显著减少可用对话长度。
不装 MCP 的问题
完全不安装 MCP 会限制 Claude Code 的能力边界:
| 场景 | 无 MCP 的限制 |
|---|
| 获取最新文档 | WebFetch 频繁遭遇 403,知识库截止到训练日期 |
| 代码搜索 | 无法访问 GitHub、StackOverflow 的实时内容 |
| 框架升级 | 无法获取最新版本的 API 变更和迁移指南 |
| 问题排查 | 无法搜索最新的 issue 和解决方案 |
推荐的最小化配置
建议只安装以下两个高价值 MCP,平衡功能扩展与上下文开销:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
},
"exa": {
"command": "npx",
"args": ["-y", "exa-mcp-server"],
"env": {
"EXA_API_KEY": "${EXA_API_KEY}"
}
}
}
}
| MCP | 核心价值 | Token 开销 |
|---|
| Context7 | 获取框架官方文档的最新内容 | 约 2500 |
| Exa | 实时网络搜索,绕过 403 限制 | 约 3000 |
💡按需启用
其他 MCP(如 GitHub、数据库)可在需要时临时添加,用完后移除。
查看上下文占用
使用 /context 命令可以实时查看当前会话的上下文使用情况:
输出示例:
Context Usage:
System prompt: 8,234 tokens (4.1%)
MCP tools: 12,456 tokens (6.2%) # MCP 工具定义占用
Conversation: 45,678 tokens (22.8%)
Available: 133,632 tokens (66.9%)
Total: 200,000 tokens
通过此命令可以:
- 监控 MCP 工具定义的实际 Token 消耗
- 评估是否需要移除不常用的 MCP
- 在长对话前检查剩余可用空间
ℹ定期检查
建议在开始长对话前使用 /context 命令检查上下文占用,必要时移除不常用的 MCP 以释放空间。