跳转到内容

MCP(外部服务连接器):给 Claude 接上外部工具

📍 Claude Code 进阶

Claude 在中间,周围用线条连到 Slack / Drive / GitHub / 数据库 / Jira 等多个外部服务图标

那个让洁柔受不了的复制粘贴时刻

Section titled “那个让洁柔受不了的复制粘贴时刻”

5 月某天,洁柔正在改 niuxue.org 的某一篇文章。

她跟我说「等下,我看一下 GitHub 上那个 issue 的描述,顺便看看 Slack 里同事是怎么说的」——她切到浏览器,手动打开 GitHub、复制 issue 描述、回来贴给我;然后切到 Slack 找那条消息、复制、再贴。

3 次切窗口 + 3 次复制粘贴下来,她有点烦:

「为什么我每次都要当人形复制粘贴机?Claude Code 自己不能直接读 GitHub 跟 Slack 吗?」

我说:「能,这叫 MCP——给 Claude 装一个『外部服务连接器』,它直接通过 API 读 Slack / GitHub / 数据库 / Drive,你完全不用复制粘贴。」

她半信半疑配了一下,5 分钟后她说:

「这才是 AI 该有的样子嘛。」

这一篇讲的就是 MCP——Claude Code 跟外部服务之间的「通用接口」。

MCP 是什么:AI 工具圈的「USB-C」

Section titled “MCP 是什么:AI 工具圈的「USB-C」”

一个通用接口位于中心,各种不同形状的插头都能对接上来

MCP 全称 Model Context Protocol(模型上下文协议)——由 Anthropic 在 2024 年底发起,2025 年 12 月捐给 Linux 基金会旗下新成立的 Agentic AI Foundation(AAIF,智能体 AI 基金会)托管,是一个开放标准,用来连接 AI 跟各种外部工具。

类比:

  • 以前每个手机充电口都不一样(Lightning / Micro USB / Type-C / 各种乱七八糟),换设备就要换线
  • 后来大家统一了 USB-C,一根线全设备通用

MCP 就是 AI 工具圈的 USB-C —— 一个统一标准,Claude Code / Cursor / ChatGPT / 任何支持 MCP 的 AI 都能用同一个 MCP 服务器。

给 Claude Code 装一个 MCP 服务器,效果:

  • ✅ Claude 直接读 GitHub issue / PR 内容
  • ✅ Claude 查 Slack 群里有谁说过什么
  • ✅ Claude 直接 SELECT 你的 PostgreSQL 数据库
  • ✅ Claude 读 Figma 设计 / 调 Notion 文档 / 拉 Sentry 错误日志
  • ✅ 你完全不用复制粘贴

4 格典型用法 + GitHub / 监控 / 数据库 / Slack + Gmail

🎯 场景 1:实现 JIRA 票子 + 自动提 PR

Section titled “🎯 场景 1:实现 JIRA 票子 + 自动提 PR”

「把 JIRA 票号 ENG-4521 描述的功能实现,然后在 GitHub 上提一个 PR。」

Claude 自己:

  1. 通过 JIRA MCP 读 ENG-4521 的需求描述
  2. 在你本地仓库改对应代码
  3. 通过 GitHub MCP 创建 PR,自动写描述

你做的事:打一句话,然后审 PR。

「查一下 Sentry 跟 Statsig,看用户对 ENG-4521 这个功能用的怎么样。」

Claude 自己:

  1. Sentry MCP 拉错误日志
  2. Statsig MCP 拉 A/B 测试数据
  3. 汇总给你一个判断「功能稳不稳 / 用户接受度高不高」

「找 10 个最近用过 ENG-4521 功能的用户邮箱,从我们的 PostgreSQL 里。」

Claude 直接:

  1. PostgreSQL MCP 跑一个 SELECT 查询
  2. 返回 10 个邮箱给你

你不用打开 DBeaver / 不用写 SQL——直接说人话。

「把上面那 10 个用户拉一个反馈访谈,用 Gmail 给他们发邀请邮件。」

Claude:

  1. 直接调 Gmail MCP 生成邮件草稿
  2. 你确认后一键发出

这就是 AI 真正「替你干活」的样子——不是聊一聊,是真的把跨工具的工作流串起来。

3 步流程 → 连云服务 → Claude 工具腰带多了一个工具

claude mcp add 支持 3 种传输方式(transport),对应不同的服务器类型(另有一种 WebSocket 长连接方式,只能手写 JSON 格式的配置,新手用不到)。

🌐 方式 1:HTTP 远程服务器(最常用)

Section titled “🌐 方式 1:HTTP 远程服务器(最常用)”

云端服务一般都走 HTTP。比如装 Notion 的 MCP:

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

带 Bearer Token 鉴权:

Terminal window
claude mcp add --transport http secure-api https://api.example.com/mcp \
--header "Authorization: Bearer 你的-token"

💻 方式 2:本地 stdio 服务器(直跑本地脚本)

Section titled “💻 方式 2:本地 stdio 服务器(直跑本地脚本)”

如果服务器是个本地脚本 / 命令行工具,用 stdio:

Terminal window
claude mcp add --transport stdio airtable --env AIRTABLE_API_KEY=你的key \
-- npx -y airtable-mcp-server

说明:

  • --env 传环境变量给服务器(API key 这类)
  • -- 双横线之后是要跑的命令 + 参数
  • ⚠️ 顺序别写反:--env 和 --header 都能一次接好几个值,服务器名如果紧跟在它们后面,会被当成又一个值吞掉,命令直接失败,报错 Invalid environment variable format: airtable 或 missing required argument 'name'。最稳的写法是把服务器名写在 --env、--header 前面,像上面这样。

📡 方式 3:SSE 远程服务器(已弃用,了解即可)

Section titled “📡 方式 3:SSE 远程服务器(已弃用,了解即可)”

SSE(Server-Sent Events,服务器推送事件)是早期的远程传输方式。MCP 规范 2025-03-26 版起用 Streamable HTTP(就是方式 1 的 http)取代了它,2026-07-28 版正式列为弃用,大多数服务已经迁到 HTTP。

Claude Code v2.1.265 起,用 --transport http 去连只支持 SSE 的老服务器,会自动改走 SSE,所以一般不用手写 sse。版本更老,或者服务商明确只给了 SSE 地址时,才这样装:

Terminal window
claude mcp add --transport sse 名字 https://example.com/sse

以前这里举的例子是 Asana 的 https://mcp.asana.com/sse,那是它的测试版地址,Asana 已宣布 2026-05-11 停用。新地址 https://mcp.asana.com/v2/mcp 走 HTTP,但要先在 Asana 注册一个 MCP 应用,拿到 client ID 和 client secret(应用的 OAuth 凭据)再装,接法见 Asana 官方说明(英文)。

下面三条各管一件事,用哪条跑哪条。

列出所有装的服务器:

Terminal window
claude mcp list

看 github 服务器的详细配置:

Terminal window
claude mcp get github

删掉 github 服务器:

Terminal window
claude mcp remove github

在 Claude Code 里看实时状态:

/mcp

会弹一个面板,显示每个服务器的连接状态、提供了多少工具、有没有需要登录(OAuth)。

3 层嵌套盒子 / 中层项目 / 内层本地

装的时候可以选这个 MCP 服务器对哪些项目生效——--scope 参数:

Scope范围存哪
local(默认)只这个项目,只你自己~/.claude.json
project这个项目,团队共享项目根/.mcp.json
user你所有项目都生效~/.claude.json

怎么选:

  • 装一个 GitHub MCP,所有项目都要用 → user scope
  • 装一个 公司内部数据库 MCP,只这个项目用且团队共用 → project scope(.mcp.json 推到 git 里,队友拉代码就有,第一次启动时要确认批准)
  • 装一个 个人 token 的服务器,不想推给团队 → local scope

例子:装 GitHub MCP,所有项目都能用(命令里的「你的PAT」换成你的 GitHub 个人访问令牌):

Terminal window
claude mcp add --transport http --scope user github https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer 你的PAT"

GitHub 的远程 MCP 服务器靠 PAT(Personal Access Token,GitHub 个人访问令牌)鉴权,令牌放在请求头里。PAT 在 github.com/settings/personal-access-tokens 生成,选细粒度令牌(fine-grained),只给需要让 Claude 碰的仓库。claude mcp add 不检查令牌对不对,漏了或写错也能加进去,要到 /mcp 里看到连接失败才发现。

天平左边官方认证 / 右边可疑未知,上方放大镜审视

MCP 服务器能调你账号下的 API(读 GitHub / 改 Notion / SELECT 数据库)——装错一个就可能泄露数据。装之前必看 3 件事:

✅ 1. 看是不是官方源 / Anthropic 目录验证过

Section titled “✅ 1. 看是不是官方源 / Anthropic 目录验证过”

Anthropic Connector 目录 里收录的 MCP 服务器都经过审核——优先用目录里有的。

很多 MCP 服务器要 OAuth 授权——看清楚它要哪些权限:

  • 「Read GitHub repos」 → 合理,装
  • 「Read & write all your GitHub repos including private」 → 看清楚再装
  • 「Read your entire Gmail inbox」 → 重要场景慎装

✅ 3. 看是不是开源 + 有人在维护

Section titled “✅ 3. 看是不是开源 + 有人在维护”

第三方 MCP 服务器优先选:

  • ✅ GitHub 仓库开源
  • ✅ 最近 3 个月有更新
  • ✅ 装机量 1000+ / star 100+

新作者 + 闭源 + 少人用 + 要敏感权限 —— 直接拒绝。

几个值得装的 MCP 服务器(2026-09 核对)

Section titled “几个值得装的 MCP 服务器(2026-09 核对)”
服务器装什么用途
GitHubclaude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header "Authorization: Bearer 你的PAT"读 / 改 GitHub issue / PR / repo
Notionclaude mcp add --transport http notion https://mcp.notion.com/mcp读 / 改 Notion 页面
数据库(DBHub)claude mcp add --transport stdio db -- npx -y @bytebase/dbhub --dsn "postgresql://readonly:pass@host:5432/db"用只读账号跑 SQL 查询;PostgreSQL 之外也能连 MySQL、SQLite 等
Slack在 claude.ai/customize/connectors 添加并授权,用 claude.ai 订阅登录的 Claude Code 会自动同步过来读 / 发消息
Figmaclaude mcp add --transport http figma https://mcp.figma.com/mcp(装完在 /mcp 里登录)读设计文件
Sentryclaude mcp add --transport http sentry https://mcp.sentry.dev/mcp(装完在 /mcp 里登录)读错误日志

几点说明:

  • 数据库那行换成了 DBHub,这也是 Claude Code 官方文档现在的示例。原来常见的官方参考包 @modelcontextprotocol/server-postgres 已停止维护、在 npm 上标了弃用,还有能绕过只读限制的 SQL 注入漏洞,别再装。连接串里一定用只读账号,Claude 跑的查询就改不了数据。
  • 表里没放 Filesystem(文件系统)服务器:Claude Code 自带读写文件的工具,要访问项目外的目录,启动时加 --add-dir 路径,或在会话里用 /add-dir 就行;这个服务器主要给没有文件工具的客户端用。
  • claude.ai 上添加的连接器(比如 Slack)只在你用 claude.ai 订阅登录 Claude Code 时才会同步过来;用 API key 或接 DeepSeek 时不会加载。

全清单:到 Anthropic 目录(claude.ai/directory)浏览经过审核的连接器。

新手第一周容易一口气装 10 个 MCP 服务器。后果分两种情况:

  • 用 Claude 账号登录(官方订阅或 API):Claude Code 默认开着「工具搜索」,启动时只加载工具名,用到时才加载完整说明,多装几个对上下文影响不大。但每个服务器都是一个能动你账号的入口,装多了更难管。
  • 接 DeepSeek 等第三方地址(设了自定义的 ANTHROPIC_BASE_URL):工具搜索会自动关闭,所有工具的完整说明一启动就全塞进上下文。装得越多,每轮对话越贵,模型也越容易被无关工具干扰。

修正:先装 2-3 个你真的每天用的(比如 GitHub、一个数据库),其他用到再装。用不上的用 claude mcp remove 名字 删掉,或者在 /mcp 面板里对当前项目关掉(配置还留着)。

❌ 坑 2:以为装完就能用,其实还没登录

Section titled “❌ 坑 2:以为装完就能用,其实还没登录”

很多远程 MCP 要 OAuth 授权(在浏览器里登录并点「同意」)。claude mcp add 只把配置写进去,不会帮你登录,这时服务器状态是 ! Needs authentication(需要登录)。

修正:装完进 Claude Code 打 /mcp,选中这个服务器,按提示在浏览器里登录;也可以直接在终端跑 claude mcp login 名字。状态变成 ✔ Connected(已连接)才算装好。其他常见状态:

  • ✘ Failed to connect(连不上):先查地址和令牌,像 GitHub 那种令牌写在请求头里的,令牌错了也显示这个
  • ⏸ Pending approval(等待批准):项目 .mcp.json 里还没批准的服务器,在这个项目里启动 claude,按提示批准就行

MCP 工具的返回值有上限(2.1.283 默认 25,000 token,超过 10,000 token 会先给警告)。超过上限时,Claude Code 会把完整结果存成文件,对话里只留文件路径,Claude 要用时再去读。如果你查的内容大(比如大表查询),就得多花几步读文件。

修正:用 MAX_MCP_OUTPUT_TOKENS=50000 claude 启动,把上限调高(Windows PowerShell 先运行 $env:MAX_MCP_OUTPUT_TOKENS=50000,再运行 claude)。或者在 prompt 里限定返回大小(「只返回前 10 行」)。

新手常搞混,一表对齐:

HookMCPPlugin
本质在生命周期挂一个 shell 命令给 Claude 加一组新工具打包好的功能集合(可含 Skill + Tool + Hook + MCP)
典型用法自动 format / 自动 git add / 桌面通知让 Claude 直接调 GitHub / Slack API装一套现成的代码 review 工作流
配置settings.json hooks 段claude mcp add,或手写项目根目录的 .mcp.json/plugin install <名字>
跨工具用❌ 仅 Claude Code✅ 任何支持 MCP 的 AI(Claude / Cursor / ChatGPT)❌ 仅 Claude Code

记住一句话:

  • MCP = 给 Claude 加「新感官」(让它能看 GitHub / 听 Slack)
  • Hook = 给 Claude 加「反射动作」(它一改文件你的脚本就跑)
  • Plugin = 别人打好的「套餐」

读完这一篇你应该会:

  • 用 USB-C 类比理解 MCP 是什么
  • 用 claude mcp add 装第一个 MCP 服务器
  • 知道 4 个真实场景 + 3 种 transport + 3 种 scope
  • 安全把关 装之前看 3 件事

想懂 MCP 的协议原理、怎么自己写一个 server?→ MCP 协议详解(Agent 通用知识板块的深入版)

接下来「Claude Code 进阶」板块还有:

→ 自定义 Slash Command:把团队规范变成 /xxx

→ Subagents(子智能体):多个 Claude 并行干活

→ Git Worktree:多个 Claude 各改各的不打架

想及时看到更新,可以收藏 niuxue.org 主页。