为 Claude Code 配置 MCP(Model Context Protocol)是扩展其能力、连接外部工具和数据源的关键步骤。您可以通过 claude mcp add 命令添加 HTTP 或 stdio 服务器,支持 OAuth 2.0 认证和作用域管理(local/project/user)。对于团队协作,可将配置存入 .mcp.json 文件并提交到版本控制。如果遇到工具输出过大,可以调整 MAX_MCP_OUTPUT_TOKENS 环境变量,或为特定工具添加 anthropic/maxResultSizeChars 注解。MCP Tool Search 默认按需加载工具定义,避免上下文窗口溢出。

Claude Code MCP 配置指南:连接外部工具和数据源

Claude Code 通过 Model Context Protocol (MCP) 连接外部工具和数据源。MCP 是一个开源协议,为 AI 工具集成提供标准接口,让你可以把 Claude Code 接入数据库、API、监控系统等上百种工具。

能做什么

接入 MCP 服务器后,你可以这样使用 Claude Code:

  • 实现 JIRA ENG-4521 中描述的功能,并在 GitHub 创建 PR
  • 检查 Sentry 和 Statsig,查看 ENG-4521 功能的使用情况
  • 根据 PostgreSQL 数据库,找出使用过该功能的 10 个随机用户的邮件地址
  • 根据 Figma 新设计稿更新标准邮件模板
  • 给这 10 个用户创建 Gmail 草稿,邀请他们参与新功能的反馈

MCP 服务器还可以作为 Channel 把外部消息推入你的会话——让 Claude 在你不在时也能响应 Telegram 消息、Discord 聊天或 Webhook 事件。

查找和构建 MCP 服务器

Anthropic Directory 浏览经过审核的连接器。目录中的连接器使用与 Claude Code 相同的 MCP 基础设施,因此你可以用 claude mcp add 添加列出的任何远程服务器。

验证每个服务器是否可信再连接。获取外部内容的服务器可能会带来提示注入风险

要构建自己的服务器,请参阅 MCP 服务器指南 了解协议基础,以及 Claude 连接器构建文档 了解认证、测试和 Directory 提交。

你也可以使用官方 mcp-server-dev 插件让 Claude 为你搭建一个服务器:

# 在会话中安装插件
/plugin install mcp-server-dev@claude-plugins-official

# 激活插件
/reload-plugins

# 构建 MCP 服务器
/mcp-server-dev:build-mcp-server

Claude 会询问你的使用场景,然后搭建一个远程 HTTP 或本地 stdio 服务器。

安装 MCP 服务器

MCP 服务器可以根据需要以三种不同方式配置。

方式一:添加远程 HTTP 服务器

HTTP 服务器是连接远程 MCP 服务器的推荐方式。这是云服务最广泛支持的传输方式。

# 基本语法
claude mcp add --transport http <> <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"

.mcp.json~/.claude.jsonclaude mcp add-json 中配置 MCP 服务器时,type 字段接受 streamable-http 作为 http 的别名。MCP 规范使用名称 streamable-http 表示此传输,因此从服务器文档复制的配置无需修改即可使用。

方式二:添加远程 SSE 服务器(已废弃)

SSE(Server-Sent Events)传输已废弃。尽可能使用 HTTP 服务器。

# 基本语法
claude mcp add --transport sse <> <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-here"

方式三:添加本地 stdio 服务器

Stdio 服务器作为本地进程运行在你机器上。它们适合需要直接系统访问或自定义脚本的工具。

Claude Code 会在派生服务器的环境中设置 CLAUDE_PROJECT_DIR 环境变量为项目根目录,这样你的服务器可以解析项目相对路径而不依赖工作目录。此变量与钩子(Hooks)在 CLAUDE_PROJECT_DIR 中接收的目录相同。在服务器进程中读取它,例如 Node 中的 process.env.CLAUDE_PROJECT_DIR,或 Python 中的 os.environ["CLAUDE_PROJECT_DIR"]。你的服务器还可以调用 MCP roots/list 请求,该请求返回启动 Claude Code 的目录。

该变量在服务器环境中设置,不是 Claude Code 自身环境,因此在项目或用户作用域的 .mcp.jsoncommandargs 中通过 ${VAR} 引用时需要默认值,如 ${CLAUDE_PROJECT_DIR:-.}。插件提供的 MCP 配置直接替换 ${CLAUDE_PROJECT_DIR},不需要默认值。

# 基本语法
claude mcp add [options] <名称> -- <命令> [args...]

# 添加 Airtable 服务器
claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
  -- npx -y airtable-mcp-server

# Windows(原生)需要 cmd /c 包装
claude mcp add --transport stdio my-server -- cmd /c npx -y @some/package

重要:选项顺序

所有选项(--transport--env--scope--header)必须放在服务器名称前面--(双破折号)将服务器名称与传递给 MCP 服务器的命令和参数分开。

例如:

  • claude mcp add --transport stdio myserver -- npx server → 运行 npx server
  • claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080 → 运行 python server.py --port 8080,环境变量包含 KEY=value

这样可以避免 Claude 的标志与服务器标志冲突。

管理服务器

# 列出所有已配置服务器
claude mcp list

# 查看特定服务器详情
claude mcp get github

# 删除服务器
claude mcp remove github

# 在 Claude Code 内查看服务器状态
/mcp

/mcp 面板显示每个已连接服务器的工具计数,并标记那些声明了工具能力但实际上没有暴露任何工具的服务器。

如果请求需要使用仍在后台连接的服务器中的工具,Claude 会等待该服务器然后继续。默认启用工具搜索时,等待发生在 ToolSearch 调用内部。在没有工具搜索的配置中(如 Vertex AI、自定义 ANTHROPIC_BASE_URL、或 ENABLE_TOOL_SEARCH=false),Claude 改用 WaitForMcpServers 工具。

服务器名称 workspace 保留供内部使用。如果配置定义了同名服务器,Claude Code 会在加载时跳过它并显示警告,要求你重命名。

动态工具更新

Claude Code 支持 MCP list_changed 通知,允许 MCP 服务器动态更新其可用的工具、提示词和资源,无需断开并重新连接。当 MCP 服务器发送 list_changed 通知时,Claude Code 自动刷新该服务器的可用能力。

自动重连

如果 HTTP 或 SSE 服务器在会话中途断开,Claude Code 自动重连,采用指数退避:最多五次尝试,起始延迟为 1 秒,每次加倍。重连期间,服务器在 /mcp 中显示为“pending”。五次尝试失败后,服务器标记为失败,你可以从 /mcp 手动重试。Stdio 服务器是本地进程,不会自动重连。

相同的退避逻辑也适用于 HTTP 或 SSE 服务器在启动时初始连接失败。从 v2.1.121 开始,Claude Code 对暂时性错误(如 5xx 响应、连接被拒绝或超时)会重试初始连接最多三次,然后标记服务器为失败。认证错误和未找到错误不会重试,因为它们需要修改配置才能解决。

通过 Channels 推送消息

MCP 服务器还可以直接向你的会话推送消息,让 Claude 响应 CI 结果、监控告警或聊天消息等外部事件。要实现此功能,服务器声明 claude/channel 能力,并且你在启动时使用 --channels 标志启用它。使用官方支持的 channel 请参见 Channels,构建自己的 channel 请参见 Channels 参考

提示:

  • 使用 --scope 标志指定配置存储位置:
    • local(默认):仅当前项目对你可用(旧版本中称为 project
    • project:通过 .mcp.json 文件与项目所有人共享
    • user:跨所有项目对你可用(旧版本中称为 global
  • 使用 --env 标志设置环境变量(例如 --env KEY=value
  • 使用 MCP_TIMEOUT 环境变量配置 MCP 服务器启动超时(例如 MCP_TIMEOUT=10000 claude 设置 10 秒超时)
  • 在服务器配置的 .mcp.json 条目中添加 timeout 字段(毫秒)来设置特定服务器的工具执行超时,例如 "timeout": 600000 表示十分钟。这会覆盖该服务器专用的 MCP_TOOL_TIMEOUT 环境变量
  • 当 MCP 工具输出超过 10,000 个 token 时,Claude Code 会显示警告。要增加此限制,设置 MAX_MCP_OUTPUT_TOKENS 环境变量(例如 MAX_MCP_OUTPUT_TOKENS=50000
  • 使用 /mcp 对需要 OAuth 2.0 认证的远程服务器进行认证

每个服务器的 timeout 是每个工具调用的硬时钟限制,服务器的进度通知不会延长它。值低于 1000 会被限制为 1 秒。对于 HTTP 和 SSE 服务器,每个请求的获取首字节预算有 60 秒的最小值,不受此值影响,只有工具调用看门狗会遵守更小的值。

插件提供的 MCP 服务器

插件可以捆绑 MCP 服务器,在启用插件时自动提供工具和集成。插件 MCP 服务器与用户配置的服务器工作方式相同。

插件 MCP 服务器的工作方式:

  • 插件在插件根目录的 .mcp.json 中或直接在 plugin.json 中内联定义 MCP 服务器
  • 启用插件后,其 MCP 服务器自动启动
  • 插件 MCP 工具与手动配置的 MCP 工具一起显示
  • 插件服务器通过插件安装进行管理(不是通过 /mcp 命令)

示例插件 MCP 配置:

在插件根目录的 .mcp.json 中:

{
  "mcpServers": {
    "database-tools": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
      "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
      "env": {
        "DB_URL": "${DB_URL}"
      }
    }
  }
}

或者在 plugin.json 中内联:

{
  "name": "my-plugin",
  "mcpServers": {
    "plugin-api": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
      "args": ["--port", "8080"]
    }
  }
}

插件 MCP 特性:

  • 自动生命周期:会话启动时,已启用插件的服务器自动连接。如果在会话中启用或禁用插件,运行 /reload-plugins 来连接或断开其 MCP 服务器
  • 环境变量:使用 ${CLAUDE_PLUGIN_ROOT} 表示捆绑的插件文件,${CLAUDE_PLUGIN_DATA} 表示持久状态(插件更新后仍保留),${CLAUDE_PROJECT_DIR} 表示稳定的项目根目录
  • 用户环境访问:与手动配置的服务器访问相同的环境变量
  • 多种传输类型:支持 stdio、SSE 和 HTTP 传输(传输支持因服务器而异)

查看插件 MCP 服务器:

# 在 Claude Code 中查看所有 MCP 服务器(包括插件提供的)
/mcp

插件服务器在列表中显示,并带有来自插件的指示。

插件 MCP 服务器的好处:

  • 捆绑分发:工具和服务器打包在一起
  • 自动设置:无需手动 MCP 配置
  • 团队一致性:所有人安装插件后获得相同的工具

关于捆绑 MCP 服务器与插件的详细信息,请参见插件组件参考

安装作用域

MCP 服务器可以在三种作用域下配置。选择的作用域控制服务器在哪些项目中加载,以及配置是否与团队共享。管理员还可以通过托管配置在企业级别部署服务器。

作用域 加载在 与团队共享 存储位置
本地 仅当前项目 ~/.claude.json
项目 仅当前项目 是,通过版本控制 项目根目录的 .mcp.json
用户 所有项目 ~/.claude.json

本地作用域

本地作用域是默认值。本地作用域的服务器仅在你添加它的项目中加载,且对你个人私有。Claude Code 将其存储在 ~/.claude.json 中该项目的路径下,因此同一服务器不会出现在你的其他项目中。对于个人开发服务器、实验性配置,或包含不想放入版本控制的凭据的服务器,使用本地作用域。

MCP 服务器的“本地作用域”不同于一般本地设置。MCP 本地作用域的服务器存储在 ~/.claude.json(你的主目录),而一般本地设置使用 .claude/settings.local.json(在项目目录中)。参见设置了解设置文件位置的详细信息。

# 添加本地作用域服务器(默认)
claude mcp add --transport http stripe https://mcp.stripe.com

# 明确指定本地作用域
claude mcp add --transport http stripe --scope local https://mcp.stripe.com

该命令将服务器写入 ~/.claude.json 中当前项目的条目。以下示例显示了从 /path/to/your/project 运行时的结果:

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "stripe": {
          "type": "http",
          "url": "https://mcp.stripe.com"
        }
      }
    }
  }
}

项目作用域

项目作用域的服务器通过在项目根目录存储 .mcp.json 文件实现团队协作。此文件设计为提交到版本控制,确保所有团队成员都可以访问相同的 MCP 工具和服务。当你添加项目作用域的服务器时,Claude Code 会自动创建或更新此文件,并采用适当的配置结构。

# 添加项目作用域服务器
claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

生成的 .mcp.json 文件遵循标准格式:

{
  "mcpServers": {
    "shared-server": {
      "command": "/path/to/server",
      "args": [],
      "env": {}
    }
  }
}

出于安全原因,Claude Code 会在使用项目作用域服务器之前提示你批准。如果需要重置这些批准选择,请使用 claude mcp reset-project-choices 命令。

用户作用域

用户作用域的服务器存储在 ~/.claude.json 中,提供跨项目可访问性,使其在你机器上的所有项目中可用,同时对你的用户账户保持私有。此作用域适用于个人实用服务器、开发工具或你经常跨多个项目使用的服务。

# 添加用户作用域服务器
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

作用域层级和优先级

当同一服务器在多个地方定义时,Claude Code 只连接一次,使用优先级最高的来源:

  1. 本地作用域
  2. 项目作用域
  3. 用户作用域
  4. 插件提供的服务器
  5. claude.ai 连接器

三个作用域按名称匹配重复项。插件和连接器按端点匹配,因此如果它们指向与上述服务器相同的 URL 或命令,则视为重复项。

环境变量扩展

Claude Code 支持在 .mcp.json 文件中进行环境变量扩展,允许团队共享配置同时保持对机器特定路径和敏感值(如 API 密钥)的灵活性。

支持的语法:

  • ${VAR} - 展开为环境变量 VAR 的值
  • ${VAR:-default} - 如果 VAR 已设置则展开其值,否则使用 default

扩展位置: 环境变量可以在以下位置扩展:

  • command - 服务器可执行文件路径
  • args - 命令行参数
  • env - 传递给服务器的环境变量
  • url - HTTP 服务器类型的 URL
  • headers - HTTP 服务器认证的请求头

带变量扩展的示例:

{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_KEY}"
      }
    }
  }
}

如果必需的环境变量未设置且没有默认值,Claude Code 将无法解析配置。

实战示例

使用 Sentry 监控错误

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

认证后使用:

/mcp

然后调试生产问题:

最近 24 小时最常见的错误是什么?
给我看看错误 ID abc123 的调用栈
哪次部署引入了这些新错误?

连接 GitHub 进行代码审查

GitHub 的远程 MCP 服务器通过传递 GitHub 个人访问令牌作为请求头进行认证。要获取令牌,打开 GitHub 令牌设置,生成一个具有访问你希望 Claude 操作的仓库权限的细粒度令牌,然后添加服务器:

claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer YOUR_GITHUB_PAT"

然后使用 GitHub:

审查 PR #456 并提出改进建议
为刚发现的 bug 创建新 issue
列出分配给我的所有开放 PR

查询 PostgreSQL 数据库

claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

然后自然语言查询:

本月总收入是多少?
显示 orders 表的结构
找出 90 天内没有购买记录的用户

认证远程 MCP 服务器

许多基于云的 MCP 服务器需要认证。Claude Code 支持 OAuth 2.0 安全连接。

当服务器响应 401 Unauthorized403 Forbidden 时,Claude Code 将该远程服务器标记为需要认证。任一状态码都会在 /mcp 中标记服务器,以便你完成 OAuth 流程。自定义服务器如果返回指向其授权服务器的 WWW-Authenticate 请求头,也会像其他远程服务器一样自动发现。

例如:

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

在 Claude Code 中使用命令:

/mcp

然后按照浏览器中的步骤登录。

提示:

  • 认证令牌安全存储并自动刷新
  • 使用 /mcp 菜单中的“清除认证”以撤销访问
  • 如果浏览器未自动打开,请复制提供的 URL 并手动打开
  • 如果认证后浏览器重定向失败并显示连接错误,请将浏览器地址栏中的完整回调 URL 粘贴到 Claude Code 中显示的 URL 提示中
  • OAuth 认证适用于 HTTP 服务器

固定 OAuth 回调端口

某些 MCP 服务器需要预先注册的特定重定向 URI。默认情况下,Claude Code 为 OAuth 回调选择一个随机可用端口。使用 --callback-port 固定端口,使其匹配预注册的格式为 http://localhost:PORT/callback 的重定向 URI。

你可以单独使用 --callback-port(使用动态客户端注册),也可以与 --client-id 一起使用(使用预配置凭据)。

# 固定回调端口,使用动态客户端注册
claude mcp add --transport http \
  --callback-port 8080 \
  my-server https://mcp.example.com/mcp

使用预配置 OAuth 凭据

某些 MCP 服务器不支持通过动态客户端注册自动设置 OAuth。如果遇到错误“Incompatible auth server: does not support dynamic client registration”,说明服务器需要预配置凭据。Claude Code 也支持使用客户端 ID 元数据文档的服务器,并自动发现它们。如果自动发现失败,首先通过服务器的开发者门户注册 OAuth 应用,然后在添加服务器时提供凭据。

# 通过开发者门户创建应用,记下 client ID 和 client secret
# 许多服务器还需要重定向 URI。选择一个端口并注册重定向 URI,格式为 http://localhost:PORT/callback,在下一步中使用相同的 --callback-port

# 使用 --client-id 传递应用 client ID。--client-secret 标志会提示以掩码输入输入密钥
claude mcp add --transport http \
  --client-id your-client-id --client-secret --callback-port 8080 \
  my-server https://mcp.example.com/mcp

# 或者将 oauth 对象包含在 JSON 配置中,并使用 --client-secret 标志
claude mcp add-json my-server \
  '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
  --client-secret

# 仅固定端口而不传递 client ID
claude mcp add-json my-server \
  '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'

# 通过环境变量设置 secret 以跳过交互提示
MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
  --client-id your-client-id --client-secret --callback-port 8080 \
  my-server https://mcp.example.com/mcp

运行 /mcp 并按照浏览器登录流程操作。

提示:

  • Client secret 安全存储在你的系统钥匙串(macOS)或凭据文件中,不存储在配置中
  • 如果服务器使用公共 OAuth 客户端且没有 secret,则仅使用 --client-id,不使用 --client-secret
  • --callback-port 可以与 --client-id 一起使用或单独使用
  • 这些标志仅适用于 HTTP 和 SSE 传输,对 stdio 服务器无效
  • 使用 claude mcp get <名称> 验证 OAuth 凭据是否已配置

覆盖 OAuth 元数据发现

将 Claude Code 指向特定的 OAuth 授权服务器元数据 URL,以绕过默认发现链。当 MCP 服务器的标准端点错误时,或者当你希望将发现路由到内部代理时,设置 authServerMetadataUrl。默认情况下,Claude Code 首先在 /.well-known/oauth-protected-resource 检查 RFC 9728 受保护资源元数据,然后回退到 /.well-known/oauth-authorization-server 的 RFC 8414 授权服务器元数据。

.mcp.json 中服务器配置的 oauth 对象中设置 authServerMetadataUrl

{
  "mcpServers": {
    "my-server": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
      }
    }
  }
}

URL 必须使用 https://authServerMetadataUrl 需要 Claude Code v2.1.64 或更高版本。元数据 URL 的 scopes_supported 会覆盖上游服务器声明的范围。

限制 OAuth 作用域

设置 oauth.scopes 以固定 Claude Code 在授权流程中请求的作用域。这是将 MCP 服务器限制为安全团队批准的、上游授权服务器声明更多作用域时的子集的受支持方式。值是一个由空格分隔的字符串,匹配 RFC 6749 §3.3 中 scope 参数格式。

{
  "mcpServers": {
    "slack": {
      "type": "http",
      "url": "https://mcp.slack.com/mcp",
      "oauth": {
        "scopes": "channels:read chat:write search:read"
      }
    }
  }
}

oauth.scopes 优先于 authServerMetadataUrl 和服务器在 /.well-known 发现的作用域。不设置则让 MCP 服务器决定请求的作用域集合。

如果授权服务器在 scopes_supported 中声明了 offline_access,Claude Code 会将其附加到固定的作用域中,以便访问令牌可以不经过新的浏览器登录而刷新。

如果服务器稍后针对工具调用返回 403 insufficient_scope,Claude Code 会使用相同的固定作用域重新认证。如果需要的工具需要 pin 之外的作用域,请扩大 oauth.scopes

使用动态请求头进行自定义认证

如果 MCP 服务器使用非 OAuth 的认证方案(如 Kerberos、短期令牌或内部 SSO),使用 headersHelper 在连接时生成请求头。Claude Code 运行该命令并将其输出合并到连接请求头中。

{
  "mcpServers": {
    "internal-api": {
      "type": "http",
      "url": "https://mcp.internal.example.com",
      "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
    }
  }
}

命令也可以是内联的:

{
  "mcpServers": {
    "internal-api": {
      "type": "http",
      "url": "https://mcp.internal.example.com",
      "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
    }
  }
}

要求:

  • 命令必须将字符串键值对的 JSON 对象写入 stdout
  • 命令在 shell 中运行,超时 10 秒
  • 动态请求头会覆盖同名的静态 headers

每次连接(会话启动和重连)时,辅助程序都会重新运行。没有缓存,因此你的脚本负责任何令牌重用。

Claude Code 在执行辅助程序时设置这些环境变量:

变量
CLAUDE_CODE_MCP_SERVER_NAME MCP 服务器名称
CLAUDE_CODE_MCP_SERVER_URL MCP 服务器的 URL

利用这些变量编写一个支持多个 MCP 服务器的辅助脚本。

headersHelper 执行任意 shell 命令。在项目或本地作用域定义时,仅在你接受工作区信任对话框后才会运行。

从 JSON 配置添加 MCP 服务器

如果你有 MCP 服务器的 JSON 配置,可以直接添加:

# 基本语法
claude mcp add-json <> '<json>'

# 添加 HTTP 服务器
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

# 添加 stdio 服务器
claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'

# 添加带有预配置 OAuth 凭据的 HTTP 服务器
claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret

验证:

claude mcp get weather-api

提示:

  • 确保 JSON 在你的 shell 中正确转义
  • JSON 必须符合 MCP 服务器配置模式
  • 使用 --scope user 将服务器添加到用户配置而不是项目特定配置

从 Claude Desktop 导入 MCP 服务器

如果你已经在 Claude Desktop 中配置了 MCP 服务器,可以导入它们:

# 基本语法
claude mcp add-from-claude-desktop

运行命令后,你会看到一个交互式对话框,允许你选择要导入的服务器。

验证导入:

claude mcp list

提示:

  • 此功能仅适用于 macOS 和 Windows Subsystem for Linux (WSL)
  • 它从这些平台的标准位置读取 Claude Desktop 配置文件
  • 使用 --scope user 标志将服务器添加到用户配置
  • 导入的服务器将具有与 Claude Desktop 中相同的名称
  • 如果存在同名服务器,将获得数字后缀(如 server_1

Claude.ai 导入 MCP 服务器

如果你已经使用 Claude.ai 账户登录 Claude Code,则在 Claude.ai 中添加的 MCP 服务器会自动在 Claude Code 中可用:

  1. claude.ai/customize/connectors 添加服务器。Team 和 Enterprise 计划只有管理员可以添加服务器。
  2. 完成 Claude.ai 中任何必需的认证步骤。
  3. 在 Claude Code 中使用命令:
/mcp

Claude.ai 服务器出现在列表中,并带有来自 Claude.ai 的指示。

Claude.ai 连接器仅在当前活跃的认证方法是你的 Claude.ai 订阅时才会被获取。当 ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKENapiKeyHelper 或第三方提供商(如 Bedrock 或 Vertex)激活时,即使你之前运行过 /login,也不会加载这些连接器。如果 /mcp 没有列出你添加的连接器,请运行 /status 确认哪个认证方法活跃,取消设置该环境变量或删除 apiKeyHelper 设置,然后运行 /login 选择你的 Claude.ai 账户。

你在 Claude Code 中添加的服务器优先于指向同一 URL 的 claude.ai 连接器。当发生这种情况时,/mcp 会将连接器列为隐藏,并显示如何移除重复项(如果你想改用连接器)。

要禁用 Claude Code 中的 claude.ai MCP 服务器,将环境变量 ENABLE_CLAUDEAI_MCP_SERVERS 设置为 false

ENABLE_CLAUDEAI_MCP_SERVERS=false claude

将 Claude Code 用作 MCP 服务器

你可以将 Claude Code 本身用作一个 MCP 服务器,其他应用程序可以连接:

# 将 Claude 作为 stdio MCP 服务器启动
claude mcp serve

你可以通过将此配置添加到 claude_desktop_config.json 文件,在 Claude Desktop 中使用:

{
  "mcpServers": {
    "claude-code": {
      "type": "stdio",
      "command": "claude",
      "args": ["mcp", "serve"],
      "env": {}
    }
  }
}

配置可执行文件路径command 字段必须引用 Claude Code 可执行文件。如果 claude 命令不在系统 PATH 中,你需要指定可执行文件的完整路径。

要查找完整路径:

which claude

然后在配置中使用完整路径:

{
  "mcpServers": {
    "claude-code": {
      "type": "stdio",
      "command": "/full/path/to/claude",
      "args": ["mcp", "serve"],
      "env": {}
    }
  }
}

没有正确的可执行文件路径,你会遇到错误,如 spawn claude ENOENT

提示:

  • 服务器提供对 Claude 工具(如 View、Edit、LS 等)的访问
  • 在 Claude Desktop 中,尝试让 Claude 读取目录中的文件、进行编辑等
  • 注意,此 MCP 服务器仅向你的 MCP 客户端暴露 Claude Code 的工具,因此你的客户端负责实现单个工具调用的用户确认

MCP 输出限制和警告

当 MCP 工具产生大量输出时,Claude Code 帮助管理 token 使用,防止溢出对话上下文:

  • 输出警告阈值:Claude Code 在任何 MCP 工具输出超过 10,000 个 token 时显示警告
  • 可配置限制:你可以使用 MAX_MCP_OUTPUT_TOKENS 环境变量调整最大允许的 MCP 输出 token
  • 默认限制:默认最大值为 25,000 个 token
  • 范围:环境变量适用于未声明自己限制的工具。设置了 anthropic/maxResultSizeChars 的工具使用该值作为文本内容,无论 MAX_MCP_OUTPUT_TOKENS 设置为何。返回图像数据的工具仍受 MAX_MCP_OUTPUT_TOKENS 限制

要提高对于产生大量输出的工具的限制:

export MAX_MCP_OUTPUT_TOKENS=50000
claude

这在处理以下 MCP 服务器时特别有用:

  • 查询大型数据集或数据库
  • 生成详细报告或文档
  • 处理大量日志文件或调试信息

提高特定工具的输出限制

如果你正在构建 MCP 服务器,可以通过在工具的 tools/list 响应条目中设置 _meta["anthropic/maxResultSizeChars"] 来允许单个工具返回大于默认持久化到磁盘阈值的结果。Claude Code 会将工具阈值提高到注释值,上限为 500,000 个字符。

这对于返回本身很大但必需的输出的工具很有用,例如数据库模式或完整的文件树。如果没有注释,超过默认阈值的结果会持久化到磁盘,并在对话中替换为文件引用。

{
  "name": "get_schema",
  "description": "Returns the full database schema",
  "_meta": {
    "anthropic/maxResultSizeChars": 200000
  }
}

对于文本内容,注解独立于 MAX_MCP_OUTPUT_TOKENS 工作,因此用户不需要为声明它的工具提高环境变量。返回图像数据的工具仍受 token 限制。

如果你经常遇到特定不受控 MCP 服务器的输出警告,考虑提高 MAX_MCP_OUTPUT_TOKENS 限制。你也可以要求服务器作者添加 anthropic/maxResultSizeChars 注释或对响应进行分页。注释对返回图像内容的工具没有影响;对于这些工具,提高 MAX_MCP_OUTPUT_TOKENS 是唯一的选择。

响应 MCP 诱发请求

MCP 服务器可以在任务进行中通过诱发请求向你请求结构化输入。当服务器需要无法自行获取的信息时,Claude Code 会显示交互式对话框,并将你的响应传递回服务器。你这边不需要任何配置:当服务器请求时,诱发对话框会自动出现。

服务器可以通过两种方式请求输入:

  • 表单模式:Claude Code 显示由服务器定义的表单字段对话框(例如用户名和密码提示)。填写字段并提交。
  • URL 模式:Claude Code 打开浏览器 URL 进行认证或批准。在浏览器中完成流程,然后在 CLI 中确认。

要自动响应诱发请求而不显示对话框,请使用 Elicitation 钩子

如果你正在构建使用诱发请求的 MCP 服务器,请参见 MCP 诱发规范了解协议细节和模式示例。

使用 MCP 资源

MCP 服务器可以暴露资源,你可以使用 @ 引用,就像引用文件一样。

引用 MCP 资源

  1. 在提示中键入 @ 以查看所有已连接 MCP 服务器中的可用资源。资源与文件一起出现在自动完成菜单中。

  2. 使用 @server:protocol://resource/path 格式引用资源:

你能分析 @github:issue://123 并建议修复方案吗?
请查阅 @docs:file://api/authentication 中的 API 文档
  1. 你可以在一个提示中引用多个资源:
对比 @postgres:schema://users 和 @docs:file://database/user-model

提示:

  • 引用资源时,资源会自动获取并作为附件包含
  • 资源路径在 @ 引用自动完成中支持模糊搜索
  • 当服务器支持资源时,Claude Code 会自动提供列出和读取 MCP 资源的工具
  • 资源可以包含 MCP 服务器提供的任何类型内容(文本、JSON、结构化数据等)

使用 MCP 提示作为命令

MCP 服务器可以暴露提示,这些提示在 Claude Code 中作为命令可用。

执行 MCP 提示

  1. 键入 / 查看所有可用命令,包括来自 MCP 服务器的命令。MCP 提示以 /mcp__servername__promptname 格式出现。

  2. 使用:

/mcp__github__list_prs
  1. 许多提示接受参数。在命令后以空格分隔传递:
/mcp__github__pr_review 456
/mcp__jira__create_issue "登录流程 bug" high

提示:

  • MCP 提示从已连接的服务器动态发现
  • 参数基于提示的定义参数进行解析
  • 提示结果直接注入对话
  • 服务器和提示名称被规范化(空格变为下划线)

配置工具搜索

工具搜索保持 MCP 上下文使用量较低,方法是将工具定义推迟直到 Claude 需要它们。会话启动时只加载工具名称,因此添加更多 MCP 服务器对上下文窗口影响最小。

工具搜索默认启用。MCP 工具被推迟而不是提前加载到上下文中,Claude 使用搜索工具在任务需要时发现相关工具。只有 Claude 实际使用的工具会进入上下文。从你的角度来看,MCP 工具的工作方式与之前完全相同。

如果你更喜欢基于阈值的加载,设置 ENABLE_TOOL_SEARCH=auto 可以在工具适合上下文窗口的 10% 以内时提前加载模式,仅推迟溢出的部分。参见下表了解所有选项。

控制工具搜索行为的环境变量 ENABLE_TOOL_SEARCH

行为
(未设置) 所有 MCP 工具推迟并按需加载。在 Vertex AI 上或 ANTHROPIC_BASE_URL 为非第一方主机时回退到提前加载
true 所有 MCP 工具推迟。即使在 Vertex AI 和代理后面,Claude Code 也会发送测试版标头。在早于 Sonnet 4.5 或 Opus 4.5 的 Vertex AI 模型上请求失败,或在不支持 tool_reference 块的代理上失败
auto 阈值模式:如果工具适合上下文窗口的 10%,则提前加载;否则推迟
auto:N 阈值模式,自定义百分比,N 为 0-100。例如 auto:5 表示 5%
false 所有 MCP 工具提前加载,无推迟
# 自定义 5% 阈值
ENABLE_TOOL_SEARCH=auto:5 claude

# 完全禁用工具搜索
ENABLE_TOOL_SEARCH=false claude

也可以在你的 settings.json env 字段中设置该值。

你还可以专门禁用 ToolSearch 工具:

{
  "permissions": {
    "deny": ["ToolSearch"]
  }
}

免除服务器的推迟

如果某个服务器的工具应该始终对 Claude 可见而无需搜索步骤,请在该服务器配置中设置 alwaysLoadtrue。该服务器的每个工具都会在会话启动时加载到上下文中,无论 ENABLE_TOOL_SEARCH 设置如何。仅对 Claude 每次轮次都需要的小部分工具使用此设置,因为每个提前加载的工具都会消耗其他对话可用的上下文。

以下 .mcp.json 条目使一个 HTTP 服务器免除推迟,而其他服务器保持推迟:

{
  "mcpServers": {
    "core-tools": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "alwaysLoad": true
    }
  }
}

alwaysLoad 字段适用于所有服务器类型,需要 Claude Code v2.1.121 或更高版本。MCP 服务器还可以通过在工具的 _meta 对象中包含 "anthropic/alwaysLoad": true 来将单个工具标记为始终加载,这仅对该工具有相同效果。

设置 alwaysLoad: true 还会阻止启动直到服务器连接,上限为标准 5 秒连接超时。即使 MCP 启动默认是非阻塞的,因为工具必须在构建第一个提示时就存在。其他服务器继续在后台连接。

企业级管理

对于需要集中控制用户可以连接哪些 MCP 服务器的组织,请参见托管 MCP 配置。它涵盖了使用 managed-mcp.json 部署固定服务器集合、使用 allowedMcpServersdeniedMcpServers 限制服务器,以及服务器被阻止时用户会看到什么。

常见问题

如何为 Claude Code 配置 MCP 服务器?

使用 claude mcp add 命令。对于 HTTP 服务器:claude mcp add --transport http <名称> <URL>。对于本地工具:claude mcp add --transport stdio <名称> -- <命令>。使用 --scope 定义作用范围(local/project/user),使用 --env 设置环境变量,使用 --header 添加认证头。

Claude Code MCP 服务器认证失败怎么解决?

常见的 OAuth 认证问题:1)确保使用了正确的 client-id 和回调端口(--callback-port);2)如果遇到“Incompatible auth server”错误,说明服务器需要预配置凭据,通过开发者门户注册应用;3)认证后浏览器重定向失败时,从浏览器地址栏复制完整回调 URL 粘贴到 Claude Code 中;4)认证令牌自动刷新,可以在 /mcp 菜单中清除认证重新授权。

使用 MCP 工具输出过大导致上下文溢出怎么处理?

默认输出警告阈值是 10,000 tokens,最大输出限制是 25,000 tokens。可以通过设置 export MAX_MCP_OUTPUT_TOKENS=50000 提高限制。如果针对特定工具,可以在 MCP 服务器 tools/list 响应中添加 _meta.anthropic/maxResultSizeChars 注解,上限 500,000 字符。另外 MCP Tool Search 默认启用,按需加载工具定义可以减小上下文压力。