TodayAI

GuidesMCP

把 Claude Code 连接到 MCP 工具

用 claude mcp add 接入远程 HTTP MCP server,让 Claude Code 直接读写外部工具,而不是靠复制粘贴。

基于 Claude Code Docs 整理 · 官方资料 ↗

当你已经会在真实仓库里用 Claude Code 改代码,下一步瓶颈往往不是“它懂不懂项目”,而是“外部系统的上下文全靠复制粘贴”。issue、文档库、数据库查询结果,一次次贴进对话,既慢又容易过期。

MCP 给 Claude Code 提供标准方式去连接这些工具与数据源。你把一个可信的 MCP Server 加进配置,Claude 就可以在需要时调用它的 Tool,而不是等你手工搬运内容。

这篇按官方 Claude Code MCP 文档,走通远程 HTTP 接入、验证连接、实际调用,以及 local / project / user 三种 scope 的差别。

为什么 Claude Code 需要 MCP

Claude Code 本身已经能读写本地文件、跑命令。但很多工作依赖仓库之外的系统:Notion 页面、issue tracker、远程 API、团队内部服务。

没有 MCP 时,你只能把外部内容复制进对话,或自己写一次性脚本。有了 MCP,这些能力以统一协议暴露给 Claude Code:模型看到 Tool 描述后,在需要时请求调用,结果再回到当前任务上下文。

官方建议也很直接:当你总在把外部工具内容复制进对话时,就该接 MCP。先从你信任的服务开始,不要一上来连接来源不明的 Server。

准备一个可连接的 MCP Server

接入前你需要一个真正可连的端点:远程 HTTP URL,或本机可启动的 stdio Server。远程场景官方推荐 HTTP transport。

可以从 Anthropic Directory 选已经过审的 connector,也可以接自己部署的服务。若还没有 Server,先看 构建你的第一个 MCP Server,做出最小可运行端点后再回来接入 Claude Code。

  • 已安装并可登录 Claude Code
  • 一个你信任的 MCP HTTP URL(或自建 Server)
  • 清楚该 Server 能访问哪些数据、具备哪些写权限

官方明确警告:会拉取外部内容的 Server 可能带来 prompt injection 风险。连接前先确认你信任这个 Server,以及它能接触到的数据范围。

把 Server 加进 Claude Code

远程 HTTP 是官方推荐路径。下面这行是文档里的 Notion 示例;把名字和 URL 换成你的服务即可。

添加远程 HTTP MCP server

bash
claude mcp add --transport http notion https://mcp.notion.com/mcp

若服务需要鉴权,用 --header 传入 Authorization 等头。成功时命令会打印 Added ...,表示配置已写入。

带 Bearer token 的示例

bash
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

SSE(Server-Sent Events)transport 已标记 deprecated。只要服务提供 HTTP,就优先用 --transport http,不要再新建 SSE 接入。

确认 Claude Code 已经看见它

配置写入不等于连接可用。先在终端核对列表与单项详情,再进会话看运行时状态。

bash
claude mcp list
claude mcp get notion

claude mcp list 会在每个 server 旁显示健康状态,例如 Connected、Needs authentication、Failed to connect。失败表示 Claude Code 连不上该 Server,不是 list 命令本身坏了。

然后启动 claude,在会话里输入 /mcp,查看 server 是否可用、工具数量,以及是否还要完成 OAuth 等鉴权步骤。

  • claude mcp add 输出 Added ...
  • claude mcp list 能看到该 server 及健康状态
  • claude mcp get <name> 详情与预期一致
  • 会话内 /mcp 显示 server 可用

让 Claude Code 实际调用一次 Tool

列表里“已连接”还不够。要用一个依赖该 Server 数据的真实任务,确认 Claude 真的会调用 Tool,而不是凭空编造。

提示要具体到外部系统里的对象。例如(按你接入的服务改写):

  • Summarize the latest updates in my Notion workspace related to the launch checklist.
  • Find open issues assigned to me and list titles plus URLs.
  • Query the connected database for the 10 most recent error events and explain the top pattern.

观察会话里是否出现对该 MCP Server 的工具调用,以及返回内容是否与外部系统一致。如果 Claude 只给泛泛总结却从未调用工具,回到 /mcp 检查连接与鉴权,再把任务写得更依赖外部数据。

local / project / user scope 有什么区别

用 -s / --scope 决定配置写到哪里、对谁可见。官方三种 scope:

  • local(默认):只对你、只在当前项目生效;存在 ~/.claude.json 里按项目路径隔离
  • project:写入项目根目录 .mcp.json,可提交版本库与团队共享
  • user:仍在 ~/.claude.json,但对你机器上所有项目生效

显式指定 scope 的示例

bash
# local(可省略,因为是默认)
claude mcp add --transport http stripe --scope local https://mcp.stripe.com

# project:团队共享
claude mcp add --transport http shared-server --scope project https://example.com/mcp

# user:跨项目个人工具
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

个人实验、带密钥的配置用 local;希望仓库克隆后大家共用同一套工具用 project;自己跨多个仓库都要用的个人工具用 user。project scope 的 .mcp.json 在交互会话里通常还需要你批准后才会真正启用。

最容易出错的地方

list 里看不到 server 或状态异常

核对 transport 与 URL;若手写 JSON,确保有 "type": "http"(或兼容别名 streamable-http),不要只有 url——否则可能被当成 stdio 并跳过。

仍在用 SSE 接入

SSE 已 deprecated。能换 HTTP 就换;只有服务仍只提供 SSE 端点时才临时用 --transport sse。

担心数据泄露或提示注入

只连接你信任的 Server。官方明确警告:会抓取外部内容的服务可能引入 prompt injection;先想清楚它能读到什么再接入。

想移除服务

使用 claude mcp remove <name>。

project scope 一直 Pending approval

在项目目录运行交互式 claude,按提示批准 .mcp.json 中的 server;不要假设 list 里出现名字就等于已可用。

官方资料

Claude Code Docs

Connect Claude Code to tools via MCP