1. 什么是 MCP?

MCP(Model Context Protocol)是 Anthropic 推出的开源标准协议,相当于给 Claude Code 装上”USB-C 接口”,让它能安全、动态地连接外部工具、数据库、API、监控系统、设计工具等,从而突破”只能改本地代码”的限制,成为真正的全栈自动化助手。

核心概念

  • MCP 服务器(MCP Server):负责向 Claude Code 暴露工具(Tools)、资源(Resources)和提示(Prompts)
  • 支持三种传输方式:HTTP(推荐,远程云服务)、Stdio(本地进程)、SSE(已弃用)
  • 动态特性:服务器可实时推送工具更新(list_changed)、资源引用(@server:resource)和频道消息(Channel)
  • 安全设计:OAuth 2.0、Header 认证、权限控制,全程本地存储 token

一句话总结:MCP 让 Claude 能直接操作你公司的 Jira、Notion、数据库、Sentry、Figma、GitHub 等外部系统。

2. MCP 有什么用?

  • 开发工作流:从 Jira 拉取票据 → 自动实现功能 → 在 GitHub 创建 PR
  • 数据查询:直接问 PostgreSQL “本月 Top 10 用户邮箱是哪些?”
  • 监控分析:让 Claude 查 Sentry 最近 24 小时错误并给出修复方案
  • 设计同步:根据 Slack 里的 Figma 设计自动更新邮件模板
  • 自动化:批量创建 Gmail 草稿、响应 Telegram/Discord/Webhook 事件
  • 实时反应:通过 Channel 功能被动监听外部事件(CI 失败、监控告警)并自动处理

优势:数百个官方/社区 MCP 服务器可用,支持插件自动安装,团队可统一配置。

3. MCP 与其他功能区别

功能作用范围是否需要 MCP动态性认证需求示例用途
MCP外部工具/数据源支持OAuth/Header查询数据库、操作 Jira
Skill本地任务工作流代码审查 SOP、生成 PRD
CLAUDE.md项目全局规则/偏好代码风格、构建命令
原生工具本地文件系统 & Shell系统权限直接读写项目文件

关键点:本地文件读写永远优先用原生工具,不需要通过 MCP。除非你特意加了一个本地 filesystem MCP 服务器。

4. 如何使用 MCP

步骤 1:添加 MCP 服务器(CLI 命令)

HTTP 远程服务器(推荐)

claude mcp add --transport http <> <URL>

示例(官方常用):

claude mcp add --transport http notion https://mcp.notion.com/mcp
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

完整参数说明

  • --scope project:团队共享,存 .mcp.json
  • --scope user:全局个人
  • --scope local:默认(当前项目本地)
  • --header "Authorization: Bearer xxx":非 OAuth 认证时使用
  • --env KEY=value:环境变量
  • -- 分隔本地命令(Stdio 模式)

Stdio 本地示例(数据库等)

claude mcp add --transport stdio db -- npx -y @bytebase/dbhub --dsn "postgresql://..."

步骤 2:认证(OAuth 流程)

大部分云服务(如 Notion、Sentry、Figma)需要 OAuth:

  1. 在 Claude Code 会话里输入 /mcp
  2. 看到服务器列表
  3. 选择需要认证的服务器 → 浏览器自动打开登录页
  4. 授权完成后,token 自动保存并刷新
  5. 不需要每次登录,只在首次或 token 过期时触发
  6. 若浏览器没打开,可复制回调 URL 手动打开

步骤 3:直接使用

  • 随便和 Claude 聊天:“用 Notion 里的产品需求更新 README”
  • Claude 会自动调用对应 MCP 工具,并弹出权限确认(可预先用 --allowedTools 控制)

5. 管理命令一览

命令作用
claude mcp list列出所有服务器
claude mcp get <name>查看详情
claude mcp remove <name>删除
/mcp(会话内)状态查看 + OAuth 认证 + 清除认证
claude mcp reset-project-choices重置项目范围选择

6. 常用服务器 & URL 来源

这些 URL 全部来自服务商官方(不是随便写的):

  • Notionhttps://mcp.notion.com/mcp
  • Sentryhttps://mcp.sentry.dev/mcp
  • Figmahttps://mcp.figma.com/mcp
  • GitHubhttps://api.githubcopilot.com/mcp/

完整列表modelcontextprotocol/servers(上千个官方+社区服务器)

7. 高级功能

Channel(频道)

让 Claude 实时接收外部推送(如监控告警)。

资源引用

在提示里输入 @notion:page/xxx@github:issue/123 直接引用外部内容。

企业级管控

管理员可部署 managed-mcp.json 统一允许/禁止服务器。

8. Token 消耗与上下文占用

为什么 MCP 会消耗 Token?

  • 每个 MCP 服务器都会把工具描述(tool definitions)注入到 Claude 的上下文里
  • 工具描述包括工具名称、参数说明、返回值格式等,这些文本本身就需要 token
  • 如果只加 1–2 个简单 MCP(比如 Notion 或 GitHub),消耗通常很小(几百到几千 token)
  • 如果加了很多 MCP(5 个以上,尤其是带大量工具的服务器如 Playwright、数据库等),工具描述总和很容易占到上下文的 20%–40% 甚至更高

Claude Code 的智能控制机制

官方专门引入了 MCP 工具搜索(Tool Search)机制,来解决这个问题:

情况上下文消耗情况机制说明
默认(推荐)很低(只加载工具名称)当工具描述总和超过上下文 10% 时,自动开启”工具搜索”。Claude 只记住工具名字,需要时才按需加载完整定义(懒加载 / on-demand)
手动关闭(不推荐)很高(所有工具描述全部预加载)ENABLE_TOOL_SEARCH=false 时,所有工具一次性全部注入,token 消耗暴增
输出阶段可控MCP 工具返回结果默认上限 25,000 token,超过 10,000 token 会警告。可通过环境变量 MAX_MCP_OUTPUT_TOKENS 调整

配置方式(推荐一直保持默认)

# 强制始终开启工具搜索
export ENABLE_TOOL_SEARCH=true

# 或设置更严格阈值(工具描述超 5% 就开启搜索)
export ENABLE_TOOL_SEARCH=auto:5

9. 实用示例

示例 1:Notion 集成 - 从 Notion 拉取任务

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

之后在会话里:

Claude,用 Notion 里的"Q1 任务"数据库拉取所有 Todo 项,根据优先级排序后生成一份 JSON 文件到 /tasks-export.json

Claude 会自动:

  1. 调用 Notion MCP
  2. 查询任务数据库
  3. 生成排序后的 JSON

示例 2:GitHub 集成 + 自动 PR

claude mcp add --transport http github https://api.githubcopilot.com/mcp/

会话内:

检查 #123 GitHub Issue 的详情,然后自动创建一个分支 fix/123 并写一个初步的实现。

Claude 会自动拉取 Issue 内容、创建分支、生成代码。

示例 3:数据库查询(Stdio 模式)

claude mcp add --transport stdio postgres -- psql "postgresql://user:pass@localhost/mydb"

之后直接问:

SELECT COUNT(*),AVG(order_value) FROM orders WHERE created_at > NOW() - INTERVAL '30 days'

Claude 会执行 SQL 并给你结果。

示例 4:Sentry 监控 + 自动修复

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

让 Claude 检查最近 24 小时的错误并生成修复方案:

查看 Sentry 最近 24 小时的 JavaScript 错误,按频率排序,给出修复建议。

示例 5:团队共享配置(Git 协作)

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

这样 .mcp.json 会被提交到 Git,整个团队都能用:

{
  "mcpServers": {
    "notion": {
      "transport": "http",
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

10. 最佳实践 & 故障排除

最佳实践

  • 少即是多:只添加你真正常用的 MCP(建议不超过 3–4 个)。需要省 token 时,可以考虑社区开发的”轻量 MCP”或直接用 CLI 工具代替部分 MCP
  • 先用 HTTP 远程,最简单安全
  • 团队协作:用 --scope project.mcp.json 提交到 Git
  • 权限控制:用 --allowedTools 或企业托管策略
  • 定期审计:用 claude mcp list 检查已添加的服务器,删除不用的

常见问题

问题解决方案
认证失败/mcp 清除后重新登录
服务器没响应claude mcp get <name> 检查状态
Windows Stdio 问题cmd /c 包裹命令
Token 消耗太高确认 ENABLE_TOOL_SEARCH 已启用,或删除不用的 MCP

安全提醒

只添加可信来源的服务器,避免提示注入风险。不要随意添加来路不明的 MCP。

11. 参考链接