第3章 MCP (Model Context Protocol)

用 MCP 给 Claude 接上外部工具和数据源,让它成为真正的全能助手

3.1 用大白话理解 MCP

想象你有一个万能遥控器(Claude),但它出厂时只能控制电视。你给它加上 MCP 适配器后:

MCP = 一个统一的「插座」标准。只要工具遵循这个标准,Claude 就能直接使用它。

Claude Code
↕ MCP 协议 ↕
MCP Server ←→ 外部服务
MCP Server ←→ 数据库
MCP Server ←→ 第三方 API

3.2 MCP 能做什么?

以下是 MCP 的典型应用场景:

3.3 MCP 的架构

MCP 分为三个角色:

  1. Host(主机):Claude Code 本身,它发起请求
  2. Server(服务器):运行在你本地或远程的 MCP 服务进程,翻译请求
  3. Client(客户端):Claude Code 内的 MCP 客户端,与 Server 通信

3.4 MCP Server 从哪来?官方 vs 第三方

MCP Server 本质上是一个程序,它可以是一个 npm 包、一个 Python 包、或者一个可执行文件。你需要搞清楚的第一个问题是:

官方 MCP Server(Anthropic 维护)

Anthropic 官方提供了一批 MCP Server,以 npm 包形式发布在 @anthropic-ai/mcp-server-xxx 下:

包名用途需要什么凭据
@anthropic-ai/mcp-server-github操作 GitHub:查 PR、管理 Issue、查看仓库GitHub Personal Access Token
@anthropic-ai/mcp-server-postgres直连 PostgreSQL 数据库,执行 SQL 查询数据库连接字符串
@anthropic-ai/mcp-server-sqlite操作本地 SQLite 数据库文件数据库文件路径
@anthropic-ai/mcp-server-filesystem安全地读写指定目录下的文件允许访问的目录路径
@anthropic-ai/mcp-server-brave-search调用 Brave 搜索引擎搜网页Brave Search API Key
@anthropic-ai/mcp-server-puppeteer控制 Chrome 浏览器,自动化网页操作无(本地运行浏览器)
@anthropic-ai/mcp-server-slack发送/读取 Slack 消息Slack Bot Token
@anthropic-ai/mcp-server-memory给 Claude 加持久记忆能力无(本地存储)

关键认知:这些包不需要你手动 npm install。你只需要在配置文件中声明,Claude Code 会自动通过 npx 下载并运行。

第三方/社区 MCP Server

除了官方包,社区有大量第三方 MCP Server。查找途径:

第三方 MCP 的配置语法完全一样,只是 commandargs 不同。比如:

3.5 完整实操:给 Claude 加上 GitHub 能力

下面以 GitHub MCP Server 为例,从头到尾演示一遍。跟着操作就能学会。

Step 1:准备 GitHub Token

# 1. 打开浏览器,登录 GitHub
# 2. 访问:Settings → Developer settings → Personal access tokens → Fine-grained tokens
# 3. 点击 "Generate new token"
# 4. 勾选需要的权限(建议只勾选你实际需要的仓库和权限)
# 5. 生成后复制 token(格式如:github_pat_xxxx)
# ⚠️ token 只显示一次,请立刻保存!

Step 2:找到配置文件

# Claude Code 的配置文件位置:
# 用户级配置(全局生效):~/.claude/settings.json
# 项目级配置(仅当前项目):项目根目录/.claude/settings.json
# 本地敏感配置(不提交 git):~/.claude/settings.local.json

# 检查配置文件是否存在:
ls -la ~/.claude/settings.json

# 如果文件不存在,创建一个空 JSON:
echo '{}' > ~/.claude/settings.json

Step 3:添加 MCP 配置

编辑 ~/.claude/settings.json,添加 mcpServers 字段:

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@anthropic-ai/mcp-server-github"],
      "env": {
        "GITHUB_TOKEN": "github_pat_你的token在这里"
      }
    }
  }
}
配置逐行解释:
"github" — 你给这个 MCP Server 起的名字,可以随意取
"command": "npx" — 用 npx 来运行(npm 自带的包运行器)
"args": ["-y", "包名"]-y 表示自动确认安装,后面跟包名
"env" — 传给 MCP Server 的环境变量,如凭据、连接字符串等
安全提醒:Token 写在配置文件里,绝对不要把包含 token 的配置文件提交到 Git。建议把敏感凭据写在 ~/.claude/settings.local.json 中(该文件不会随项目提交)。

Step 4:重启 Claude Code 并验证

# 1. 退出当前 Claude Code 会话
# 2. 重新启动 Claude Code
# 3. 启动后,Claude 会自动加载 MCP 配置
# 4. 验证 MCP 是否生效——在对话中输入:

"请帮我列出当前可用的所有工具"

# 如果配置成功,Claude 的回答中会包含类似这样的工具:
# - mcp__github__get_issue
# - mcp__github__list_pull_requests
# - mcp__github__create_comment
# 等等...

Step 5:开始使用

# 现在你可以直接对 Claude 说这些:

"帮我查一下 anthropics/claude-code 最近 5 个 PR 的标题"
"把 issue #42 分配给我并打上 bug 标签"
"查看我名下所有待 review 的 PR"
"创建一个新的 issue,标题是「登录页面白屏」,描述如下:..."

3.6 完整实操:配置数据库 MCP

练习:让 Claude 直接操作 PostgreSQL

Step 1:确认数据库地址

# 你的数据库连接字符串格式:
# postgresql://用户名:密码@主机:端口/数据库名
# 例如:
# postgresql://admin:mypass@localhost:5432/myapp_dev

Step 2:编辑配置文件

# ~/.claude/settings.json 中添加:
{
  "mcpServers": {
    "github": { "..." },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@anthropic-ai/mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "postgresql://admin:mypass@localhost:5432/myapp_dev"
      }
    }
  }
}

Step 3:重启并使用

# 重启 Claude Code 后,试试这些:

"users 表有哪些字段?帮我看看表结构"
"最近 7 天注册了多少用户?写 SQL 帮我查一下"
"orders 表中金额大于 1000 的订单有多少?按日期分组统计"

Claude 会自动识别这些问题需要查询数据库,然后调用 MCP Server 执行 SQL 并解释结果。

3.7 MCP Server 速查表

以下整理了常用 MCP Server 的完整安装信息:

用途来源npm 包名运行方式需要凭据
GitHub官方 @anthropic-ai/mcp-server-github npx -y 包名 GITHUB_TOKEN
PostgreSQL官方 @anthropic-ai/mcp-server-postgres npx -y 包名 DATABASE_URL
SQLite官方 @anthropic-ai/mcp-server-sqlite npx -y 包名 文件路径参数
文件系统官方 @anthropic-ai/mcp-server-filesystem npx -y 包名 允许的目录路径
网页搜索官方 @anthropic-ai/mcp-server-brave-search npx -y 包名 BRAVE_API_KEY
浏览器自动化官方 @anthropic-ai/mcp-server-puppeteer npx -y 包名 无(本地 Chrome)
Slack官方 @anthropic-ai/mcp-server-slack npx -y 包名 SLACK_BOT_TOKEN
持久记忆官方 @anthropic-ai/mcp-server-memory npx -y 包名
Jira社区 @anthropic-ai/mcp-server-jira npx -y 包名 JIRA_API_TOKEN
Google Drive社区 搜索 npm 找最新包 看包文档 Google OAuth
找更多 MCP Server:github.com/topics/mcp-server 或 npm 搜 mcp-server。看到感兴趣的,看它的 README 就知道怎么配置了。配置语法和上面完全一样。

3.8 实践:搭建开发工作流 MCP

练习 2:组合多个 MCP

真正的威力在于组合。假设你配置了 GitHub MCP + Filesystem MCP,就可以实现这样的工作流:

你对 Claude 说:
"从 GitHub 上拉取 PR #42,分析代码改动,如果没问题就帮我 merge"

Claude 会:
1. 用 GitHub MCP 获取 PR #42 的详细信息
2. 用 Filesystem MCP 读取相关文件
3. 分析代码改动
4. 用 GitHub MCP 添加 review 评论
5. 确认没问题后 merge PR

3.9 MCP 的两种传输模式

模式说明适用场景
stdio通过标准输入输出通信,Server 作为子进程运行本地工具(数据库、文件系统)
HTTP/SSE通过 HTTP 请求通信,Server 作为独立服务运行远程服务、团队共享的 MCP

绝大多数情况使用 stdio 模式,配置简单,自动管理生命周期。

3.10 MCP vs 技能 vs 子代理——终极对比

MCP技能子代理
本质外部工具连接提示词+流程模板独立 AI 会话
给 Claude 什么新工具/能力专业知识与流程并行处理能力
类比给手机装 App给手机开专家模式多开一部手机
典型用途查数据库、调 API代码审查、初始化并行搜索、研究

3.11 常见问题

Q: MCP Server 安全吗?

MCP Server 运行在本地(或你控制的服务器上),权限由你配置。但要注意:给 MCP 什么权限,Claude 就能做什么操作。建议遵循最小权限原则

Q: 我能在团队间共享 MCP 配置吗?

可以。项目级的 MCP 配置放在 .claude/settings.json(可提交 git),个人敏感信息放在 ~/.claude/settings.local.json(不提交)。