使用 MCP 可以做什么
连接 MCP 服务器后,您可以要求 Claude Code:- 从问题跟踪器实现功能:“添加 JIRA 问题 ENG-4521 中描述的功能,并在 GitHub 上创建 PR。”
- 分析监控数据:“检查 Sentry 和 Statsig 以检查 ENG-4521 中描述的功能的使用情况。”
- 查询数据库:“根据我们的 PostgreSQL 数据库,查找使用功能 ENG-4521 的 10 个随机用户的电子邮件。”
- 集成设计:“根据在 Slack 中发布的新 Figma 设计更新我们的标准电子邮件模板”
- 自动化工作流:“创建 Gmail 草稿,邀请这 10 个用户参加关于新功能的反馈会议。”
- 对外部事件做出反应:MCP 服务器也可以充当频道,将消息推送到您的会话中,因此当您不在时,Claude 可以对 Telegram 消息、Discord 聊天或 webhook 事件做出反应。
流行的 MCP 服务器
以下是一些您可以连接到 Claude Code 的常用 MCP 服务器:需要特定的集成? 在 GitHub 上查找数百个更多 MCP 服务器,或使用 MCP SDK 构建您自己的服务器。
安装 MCP 服务器
MCP 服务器可以根据您的需求以三种不同的方式进行配置:选项 1:添加远程 HTTP 服务器
HTTP 服务器是连接到远程 MCP 服务器的推荐选项。这是云服务最广泛支持的传输方式。选项 2:添加远程 SSE 服务器
选项 3:添加本地 stdio 服务器
Stdio 服务器作为您机器上的本地进程运行。它们非常适合需要直接系统访问或自定义脚本的工具。重要:选项顺序所有选项(
--transport、--env、--scope、--header)必须在服务器名称之前。然后 --(双破折号)将服务器名称与传递给 MCP 服务器的命令和参数分开。例如:claude mcp add --transport stdio myserver -- npx server→ 运行npx serverclaude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080→ 运行python server.py --port 8080,环境中有KEY=value
管理您的服务器
配置后,您可以使用这些命令管理您的 MCP 服务器:动态工具更新
Claude Code 支持 MCPlist_changed 通知,允许 MCP 服务器动态更新其可用工具、提示和资源,而无需您断开连接并重新连接。当 MCP 服务器发送 list_changed 通知时,Claude Code 会自动刷新来自该服务器的可用功能。
使用频道推送消息
MCP 服务器也可以直接将消息推送到您的会话中,以便 Claude 可以对外部事件(如 CI 结果、监控警报或聊天消息)做出反应。要启用此功能,您的服务器声明claude/channel 功能,并在启动时使用 --channels 标志选择加入。请参阅频道以使用官方支持的频道,或频道参考以构建您自己的频道。
插件提供的 MCP 服务器
插件可以捆绑 MCP 服务器,在启用插件时自动提供工具和集成。插件 MCP 服务器的工作方式与用户配置的服务器相同。 插件 MCP 服务器的工作原理:- 插件在插件根目录的
.mcp.json中或在plugin.json中内联定义 MCP 服务器 - 启用插件时,其 MCP 服务器会自动启动
- 插件 MCP 工具与手动配置的 MCP 工具一起出现
- 插件服务器通过插件安装进行管理(不是
/mcp命令)
.mcp.json 中:
plugin.json 中内联:
- 自动生命周期:在会话启动时,启用的插件的服务器会自动连接。如果您在会话期间启用或禁用插件,请运行
/reload-plugins以连接或断开其 MCP 服务器 - 环境变量:对插件相对路径使用
${CLAUDE_PLUGIN_ROOT},对持久状态使用${CLAUDE_PLUGIN_DATA},该状态在插件更新后仍然存在 - 用户环境访问:访问与手动配置的服务器相同的环境变量
- 多种传输类型:支持 stdio、SSE 和 HTTP 传输(传输支持可能因服务器而异)
- 捆绑分发:工具和服务器打包在一起
- 自动设置:无需手动 MCP 配置
- 团队一致性:安装插件时每个人都获得相同的工具
MCP 安装范围
MCP 服务器可以在三个不同的范围级别进行配置,每个级别都用于管理服务器可访问性和共享的不同目的。了解这些范围可以帮助您确定为特定需求配置服务器的最佳方式。本地范围
本地范围的服务器代表默认配置级别,存储在您项目路径下的~/.claude.json 中。这些服务器对您保持私密,仅在当前项目目录中工作时可访问。此范围非常适合个人开发服务器、实验配置或包含不应共享的敏感凭据的服务器。
MCP 服务器的”本地范围”术语与一般本地设置不同。MCP 本地范围的服务器存储在
~/.claude.json(您的主目录)中,而一般本地设置使用 .claude/settings.local.json(在项目目录中)。有关设置文件位置的详细信息,请参阅设置。项目范围
项目范围的服务器通过在项目根目录中存储配置在.mcp.json 文件中来启用团队协作。此文件设计为检入版本控制,确保所有团队成员都可以访问相同的 MCP 工具和服务。添加项目范围的服务器时,Claude Code 会自动创建或更新此文件,使用适当的配置结构。
.mcp.json 文件遵循标准化格式:
.mcp.json 文件的项目范围的服务器之前会提示批准。如果您需要重置这些批准选择,请使用 claude mcp reset-project-choices 命令。
用户范围
用户范围的服务器存储在~/.claude.json 中,并提供跨项目可访问性,使其在您机器上的所有项目中可用,同时对您的用户帐户保持私密。此范围适用于个人实用程序服务器、开发工具或您在不同项目中经常使用的服务。
选择正确的范围
根据以下条件选择您的范围:- 本地范围:个人服务器、实验配置或特定于一个项目的敏感凭据
- 项目范围:团队共享的服务器、项目特定的工具或协作所需的服务
- 用户范围:跨多个项目需要的个人实用程序、开发工具或经常使用的服务
MCP 服务器存储在哪里?
- 用户和本地范围:
~/.claude.json(在mcpServers字段或项目路径下) - 项目范围:项目根目录中的
.mcp.json(检入源代码控制) - 托管:系统目录中的
managed-mcp.json(请参阅托管 MCP 配置)
范围层次结构和优先级
MCP 服务器配置遵循清晰的优先级层次结构。当具有相同名称的服务器存在于多个范围时,系统通过首先优先考虑本地范围的服务器、其次是项目范围的服务器,最后是用户范围的服务器来解决冲突。此设计确保个人配置可以在需要时覆盖共享配置。 如果服务器既在本地配置,也通过 claude.ai 连接器配置,本地配置优先,连接器条目被跳过。.mcp.json 中的环境变量扩展
Claude Code 支持 .mcp.json 文件中的环境变量扩展,允许团队共享配置,同时为特定于机器的路径和 API 密钥等敏感值保持灵活性。
支持的语法:
${VAR}- 扩展为环境变量VAR的值${VAR:-default}- 如果设置了VAR,则扩展为VAR,否则使用default
command- 服务器可执行文件路径args- 命令行参数env- 传递给服务器的环境变量url- 对于 HTTP 服务器类型headers- 对于 HTTP 服务器身份验证
实际示例
示例:使用 Sentry 监控错误
示例:连接到 GitHub 进行代码审查
示例:查询您的 PostgreSQL 数据库
使用远程 MCP 服务器进行身份验证
许多基于云的 MCP 服务器需要身份验证。Claude Code 支持 OAuth 2.0 以实现安全连接。使用固定的 OAuth 回调端口
某些 MCP 服务器需要预先注册的特定重定向 URI。默认情况下,Claude Code 为 OAuth 回调选择随机可用端口。使用--callback-port 固定端口,使其与 http://localhost:PORT/callback 形式的预注册重定向 URI 匹配。
您可以单独使用 --callback-port(使用动态客户端注册)或与 --client-id 一起使用(使用预配置的凭据)。
使用预配置的 OAuth 凭据
某些 MCP 服务器不支持通过动态客户端注册进行自动 OAuth 设置。如果您看到类似”不兼容的身份验证服务器:不支持动态客户端注册”的错误,服务器需要预配置的凭据。Claude Code 也支持使用客户端 ID 元数据文档 (CIMD) 而不是动态客户端注册的服务器,并自动发现这些服务器。如果自动发现失败,请首先通过服务器的开发者门户注册 OAuth 应用,然后在添加服务器时提供凭据。使用服务器注册 OAuth 应用
通过服务器的开发者门户创建应用,并记下您的客户端 ID 和客户端密钥。许多服务器还需要重定向 URI。如果是这样,请选择一个端口并以
http://localhost:PORT/callback 的格式注册重定向 URI。在下一步中使用该相同的端口与 --callback-port。使用您的凭据添加服务器
选择以下方法之一。用于
--callback-port 的端口可以是任何可用的端口。它只需要与您在上一步中注册的重定向 URI 匹配。- claude mcp add
- claude mcp add-json
- claude mcp add-json(仅回调端口)
- CI / 环境变量
使用
--client-id 传递您的应用的客户端 ID。--client-secret 标志使用掩盖的输入提示输入密钥:覆盖 OAuth 元数据发现
如果您的 MCP 服务器的标准 OAuth 元数据端点返回错误,但服务器公开了工作的 OIDC 端点,您可以指向 Claude Code 一个特定的元数据 URL 以绕过默认发现链。默认情况下,Claude Code 首先检查 RFC 9728 受保护资源元数据(位于/.well-known/oauth-protected-resource),然后回退到 RFC 8414 授权服务器元数据(位于 /.well-known/oauth-authorization-server)。
在您的服务器配置中的 .mcp.json 的 oauth 对象中设置 authServerMetadataUrl:
https://。此选项需要 Claude Code v2.1.64 或更高版本。
使用动态标头进行自定义身份验证
如果您的 MCP 服务器使用 OAuth 以外的身份验证方案(例如 Kerberos、短期令牌或内部 SSO),请使用headersHelper 在连接时生成请求标头。Claude Code 运行命令并将其输出合并到连接标头中。
- 命令必须将字符串键值对的 JSON 对象写入标准输出
- 命令在 shell 中运行,超时时间为 10 秒
- 动态标头覆盖任何具有相同名称的静态
headers
| 变量 | 值 |
|---|---|
CLAUDE_CODE_MCP_SERVER_NAME | MCP 服务器的名称 |
CLAUDE_CODE_MCP_SERVER_URL | MCP 服务器的 URL |
headersHelper 执行任意 shell 命令。在项目或本地范围定义时,它仅在您接受工作区信任对话框后运行。从 JSON 配置添加 MCP 服务器
如果您有 MCP 服务器的 JSON 配置,您可以直接添加它:从 Claude Desktop 导入 MCP 服务器
如果您已在 Claude Desktop 中配置了 MCP 服务器,您可以导入它们:使用来自 Claude.ai 的 MCP 服务器
如果您已使用 Claude.ai 帐户登录 Claude Code,您在 Claude.ai 中添加的 MCP 服务器会自动在 Claude Code 中可用:在 Claude.ai 中配置 MCP 服务器
在 claude.ai/settings/connectors 添加服务器。在 Team 和 Enterprise 计划上,仅管理员可以添加服务器。
ENABLE_CLAUDEAI_MCP_SERVERS 环境变量设置为 false:
将 Claude Code 用作 MCP 服务器
您可以将 Claude Code 本身用作 MCP 服务器,其他应用程序可以连接到它:MCP 输出限制和警告
当 MCP 工具产生大量输出时,Claude Code 可帮助管理令牌使用情况,以防止压倒您的对话上下文:- 输出警告阈值:当任何 MCP 工具输出超过 10,000 个令牌时,Claude Code 显示警告
- 可配置限制:您可以使用
MAX_MCP_OUTPUT_TOKENS环境变量调整最大允许的 MCP 输出令牌 - 默认限制:默认最大值为 25,000 个令牌
- 查询大型数据集或数据库
- 生成详细的报告或文档
- 处理广泛的日志文件或调试信息
响应 MCP 引发请求
MCP 服务器可以在任务中途使用引发来请求您的结构化输入。当服务器需要无法自行获取的信息时,Claude Code 会显示交互式对话框并将您的响应传递回服务器。您无需进行任何配置:当服务器请求时,引发对话框会自动出现。 服务器可以通过两种方式请求输入:- 表单模式:Claude Code 显示一个对话框,其中包含服务器定义的表单字段(例如,用户名和密码提示)。填写字段并提交。
- URL 模式:Claude Code 打开浏览器 URL 以进行身份验证或批准。在浏览器中完成流程,然后在 CLI 中确认。
Elicitation hook。
如果您正在构建使用引发的 MCP 服务器,请参阅 MCP 引发规范以了解协议详细信息和架构示例。
使用 MCP 资源
MCP 服务器可以公开资源,您可以使用 @ 提及来引用,类似于您引用文件的方式。引用 MCP 资源
使用 MCP 工具搜索进行扩展
工具搜索通过延迟工具定义直到 Claude 需要它们来保持 MCP 上下文使用低。仅工具名称在会话启动时加载,因此添加更多 MCP 服务器对您的上下文窗口的影响最小。工作原理
工具搜索默认启用。MCP 工具被延迟而不是预先加载到上下文中,Claude 使用搜索工具在任务需要时发现相关的工具。仅 Claude 实际使用的工具进入上下文。从您的角度来看,MCP 工具的工作方式与之前完全相同。 如果您更喜欢基于阈值的加载,请设置ENABLE_TOOL_SEARCH=auto 以在工具适合上下文窗口的 10% 内时预先加载架构,仅延迟溢出部分。有关所有选项,请参阅配置工具搜索。
对于 MCP 服务器作者
如果您正在构建 MCP 服务器,启用工具搜索时服务器说明字段会变得更有用。服务器说明可帮助 Claude 了解何时搜索您的工具,类似于 skills 的工作方式。 添加清晰、描述性的服务器说明,说明:- 您的工具处理的任务类别
- Claude 应何时搜索您的工具
- 您的服务器提供的关键功能
配置工具搜索
工具搜索默认启用:MCP 工具被延迟并按需发现。当ANTHROPIC_BASE_URL 指向非第一方主机时,工具搜索默认禁用,因为大多数代理不转发 tool_reference 块。如果您的代理转发,请显式设置 ENABLE_TOOL_SEARCH。此功能需要支持 tool_reference 块的模型:Sonnet 4 及更高版本,或 Opus 4 及更高版本。Haiku 模型不支持工具搜索。
使用 ENABLE_TOOL_SEARCH 环境变量控制工具搜索行为:
| 值 | 行为 |
|---|---|
| (未设置) | 所有 MCP 工具被延迟并按需加载。当 ANTHROPIC_BASE_URL 是非第一方主机时回退到预先加载 |
true | 所有 MCP 工具被延迟,包括对于非第一方 ANTHROPIC_BASE_URL |
auto | 阈值模式:如果工具适合上下文窗口的 10% 内,则预先加载,否则延迟 |
auto:<N> | 阈值模式,带有自定义百分比,其中 <N> 是 0-100(例如,auto:5 表示 5%) |
false | 所有 MCP 工具预先加载,无延迟 |
env 字段中设置值。
您也可以专门禁用 ToolSearch 工具:
将 MCP 提示用作命令
MCP 服务器可以公开在 Claude Code 中作为命令可用的提示。执行 MCP 提示
托管 MCP 配置
对于需要对 MCP 服务器进行集中控制的组织,Claude Code 支持两个配置选项:- 使用
managed-mcp.json的独占控制:部署用户无法修改或扩展的固定 MCP 服务器集 - 使用允许列表/拒绝列表的基于策略的控制:允许用户添加自己的服务器,但限制允许的服务器
- 控制员工可以访问哪些 MCP 服务器:在整个组织中部署一组标准化的已批准 MCP 服务器
- 防止未授权的 MCP 服务器:限制用户添加未批准的 MCP 服务器
- 完全禁用 MCP:如果需要,完全删除 MCP 功能
选项 1:使用 managed-mcp.json 的独占控制
部署managed-mcp.json 文件时,它对所有 MCP 服务器进行独占控制。用户无法添加、修改或使用此文件中定义的任何 MCP 服务器以外的任何 MCP 服务器。这是希望完全控制的组织的最简单方法。
系统管理员将配置文件部署到系统范围的目录:
- macOS:
/Library/Application Support/ClaudeCode/managed-mcp.json - Linux 和 WSL:
/etc/claude-code/managed-mcp.json - Windows:
C:\Program Files\ClaudeCode\managed-mcp.json
这些是系统范围的路径(不是像
~/Library/... 这样的用户主目录),需要管理员权限。它们设计为由 IT 管理员部署。managed-mcp.json 文件使用与标准 .mcp.json 文件相同的格式:
选项 2:使用允许列表和拒绝列表的基于策略的控制
管理员可以允许用户配置自己的 MCP 服务器,而不是进行独占控制,同时对允许的服务器进行限制。此方法在托管设置文件中使用allowedMcpServers 和 deniedMcpServers。
在选项之间选择:当您想要部署一组固定的服务器而不进行用户自定义时,使用选项 1(
managed-mcp.json)。当您想要允许用户在策略约束内添加自己的服务器时,使用选项 2(允许列表/拒绝列表)。限制选项
允许列表或拒绝列表中的每个条目可以通过三种方式限制服务器:- 按服务器名称 (
serverName):匹配服务器的配置名称 - 按命令 (
serverCommand):匹配用于启动 stdio 服务器的确切命令和参数 - 按 URL 模式 (
serverUrl):匹配带有通配符支持的远程服务器 URL
serverName、serverCommand 或 serverUrl 之一。
示例配置
基于命令的限制如何工作
精确匹配:- 命令数组必须精确匹配 - 命令和所有参数的顺序正确
- 示例:
["npx", "-y", "server"]将不匹配["npx", "server"]或["npx", "-y", "server", "--flag"]
- 当允许列表包含任何
serverCommand条目时,stdio 服务器必须匹配其中一个命令 - Stdio 服务器在存在命令限制时无法仅按名称通过
- 这确保管理员可以强制执行允许运行哪些命令
- 远程服务器(HTTP、SSE、WebSocket)在允许列表中存在
serverUrl条目时使用基于 URL 的匹配 - 如果不存在 URL 条目,远程服务器回退到基于名称的匹配
- 命令限制不适用于远程服务器
基于 URL 的限制如何工作
URL 模式使用* 支持通配符以匹配任何字符序列。这对于允许整个域或子域很有用。
通配符示例:
https://mcp.company.com/*- 允许特定域上的所有路径https://*.example.com/*- 允许 example.com 的任何子域http://localhost:*/*- 允许 localhost 上的任何端口
- 当允许列表包含任何
serverUrl条目时,远程服务器必须匹配其中一个 URL 模式 - 远程服务器在存在 URL 限制时无法仅按名称通过
- 这确保管理员可以强制执行允许哪些远程端点
示例:仅 URL 允许列表
示例:仅 URL 允许列表
https://mcp.company.com/api处的 HTTP 服务器:✅ 允许(匹配 URL 模式)https://api.internal.corp/mcp处的 HTTP 服务器:✅ 允许(匹配通配符子域)https://external.com/mcp处的 HTTP 服务器:❌ 阻止(不匹配任何 URL 模式)- 任何命令的 Stdio 服务器:❌ 阻止(没有名称或命令条目可匹配)
示例:仅命令允许列表
示例:仅命令允许列表
- 带有
["npx", "-y", "approved-package"]的 Stdio 服务器:✅ 允许(匹配命令) - 带有
["node", "server.js"]的 Stdio 服务器:❌ 阻止(不匹配命令) - 名为”my-api”的 HTTP 服务器:❌ 阻止(没有名称条目可匹配)
示例:混合名称和命令允许列表
示例:混合名称和命令允许列表
- 名为”local-tool”、带有
["npx", "-y", "approved-package"]的 Stdio 服务器:✅ 允许(匹配命令) - 名为”local-tool”、带有
["node", "server.js"]的 Stdio 服务器:❌ 阻止(命令条目存在但不匹配) - 名为”github”、带有
["node", "server.js"]的 Stdio 服务器:❌ 阻止(当命令条目存在时,stdio 服务器必须匹配命令) - 名为”github”的 HTTP 服务器:✅ 允许(匹配名称)
- 名为”other-api”的 HTTP 服务器:❌ 阻止(名称不匹配)
示例:仅名称允许列表
示例:仅名称允许列表
- 名为”github”、任何命令的 Stdio 服务器:✅ 允许(没有命令限制)
- 名为”internal-tool”、任何命令的 Stdio 服务器:✅ 允许(没有命令限制)
- 名为”github”的 HTTP 服务器:✅ 允许(匹配名称)
- 任何名为”other”的服务器:❌ 阻止(名称不匹配)
允许列表行为 (allowedMcpServers)
undefined(默认):无限制 - 用户可以配置任何 MCP 服务器- 空数组
[]:完全锁定 - 用户无法配置任何 MCP 服务器 - 条目列表:用户只能配置按名称、命令或 URL 模式匹配的服务器
拒绝列表行为 (deniedMcpServers)
undefined(默认):没有服务器被阻止- 空数组
[]:没有服务器被阻止 - 条目列表:指定的服务器在所有范围内被显式阻止
重要说明
- 选项 1 和选项 2 可以组合:如果
managed-mcp.json存在,它具有独占控制,用户无法添加服务器。允许列表/拒绝列表仍然适用于托管服务器本身。 - 拒绝列表具有绝对优先级:如果服务器匹配拒绝列表条目(按名称、命令或 URL),即使它在允许列表上,它也会被阻止
- 基于名称、基于命令和基于 URL 的限制一起工作:如果服务器匹配任何名称条目、命令条目或 URL 模式,它就会通过(除非被拒绝列表阻止)
使用
managed-mcp.json 时:用户无法通过 claude mcp add 或配置文件添加 MCP 服务器。allowedMcpServers 和 deniedMcpServers 设置仍然适用于过滤实际加载的托管服务器。