Skip to content

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"    # 需替换为你的 token

1.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"    # 需替换为你的 key

1.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/anthropic

3.2 作用域选择原则

text
只有你用,且只在这个项目     → local
团队都要用(如项目的数据库)  → project(提交 .mcp.json)
你个人跨项目都用(如你的 Notion)→ user

3.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 的固定开销

对策

  1. 按项目用 project 作用域,只在需要的项目加载
  2. 工具确实多时,启用 tool search(延迟加载),见 07.5
  3. --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 只有你有。


延伸阅读

基于 VitePress 构建 · 内容采用原作者授权