使用 MCP 可以做什么
连接 MCP 服务器后,您可以要求 Claude Code:- 从问题跟踪器实现功能:“添加 JIRA 问题 ENG-4521 中描述的功能,并在 GitHub 上创建 PR。”
- 分析监控数据:“检查 Sentry 和 Statsig 以检查 ENG-4521 中描述的功能的使用情况。”
- 查询数据库:“根据我们的 PostgreSQL 数据库,找到使用功能 ENG-4521 的 10 个随机用户的电子邮件。”
- 集成设计:“根据在 Slack 中发布的新 Figma 设计更新我们的标准电子邮件模板”
- 自动化工作流:“创建 Gmail 草稿,邀请这 10 个用户参加关于新功能的反馈会议。“
流行的 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→ 在环境中使用KEY=value运行python server.py --port 8080
管理您的服务器
配置后,您可以使用这些命令管理 MCP 服务器:动态工具更新
Claude Code 支持 MCPlist_changed 通知,允许 MCP 服务器动态更新其可用工具、提示和资源,而无需您断开连接并重新连接。当 MCP 服务器发送 list_changed 通知时,Claude Code 会自动刷新来自该服务器的可用功能。
插件提供的 MCP 服务器
插件 可以捆绑 MCP 服务器,在启用插件时自动提供工具和集成。插件 MCP 服务器的工作方式与用户配置的服务器相同。 插件 MCP 服务器的工作原理:- 插件在插件根目录的
.mcp.json中或在plugin.json中内联定义 MCP 服务器 - 启用插件时,其 MCP 服务器会自动启动
- 插件 MCP 工具与手动配置的 MCP 工具一起显示
- 插件服务器通过插件安装进行管理(不是
/mcp命令)
.mcp.json 中:
plugin.json 中内联:
- 自动生命周期:服务器在插件启用时启动,但您必须重启 Claude Code 以应用 MCP 服务器更改(启用或禁用)
- 环境变量:使用
${CLAUDE_PLUGIN_ROOT}表示插件相对路径 - 用户环境访问:可以访问与手动配置的服务器相同的环境变量
- 多种传输类型:支持 stdio、SSE 和 HTTP 传输(传输支持可能因服务器而异)
- 捆绑分发:工具和服务器打包在一起
- 自动设置:无需手动 MCP 配置
- 团队一致性:安装插件时每个人都获得相同的工具
MCP 安装范围
MCP 服务器可以在三个不同的范围级别进行配置,每个级别都用于管理服务器可访问性和共享的不同目的。了解这些范围可以帮助您确定为特定需求配置服务器的最佳方式。本地范围
本地范围的服务器代表默认配置级别,存储在项目路径下的~/.claude.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 服务器配置遵循清晰的优先级层次结构。当具有相同名称的服务器存在于多个范围时,系统通过优先考虑本地范围的服务器来解决冲突,然后是项目范围的服务器,最后是用户范围的服务器。此设计确保个人配置可以在需要时覆盖共享配置。.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 以实现安全连接。从 JSON 配置添加 MCP 服务器
如果您有 MCP 服务器的 JSON 配置,可以直接添加它:从 Claude Desktop 导入 MCP 服务器
如果您已在 Claude Desktop 中配置了 MCP 服务器,可以导入它们:将 Claude Code 用作 MCP 服务器
您可以将 Claude Code 本身用作 MCP 服务器,其他应用程序可以连接到它:MCP 输出限制和警告
当 MCP 工具产生大量输出时,Claude Code 可以帮助管理令牌使用,以防止压倒您的对话上下文:- 输出警告阈值:当任何 MCP 工具输出超过 10,000 个令牌时,Claude Code 显示警告
- 可配置限制:您可以使用
MAX_MCP_OUTPUT_TOKENS环境变量调整最大允许的 MCP 输出令牌 - 默认限制:默认最大值为 25,000 个令牌
- 查询大型数据集或数据库
- 生成详细的报告或文档
- 处理大量日志文件或调试信息
使用 MCP 资源
MCP 服务器可以公开资源,您可以使用 @ 提及来引用这些资源,类似于引用文件的方式。引用 MCP 资源
将 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 设置仍然适用于过滤实际加载的托管服务器。