主题
07.2 安装与作用域管理
claude mcp add 的全部形态,以及三级作用域的优先级。
读完你能做什么:用正确的传输和作用域接入任何 MCP server,并让不同项目只加载自己需要的。
一、四种添加方式
1.1 远程 HTTP server(最主流)
bash
# 基本语法
claude mcp add --transport http <name> <url>
# 真实例子:接入 Notion
claude mcp add --transport http notion https://mcp.notion.com/mcp
# 带 Bearer token
claude mcp add --transport http secure-api https://api.example.com/mcp \
--header "Authorization: Bearer YOUR_TOKEN" # 需替换为你的 token1.2 远程 SSE server
bash
claude mcp add --transport sse <name> <url>
# 真实例子:接入 Asana
claude mcp add --transport sse asana https://mcp.asana.com/sse
# 带认证头
claude mcp add --transport sse private-api https://api.company.com/sse \
--header "X-API-Key: YOUR_KEY" # 需替换为你的 key1.3 本地 stdio server
bash
claude mcp add [options] <name> -- <command> [args...]
# 真实例子:接入 Airtable
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
-- npx -y airtable-mcp-server # 需替换 YOUR_KEY注意 -- 后面是启动 server 的命令。--env 传环境变量给 server 进程。
1.4 从 JSON 配置添加
bash
claude mcp add-json events-server '{
"command": "npx",
"args": ["-y", "some-mcp-server"],
"env": {"API_KEY": "xxx"}
}'二、管理 server
bash
claude mcp list # 列出所有配置的 server
claude mcp get notion # 查看某个 server 的详情
claude mcp remove notion # 移除会话内查看状态:
text
> /mcp/mcp 面板能看到每个 server 的连接状态、工具列表、认证情况。
三、三级作用域
MCP 配置有三个作用域,决定谁能用、配置存在哪:
| 作用域 | 存储位置 | 谁能用 | 提交 git |
|---|---|---|---|
local(默认) | 你的本地配置 | 只你,只当前项目 | 否 |
project | .mcp.json(项目根) | 团队所有人 | 是 |
user | 你的用户配置 | 你的所有项目 | 否 |
3.1 指定作用域
bash
# local(默认)
claude mcp add --transport http stripe https://mcp.stripe.com
# project:写入 .mcp.json,团队共享
claude mcp add --transport http shared-server --scope project https://example.com/mcp
# user:你所有项目都能用
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic3.2 作用域选择原则
text
只有你用,且只在这个项目 → local
团队都要用(如项目的数据库) → project(提交 .mcp.json)
你个人跨项目都用(如你的 Notion)→ user3.3 project 作用域的 .mcp.json
--scope project 会生成/更新项目根的 .mcp.json:
json
{
"mcpServers": {
"shared-db": {
"type": "http",
"url": "https://internal-db-mcp.company.com/mcp"
}
}
}提交它,团队成员克隆后就自动拥有同样的 MCP 接入。
四、环境变量展开
.mcp.json 支持环境变量展开,避免把密钥写死进提交的文件:
json
{
"mcpServers": {
"db": {
"type": "http",
"url": "https://db-mcp.company.com/mcp",
"headers": {
"Authorization": "Bearer ${DB_MCP_TOKEN}"
}
}
}
}${DB_MCP_TOKEN} 从环境变量读取。这样 .mcp.json 可以安全提交,密钥由每个人自己的环境提供。
五、隔离与严格模式
5.1 只用指定的 MCP 配置
bash
# 忽略所有其他 MCP 配置,只用这个文件
claude --strict-mcp-config --mcp-config ./project-mcp.json用途:CI 环境、或者你想确保某个会话只接触特定的 server。
5.2 临时加载
bash
claude --mcp-config ./extra-mcp.json # 额外加载,不影响持久配置六、从 Claude Desktop 导入
如果你在 Claude 桌面客户端已经配了 MCP server:
bash
# Claude Code 可以导入桌面客户端的 MCP 配置
# 具体命令见 claude mcp --help避免重复配置。
七、作用域优先级与冲突
当同名 server 在多个作用域都有配置时,有明确的优先级。原则上更具体的作用域优先。用 claude mcp list 查看实际生效的配置。
建议:避免同名 server 跨作用域重复定义,容易混淆。
八、上下文成本意识
每个 MCP server 的每个工具,其定义都常驻上下文。 这是重要的成本源:
text
装 8 个 server × 每个 20 个工具 = 160 个工具定义常驻
≈ 可能几万 token 的固定开销对策:
- 按项目用
project作用域,只在需要的项目加载 - 工具确实多时,启用 tool search(延迟加载),见 07.5
- 用
--strict-mcp-config在特定会话只加载必要的
用 /context 检查 MCP 工具占用了多少(见 03.1)。
九、一个实战配置示例
假设你的团队项目需要:GitHub(团队共享)、内部数据库(团队共享、只读)、你个人的 Notion。
bash
# 团队共享的,用 project 作用域(会写入 .mcp.json 并提交)
claude mcp add --transport http github --scope project https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer ${GITHUB_MCP_TOKEN}"
claude mcp add --transport http db --scope project https://db-mcp.company.com/mcp \
--header "Authorization: Bearer ${DB_MCP_TOKEN}"
# 你个人的,用 user 作用域(你所有项目可用,不提交)
claude mcp add --transport http notion --scope user https://mcp.notion.com/mcp提交后,团队成员克隆项目 → 设好自己的 GITHUB_MCP_TOKEN / DB_MCP_TOKEN 环境变量 → 自动拥有 GitHub 和数据库接入,而你的 Notion 只有你有。