MCP 集成:接入外部工具与数据源

MCP 解决什么问题

你有没有过这种时刻:把 Jira 工单内容复制进对话框,让 Claude 照着做;把数据库查询结果粘贴进来让它分析;把 Figma 设计稿截图贴进来对像素。每一个"复制粘贴进对话"的瞬间,都是一次效率断层——而 MCP(Model Context Protocol,模型上下文协议)就是来消灭这些断层的。

MCP 是一个开放标准,让 AI 工具以统一方式连接外部数据源和工具。Claude Code 作为 MCP 客户端,可以连接任意数量的 MCP 服务器,每个服务器暴露一组工具。接上之后,对话就变成:"看下 JIRA-4521 的工单,实现它,然后在 GitHub 上开 PR"——从读工单到写代码到开 PR,全程无缝。

四种接入方式

按服务器形态选接入姿势,命令行工具是 claude mcp add:

方式一:远程 HTTP 服务器(推荐)

# 基本语法
claude mcp add --transport http <名字> <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 你的token"

方式二:本地 stdio 服务器(服务器作为本地进程运行,适合要直接访问系统或自定义脚本的场景):

# 语法:-- 之后的内容原样传给服务器
claude mcp add [选项] <名字> -- <命令> [参数...]

# 实例:接 Airtable
claude mcp add --env AIRTABLE_API_KEY=KEY --transport stdio airtable \
  -- npx -y airtable-mcp-server

那个 -- 是防雷设计:它后面的所有内容(包括 -y、--port 这类参数)都归服务器,不会被 claude mcp add 自己误解析。环境变量用 --env KEY=value 传,可以多组。

方式三:SSE 服务器——传输层已被标记废弃,能用 HTTP 就用 HTTP;claude mcp add --transport http 会先试 HTTP、不行自动降级 SSE。

方式四:WebSocket 服务器——适合需要服务器主动推送事件的远程场景,只能通过 .mcp.json 或 claude mcp add-json 配置,不支持 --transport 标志。

从别家客户端(Claude Desktop、Cursor 等)的教程迁移配置也简单:看到 URL 就用方式一,看到 npx 启动命令就用方式二,看到 mcpServers JSON 块就把里面那个对象喂给 claude mcp add-json。

三个作用域与团队共享

作用域 存哪 谁能用
local(默认) ~/.claude.json 的项目条目里 只有你、只有这个项目
project 项目根 .mcp.json(进 git) 本仓库所有人
user ~/.claude.json 顶层 你在所有项目

团队共享服务器就写进 .mcp.json 提交,新同事 clone 后首次使用会弹出服务器批准确认——和 hooks 的工作区信任一样,是防供应链攻击的闸门。.mcp.json 里的敏感值可以用 ${VAR} 形式引用环境变量,避免把密钥写死进版本库。

日常管理命令

claude mcp list          # 列出已配服务器及健康状态
claude mcp get <名字>    # 看某个服务器的详情
claude mcp remove <名字> # 删除

# 会话内:
# /mcp 打开管理面板,看连接状态、做 OAuth 登录
# /mcp reconnect all 重试所有失败的服务器

会话内输 MCP 工具名时用 @ 引用 MCP 资源(如 @github:repos/owner/repo/issues),/mcp 面板处理认证问题最方便。

工具之外:prompts 与 resources

MCP 服务器不止暴露工具(tools),还有两样常被忽略的能力。Prompts:服务器可以提供提示词模板,直接以命令形式出现在你的 / 菜单里——比如一个 GitHub 服务器可能带 /总结这个仓库的最近变更 这样的现成模板。Resources:服务器暴露的可引用数据,用 @服务器名:资源路径 语法直接带进消息,例如 @github:repos/owner/repo/issues。

另外 OAuth 类远程服务器首次连接会弹浏览器认证,/mcp 面板里随时可以重连或重新认证;mcp-proxy.anthropic.com 走的是 claude.ai 侧的 connectors 通道,企业内网要放行这个域名。

一份团队 .mcp.json 示例

把常用服务器固化进仓库,新同事零配置:

{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    },
    "internal-db": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@corp/db-mcp-server"],
      "env": {
        "DB_URL": "${INTERNAL_DB_URL}"
      }
    }
  }
}

两个示范点:远程服务用 type: http(streamable-http 也是合法别名);本地服务器密钥用 ${VAR} 引用环境变量而不是写死——INTERNAL_DB_URL 各自 export 在自己的 shell 或 settings 的 env 块里。

挑服务器与避坑

选服务器三个来源:Anthropic Directory 里的是经过审核的(优先);GitHub 上社区开源的(看维护活跃度和星数);自己写的(用官方 mcp-server-dev 插件脚手架,/plugin install mcp-server-dev@claude-plugins-official 装好跑 /mcp-server-dev:build-mcp-server,Claude 会问答式帮你搭)。

坑位清单,全是实战换来的:

  1. JSON 配置里 url 没写 type 会报错——Claude Code 会把没有 type 的条目当 stdio 服务器,遇到 URL 直接跳过并提示你补 "type": "http";
  2. token 泄漏面:stdio 服务器的环境变量可能被转录记录,密钥尽量用 OAuth 类服务器或 --header 的动态 helper;
  3. 上下文成本:MCP 工具定义默认延迟加载(tool search 机制),只有名字占上下文——但仍别囤积用不上的服务器,管理成本和出错面都在涨;
  4. 权限联动:MCP 工具照样受权限系统管,deny 规则写 mcp__服务器名__* 可整服务器封禁。

MCP 的能力边界

几个如实交代的限制,避免不切实际的期待。MCP 工具调用照样消耗 token 且计入权限系统——外部数据进上下文的成本规律与本地文件相同。stdio 服务器是本机进程,它有权限访问你机器上它能访问的一切,所以只装可信来源的服务器(这与"插件能跑代码"是同一级别的信任决定)。服务器进程随会话退出被终止,跨会话不保活;会话内连接挂了,/mcp reconnect 手动救。

最后给一条接入策略建议:从最痛的那个复制粘贴场景开始接,而不是一次接五个。MCP 的价值在解决真实的上下文搬运痛点——你每天真的在复制 Jira 工单,才值得接 Jira;为了"可能有用"接一堆,最后只会收获一堆过期连接和排查负担。按这个节奏,两三周后你的 Claude Code 会自然长成"懂你全套工作台"的样子。

MCP 的世界很大,数据库、浏览器自动化、设计稿、监控告警都能接,完整的实操案例可以看本站《主流 MCP 实战手册》:MCP 系列书,以及更偏平台侧的 WorkBuddy MCP 书。协议级细节以官方 MCP 文档为准。

本章由 WorkBuddy 原创整理,事实性内容参考 Claude Code 官方文档。