写给小白的 Claude Code 进阶指南:MCP 让效率翻倍

cover

上一篇我们讲了 Skills,让 Claude 学会了各种”技能包”。但 Skills 有个局限:它只能处理本地的事情。

如果你想让 Claude 访问 GitHub 仓库、搜索网页、操作数据库、控制浏览器,怎么办?

这就是 MCP(Model Context Protocol,模型上下文协议)要解决的问题。

配置好 GitHub MCP 之后,我第一次测试是让它”列出我最近的 PR”。它真的列出来了。那一刻有点奇怪——我没有打开浏览器,没有复制粘贴,Claude 直接从 GitHub 拿到了数据。这种感觉和用 Copilot 补全代码完全不同,更像是给了 AI 一双手。

什么是 MCP?为什么它这么重要

MCP 是 Anthropic 在 2024 年推出的开放协议,专门用来连接 AI 和外部工具。

在 MCP 出现之前,每个工具都需要单独集成。你想让 AI 访问 GitHub,就得写一套 GitHub 的集成代码;想访问 Notion,又得写一套 Notion 的代码。每个工具的 API 不同、认证方式不同、数据格式不同,维护起来是个噩梦。

MCP 统一了这一切。

它就像一个”翻译器”,把各种工具的语言翻译成 Claude 能理解的标准格式。工具开发者只需要按照 MCP 协议写一个”服务器”,Claude 就能自动使用这个工具。

截至 2026 年 2 月,MCP 生态已经有超过 200 个社区服务器。GitHub 和 Brave Search 这两个服务器就占了社区安装量的 45%。在发布后的前 6 个月,就有超过 1 万名开发者采用了 MCP。

这个增长速度说明了什么?说明 MCP 解决了一个真实的痛点。

MCP 的三种连接方式

在配置 MCP 之前,你需要了解三种连接方式:

1. Stdio(标准输入输出)

最常用的方式,适合本地运行的服务器。Claude Code 通过命令行启动服务器,然后通过标准输入输出进行通信。

优点:简单、快速、适合开发测试
缺点:只能在本地运行

2. SSE(Server-Sent Events)

适合远程服务器,使用 HTTP 长连接。服务器可以主动推送消息给 Claude。

优点:支持远程、实时通信
缺点:配置稍复杂

3. HTTP Streamable

2026 年推荐的标准方式,基于 HTTP 的流式传输。

优点:标准化、支持远程、性能好
缺点:需要服务器支持

90% 的情况下,你会用 Stdio 方式连接本地服务器。

5 分钟快速上手:配置你的第一个 MCP 服务器

让我们从最实用的 GitHub MCP 服务器开始。

第一步:准备 GitHub Token

访问 GitHub Settings → Developer settings → Personal access tokens → Generate new token

需要的权限:

  • repo(访问仓库)
  • read:org(读取组织信息)
  • read:user(读取用户信息)

生成后,复制这个 Token,我们马上要用。

第二步:添加 GitHub MCP 服务器

打开终端,运行:

1
claude mcp add github -s user -- npx -y @modelcontextprotocol/server-github

系统会提示你输入 GitHub Token,粘贴刚才复制的 Token。

命令解释:

  • claude mcp add:添加 MCP 服务器
  • github:服务器名称(可以自定义)
  • -s user:作用域为用户级别(所有项目可用)
  • --:分隔符,后面是服务器启动命令
  • npx -y @modelcontextprotocol/server-github:使用 npx 运行 GitHub MCP 服务器

第三步:验证连接

运行:

1
claude mcp list

你应该能看到 github 服务器,状态为 connected

第四步:使用 GitHub MCP

启动 Claude Code:

1
claude

然后试试这些命令:

1
列出我的所有 GitHub 仓库
1
在 my-project 仓库创建一个 Issue,标题是"添加用户认证功能"
1
查看 my-project 仓库最近的 5 个 PR

Claude 会自动调用 GitHub MCP 服务器来完成这些操作。

就是这么简单。

常用 MCP 服务器推荐

1. Brave Search - 网页搜索

让 Claude 能够实时搜索网页,获取最新信息。

1
2
3
claude mcp add brave-search -s user \
--env BRAVE_API_KEY=your_api_key \
-- npx -y @modelcontextprotocol/server-brave-search

使用场景:

  • “搜索 React 19 的新特性”
  • “查找最新的 TypeScript 教程”
  • “搜索这个错误信息的解决方案”

2. Playwright - 浏览器自动化

让 Claude 能够控制浏览器,进行网页操作。

1
2
claude mcp add playwright -s user \
-- npx -y @playwright/mcp@latest

使用场景:

  • “打开这个网站并截图”
  • “填写这个表单并提交”
  • “测试这个页面的登录流程”

3. PostgreSQL - 数据库访问

让 Claude 能够查询和操作数据库。

1
2
3
claude mcp add postgres -s user \
--env DATABASE_URL=postgresql://user:pass@localhost:5432/dbname \
-- npx -y @modelcontextprotocol/server-postgres

使用场景:

  • “查询上个月的销售总额”
  • “找出最活跃的 10 个用户”
  • “更新这个用户的邮箱地址”

4. Filesystem - 文件系统访问

让 Claude 能够访问指定目录的文件。

1
2
claude mcp add filesystem -s user \
-- npx -y @modelcontextprotocol/server-filesystem ~/Documents ~/Projects

使用场景:

  • “读取 Documents 目录下的所有 PDF”
  • “在 Projects 目录创建一个新项目”
  • “搜索包含特定关键词的文件”

5. Context7 - 实时文档查询

让 Claude 能够查询最新的技术文档。

1
2
claude mcp add context7 -s user \
-- npx -y @context7/mcp-server

使用场景:

  • “查询 Next.js 14 的最新 API”
  • “React Router v6 的使用方法”
  • “Tailwind CSS 的配置选项”

MCP 的三种作用域

配置 MCP 时,你需要选择作用域(scope):

local(本地):只在当前项目生效,不会被 Git 记录

1
claude mcp add my-server -s local -- command

project(项目):在当前项目生效,会被 Git 记录,团队共享

1
claude mcp add my-server -s project -- command

配置会保存在项目根目录的 .mcp.json 文件中。

user(用户):在所有项目中生效,只对你自己可用

1
claude mcp add my-server -s user -- command

配置会保存在 ~/.claude.json 文件中。

选择建议:

  • 个人工具(GitHub Token、API Key)→ user
  • 团队共享工具(项目数据库、共享服务)→ project
  • 临时测试 → local

环境变量的正确管理方式

很多 MCP 服务器需要 API Key 或 Token。千万不要把这些敏感信息直接写在配置文件里。

错误做法:

1
2
# 不要这样做!Token 会被记录在配置文件中
claude mcp add github -- npx server-github --token ghp_xxxxx

正确做法:

方式一:使用环境变量

1
2
3
4
5
6
7
# 先设置环境变量
export GITHUB_TOKEN=ghp_xxxxx

# 然后在命令中引用
claude mcp add github -s user \
--env GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_TOKEN \
-- npx -y @modelcontextprotocol/server-github

方式二:使用密钥管理器(推荐)

1
2
3
4
5
6
# macOS Keychain
export GITHUB_TOKEN=$(security find-generic-password -s "github-mcp" -w)

claude mcp add github -s user \
--env GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_TOKEN \
-- npx -y @modelcontextprotocol/server-github

方式三:在配置文件中使用变量引用

编辑 ~/.claude.json,使用 ${VAR} 语法:

1
2
3
4
5
6
7
8
9
10
11
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}

然后在 shell 配置文件(~/.zshrc~/.bashrc)中设置:

1
export GITHUB_TOKEN=ghp_xxxxx

根据 2026 年的安全最佳实践,建议每 90 天轮换一次 Token。

常见问题排查

问题 1:MCP 服务器连接失败

症状:claude mcp list 显示服务器状态为 disconnected

排查步骤:

  1. 检查 Node.js 版本(需要 18+,推荐 22 LTS)
1
node -v
  1. 手动测试服务器启动
1
npx -y @modelcontextprotocol/server-github

如果手动能启动但 Claude Code 连接失败,问题在配置。

  1. 查看详细日志
1
claude mcp logs github
  1. 测试连接
1
claude mcp test github

问题 2:找不到 MCP 工具

症状:Claude 说”我没有访问 GitHub 的权限”

原因:作用域设置不对,或者在错误的目录下

解决:

  1. 确认服务器已添加
1
claude mcp list
  1. 检查作用域

    • local 作用域:必须在项目目录下
    • project 作用域:必须在项目目录下
    • user 作用域:任何地方都可以
  2. 重启 Claude Code

问题 3:环境变量未生效

症状:服务器提示缺少 API Key

解决:

  1. 确认环境变量已设置
1
echo $GITHUB_TOKEN
  1. 重启终端,让环境变量生效

  2. 使用绝对路径引用环境变量

1
--env GITHUB_TOKEN=$(echo $GITHUB_TOKEN)

实战案例:自动化 GitHub 工作流

让我们用一个真实场景来展示 MCP 的威力。

场景:你收到一个 Bug 报告,需要创建 Issue、修复代码、提交 PR。

传统方式:

  1. 打开浏览器,登录 GitHub
  2. 创建 Issue
  3. 回到编辑器,修改代码
  4. 打开终端,提交代码
  5. 回到浏览器,创建 PR
  6. 填写 PR 描述

我自己测过这个流程,从收到 Bug 报告到 PR 创建完成,大概要 15 分钟,其中真正在”修代码”的时间不到 5 分钟,其余都是在切换窗口和填表单。

使用 MCP 的方式:

1
2
3
4
5
6
帮我处理这个 Bug:用户登录后页面空白

1. 在 GitHub 创建一个 Issue
2. 分析代码找出问题
3. 修复代码
4. 提交并创建 PR

Claude 会自动:

  1. 调用 GitHub MCP 创建 Issue
  2. 读取相关代码文件
  3. 修改代码
  4. 执行 git 命令提交
  5. 调用 GitHub MCP 创建 PR

整个流程,你只需要一句话。

写在最后

MCP 把 Claude Code 从一个”本地助手”变成了”全能助手”。

但我用了一段时间之后,发现自己踩了一个认知盲区:我一开始以为 MCP 越多越好,装了七八个,结果 Claude 有时候会在不该调用的时候调用某个工具,反而添乱。

后来我删掉了几个不常用的,只保留 GitHub、Brave Search 和 PostgreSQL,反而更顺手。

安全这件事也是真实的教训。我有一次把 GitHub Token 的权限给得太宽,后来发现它在一次操作里顺手修改了一个我没打算动的仓库设置。从那之后我养成了一个习惯:每个 Token 只给最小权限,每 90 天轮换一次。

MCP 的威力越大,你对它的行为就越需要保持清醒。这不是在劝你不用,而是说:用之前想清楚你给了它什么权限,以及出了问题你能不能快速撤回。

我现在还在摸索的一个问题:有没有办法让 Claude 在调用 MCP 工具之前,先告诉我它打算做什么?类似计划模式,但针对 MCP 操作的。如果你有思路,欢迎告诉我。