MCP 连接外部工具
用 Model Context Protocol 把 Claude Code 连到外部工具和数据源:添加 HTTP/stdio 服务器、安装范围、环境变量展开、OAuth 认证与常用命令。
Claude Code 可以通过 Model Context Protocol(MCP)连接数百种外部工具和数据源。MCP 是 AI 与工具集成的开源标准,MCP 服务器让 Claude Code 能访问你的工具、数据库和 API。
当你发现自己总在把另一个工具(比如工单系统或监控面板)里的数据复制进聊天时,就该连接一个服务器:连上之后,Claude 可以直接读取并操作那个系统,而不是基于你粘贴的内容工作。
本站的 MCP 目录 收录了常用的 MCP Server 仓库。连接前请确认你信任每个服务器:抓取外部内容的服务器可能带来提示注入风险。
能用 MCP 做什么
- 根据工单系统实现功能:「Add the feature described in JIRA issue ENG-4521 and create a PR on GitHub.」
- 分析监控数据:「Check Sentry and Statsig to check the usage of the feature described in ENG-4521.」
- 查询数据库:「Find emails of 10 random users who used feature ENG-4521, based on our PostgreSQL database.」
- 集成设计稿:「Update our standard email template based on the new Figma designs that were posted in Slack」
- 自动化工作流:「Create Gmail drafts inviting these 10 users to a feedback session about the new feature.」
- 响应外部事件:MCP 服务器也可以充当 channel,把消息推进你的会话,让 Claude 在你离开时响应 Telegram 消息、Discord 聊天或 webhook 事件
可以在 Anthropic Directory 浏览审核过的连接器,目录里的远程服务器都能用 claude mcp add 添加。想自己开发服务器,参考 MCP 官方的服务器指南;也可以用官方的 mcp-server-dev 插件让 Claude 帮你搭脚手架:
/plugin install mcp-server-dev@claude-plugins-official
/mcp-server-dev:build-mcp-server安装 MCP 服务器
方式一:添加远程 HTTP 服务器(推荐)
HTTP 是连接远程 MCP 服务器的推荐方式,是云服务里支持最广的传输方式:
# 基本语法
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"通过 .mcp.json、~/.claude.json 或 claude mcp add-json 用 JSON 配置时,type 字段接受 streamable-http 作为 http 的别名。注意:只有 url 而没有 type 的 JSON 条目是配置错误,因为 Claude Code 会把没有 type 的条目当作 stdio 服务器;该服务器会被跳过并报错。
方式二:远程 SSE 服务器(已弃用)
SSE 传输已弃用,有 HTTP 就用 HTTP。一些服务仍只暴露 SSE 端点:用和 HTTP 同样的 claude mcp add --transport http 命令添加,Claude Code 会先试 HTTP,服务器不接受时切换到 SSE。在较早版本上或想直连 SSE,传 --transport sse:
claude mcp add --transport sse asana https://mcp.asana.com/sse方式三:本地 stdio 服务器
stdio 服务器作为本机进程运行,适合需要直接系统访问或自定义脚本的工具。Claude Code 会在启动的服务器环境里设置 CLAUDE_PROJECT_DIR 为项目根目录。
# 基本语法
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重要:用 -- 分隔服务器参数。 对 stdio 服务器,双破折号 -- 把 Claude 自己的选项(如 --transport、--env、--scope)和运行服务器的命令及参数分开,-- 之后的所有内容原样传给服务器。没有 --,Claude Code 会把服务器的标志(如 --port)当作自己的选项来解析。--env 接受多个 KEY=value,但如果服务器名直接跟在 --env 后面,CLI 会把名字当作另一个键值对而拒绝,所以要在 --env 和服务器名之间放至少一个其他选项(如 --transport stdio)。
方式四:远程 WebSocket 服务器
WebSocket 服务器保持持久的双向连接,适合主动向 Claude 推送事件的远程服务器。服务器只响应请求时优先用 HTTP(HTTP 支持 OAuth 和 claude mcp add --transport 标志,WebSocket 都不支持)。在 .mcp.json 或用 claude mcp add-json 配置:
claude mcp add-json events-server \
'{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'用 JSON 配置添加
已经有服务器的 JSON 配置时,直接添加:
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'
claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'注意 JSON 要正确转义 shell;可以用 --scope user 加到用户配置里。
从 Claude Desktop 导入
claude mcp add-from-claude-desktop会弹出交互对话框选择要导入的服务器。仅支持 macOS 和 WSL;通过 claude mcp 命令添加的服务器名只能包含字母、数字、连字符和下划线,所以含空格等字符的 Claude Desktop 服务器无法导入;同名服务器已存在时会加数字后缀(如 server_1)。
管理服务器
# 列出所有已配置的服务器
claude mcp list
# 查看某个服务器的详情
claude mcp get notion
# 删除服务器
claude mcp remove notion
# (在 Claude Code 里)检查服务器状态
/mcp删除远程服务器时,Claude Code 也会删除为该服务器存储的 OAuth 令牌和客户端注册。claude mcp list 在每个服务器旁显示健康状态,如 ✔ Connected、! Needs authentication、✘ Failed to connect。另有几种报告配置决策而非连接结果的状态:⏸ Pending approval(来自 .mcp.json、你还没批准的项目级服务器,运行 claude 交互式审阅批准)、✘ Rejected(被 disabledMcpjsonServers 拒绝)、⊘ Disabled for this project(项目的 disabledMcpServers 列表点名了它,在 /mcp 面板里重新启用)。
安装范围
MCP 服务器可以配置在三个范围,范围决定了服务器在哪些项目里加载、配置是否与团队共享:
| 范围 | 加载位置 | 与团队共享 | 存储位置 |
|---|---|---|---|
| 本地(Local) | 仅当前项目 | 否 | ~/.claude.json |
| 项目(Project) | 仅当前项目 | 是,通过版本控制 | 项目根目录的 .mcp.json |
| 用户(User) | 你所有的项目 | 否 | ~/.claude.json |
- 本地范围是默认的,只在你添加它的项目里加载,对你保持私有。适合个人开发服务器、实验性配置或含敏感凭据的服务器。注意这里的「本地范围」和一般的本地设置(
.claude/settings.local.json)不同claude mcp add --transport http stripe --scope local https://mcp.stripe.com - 项目范围把配置存在项目根目录的
.mcp.json,便于团队协作,应提交进版本控制:claude mcp add --transport http shared-server --scope project https://example.com/mcp 出于安全考虑,交互式会话在使用{ "mcpServers": { "shared-server": { "type": "http", "url": "https://example.com/mcp" } } }.mcp.json里的项目级服务器前会请求批准;要重置批准选择,运行claude mcp reset-project-choices。在claude -p、Agent SDK 和云端会话里无法弹出提示,会直接加载项目级服务器。 - 用户范围存储在
~/.claude.json,跨项目可用且对你的账号私有:claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
优先级:同一服务器在多处定义时,Claude Code 只连接一次,使用最高优先级来源的定义(整条记录一起使用,字段不会跨范围合并):本地 > 项目 > 用户 > 插件提供的服务器 > claude.ai 连接器。
.mcp.json 里的环境变量展开
团队可以共享配置,同时保留机器相关路径和 API Key 等敏感值的灵活性。支持 ${VAR}(展开为环境变量值)和 ${VAR:-default}(未设置时用默认值),可用于 command、args、env、url 和 headers:
{
"mcpServers": {
"api-server": {
"type": "http",
"url": "${API_BASE_URL:-https://api.example.com}/mcp",
"headers": {
"Authorization": "Bearer ${API_KEY}"
}
}
}
}引用的环境变量未设置且没有默认值时,配置仍会加载,Claude Code 在 claude mcp list 里报缺失变量警告,并原样使用未展开的 ${VAR} 文本。安全保护:在远程服务器的 url 和 headers 里,Claude Code 会把凭据类变量(如 ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、AWS_BEARER_TOKEN_BEDROCK、HTTPS_PROXY、NPM_TOKEN)当作空值读取而不是展开,防止项目的 .mcp.json 或插件把你的 Claude Code 或云厂商凭据发给它指定的服务器;想给服务器这类凭据,复制到你自己命名的变量里再引用。
实用示例
连接 GitHub 做代码评审:GitHub 的远程 MCP 服务器用通过请求头传递的 GitHub 个人访问令牌认证。先到 GitHub 令牌设置里生成一个对目标仓库有权限的细粒度令牌,然后:
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer YOUR_GITHUB_PAT"claude mcp add 只保存配置而不验证凭据,所以占位值也会被接受,但服务器之后会连接失败;运行 /mcp 确认状态为 connected。然后就可以说「Review PR #456 and suggest improvements」「Show me all open PRs assigned to me」。
查询 PostgreSQL 数据库:用 DBHub(@bytebase/dbhub 包)通过 --dsn 传入的连接字符串把 Claude 接到关系型数据库。连接字符串里用只读数据库用户,这样 Claude 运行的查询无法修改数据:
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
--dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"运行 /mcp 确认 db 显示 connected,然后自然地提问:「What's our total revenue this month?」「Show me the schema for the orders table」。
与远程服务器认证
许多云端 MCP 服务器需要认证,Claude Code 支持 OAuth 2.0。远程服务器返回 401 Unauthorized 或 403 Forbidden 时会被标记为需要认证。
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp然后在 Claude Code 里运行 /mcp,按浏览器里的步骤登录。提示:
- 认证令牌被安全存储并自动刷新
- 在
/mcp菜单里用「Clear authentication」撤销访问 - 浏览器没有自动打开时,复制提供的 URL 手动打开
- 认证后浏览器重定向报连接错误时,把浏览器地址栏里完整的回调 URL 粘贴到 Claude Code 弹出的 URL 提示里
- OAuth 认证对 HTTP 服务器有效
从命令行认证:claude mcp login <name> 直接在 shell 里运行某个已配置服务器的 OAuth 流程;之后用 claude mcp logout <name> 清除存储的凭据。在 SSH 会话等没有本地浏览器的环境,它会打印授权 URL,也可以显式加 --no-browser:
claude mcp login sentry
claude mcp login sentry --no-browser有的服务器需要预先注册特定的重定向 URI:Claude Code 默认随机挑选可用端口作回调,可以用 --callback-port 固定端口,使其匹配预注册的 http://localhost:PORT/callback。如果你在服务器的 headers 里配置了 Authorization,而服务器拒绝它,Claude Code 会报告连接失败而不是回退到 OAuth。
使用 claude.ai 的连接器
如果你用 claude.ai 账号登录了 Claude Code,你在 claude.ai 里添加的 MCP 服务器(称为连接器)会自动在 Claude Code 里可用,优先级最低。
把 Claude Code 当作 MCP 服务器
可以让 Claude Code 自己作为 MCP 服务器供其他应用连接:
claude mcp serve命令启动时不打印任何东西:stdio MCP 服务器通过标准输入输出通信,所以一个静默的、被阻塞的终端意味着服务器正在运行并等待客户端连接。在 Claude Desktop 的 claude_desktop_config.json 里添加:
{
"mcpServers": {
"claude-code": {
"type": "stdio",
"command": "claude",
"args": ["mcp", "serve"],
"env": {}
}
}
}command 字段必须指向 Claude Code 可执行文件;如果 claude 不在系统 PATH 里,要写完整路径(用 which claude 查找),否则会遇到 spawn claude ENOENT 之类的错误。
深入阅读
上面是总览与最常用的操作。下面几页展开细节:
- 安装与范围的细节:四种传输方式、把别的客户端的说明改成
claude mcp add、作用域优先级、.mcp.json里的环境变量展开、GitHub 与数据库示例 - 服务器状态、运行时与插件服务器:状态与审批、配置警告、禁用服务器、MCP 客户端运行时、动态工具更新、自动重连、channel、超时与自动转后台、插件提供的服务器
- 认证:OAuth、固定回调端口与预配置凭证、元数据发现覆盖、限制 scope、
headersHelper、claude.ai 连接器与企业控制、把 Claude Code 当 MCP 服务器 - 输出限制、工具搜索与高级能力:输出限制与图片、schema 处理、每工具审批、elicitation、资源与提示、工具搜索
本节页面
- 安装与范围的细节四种传输方式(HTTP、SSE、stdio、WebSocket)的 claude mcp add 写法、把其他客户端的说明改写成 Claude Code 命令、local/project/user 三个作用域与优先级、.mcp.json 的环境变量展开和实用示例。
- 服务器状态、运行时与插件服务器claude mcp list 的状态含义与项目服务器审批、配置警告、禁用服务器、MCP 客户端运行时 v1/v2、动态工具更新与自动重连、channel、工具调用超时与自动转后台、插件提供的 MCP 服务器。
- MCP 认证远程 MCP 服务器的 OAuth 2.0、命令行登录、固定回调端口、预配置凭证、元数据发现覆盖、限制 scope、headersHelper 动态请求头,以及 claude.ai 连接器、企业控制和把 Claude Code 作为 MCP 服务器。
- 输出限制、工具搜索与高级能力MCP 输出限制与图片结果、根级组合器与无效 schema、对某个工具要求每次批准、elicitation、资源与提示、工具搜索与 alwaysLoad,以及托管 MCP 配置。