跳到正文
FunCoding

搜索

搜索文档、智能体、博客、Skill 和 MCP

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、资源与提示、工具搜索

本节页面