MCP 从零到实战 —— Claude Code 连接外部世界


读完这篇你会知道:MCP 到底是什么、怎么配、怎么用。没有任何抽象概念,全程实操。


一、一句话说清楚 MCP

Claude Code 只能操作你本机的文件。MCP 让它能操作 GitHub、数据库、Jira、Slack……任何你能想到的外部服务。

没有 MCP                          有 MCP
══════════════════════            ══════════════════════

Claude Code                       Claude Code
    │                                  │
    │ 能做的事:                        │ 能做的事:
    ├─ 读写本地文件                     ├─ 读写本地文件
    ├─ 执行本地命令                     ├─ 执行本地命令
    └─ 搜索项目代码                     ├─ 搜索项目代码
                                       ├─ 查 GitHub Issue
                                       ├─ 执行数据库 SQL
                                       ├─ 发 Slack 消息
                                       ├─ 建 Jira 任务
                                       ├─ 操作 Notion 文档
                                       └─ ... 无限扩展

二、MCP 是怎么工作的

不写代码,用人话解释

MCP 三要素
═══════════════════════════════════════════════════════════

  ┌──────────────────┐
  │  MCP 客户端       │  Claude Code 自己就是客户端
  │  (Client)       │  它的工作:发起请求
  └────────┬─────────┘
           │
           │   通过 MCP 协议通信(标准化的 JSON 格式)
           │   相当于两个人约定好的"接头暗号"
           │
           ▼
  ┌──────────────────┐
  │  MCP 服务器       │  另一个人写的"插件程序"
  │  (Server)       │  它的工作:执行实际操作
  └────────┬─────────┘
           │
           │   用自己最擅长的方式操作目标系统
           │   (SQL 操作数据库、API 操作 GitHub……)
           ▼
  ┌──────────────────┐
  │  外部系统         │  GitHub、MySQL、Slack、Jira……
  │  (Target)       │  你想让 AI 操作的任何东西
  └──────────────────┘

打个比方

把 Claude Code 想成 一个人,MCP 服务器想成 翻译官

  • 你想跟一个法国人(GitHub)说话,但你不懂法语
  • 你请了一个法语翻译(GitHub MCP Server)
  • 你跟翻译说中文,翻译转成法语跟法国人沟通
  • 法国人回法语,翻译转成中文告诉你

MCP 就是翻译官的「工作协议」——规定了翻译官该怎么干活、怎么汇报。


三、配置文件在哪

MCP 的配置写在 .claude/settings.json 里。你要么放在项目里(只对这个项目生效),要么放在用户目录(所有项目生效):

项目级配置                          用户级配置
══════════════════                  ══════════════════

项目目录/                           ~/.claude/
└── .claude/                        └── settings.json
    └── settings.json                   ↑
        ↑                               对所有项目生效
        只对当前项目生效

建议:GitHub Token 这种个人密钥放用户级,数据库连接这种和项目绑定的放项目级。


四、你的第一个 MCP:连接 GitHub

4.1 配置

.claude/settings.json 中写入:

{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.github.com/mcp",
      "headers": {
        "Authorization": "Bearer ghp_xxxxxxxxxxxx"
      }
    }
  }
}

就这几行。ghp_xxxxxxxxxxxx 换成你自己的 GitHub Personal Access Token。

Token 去哪搞?

  1. 打开 https://github.com/settings/tokens
  2. 点 “Generate new token (classic)”
  3. 勾上 repo、read:org、read:user 权限
  4. 生成 → 复制

4.2 配置完能做什么

配置完重启 Claude Code(或新开对话),MCP 自动生效。然后你就可以这样对话:

你:帮我看看我有哪些 open 的 issue

Claude Code 内部:
  → 发现你配置了 github MCP
  → 调用 MCP 工具:list_issues
  → GitHub 返回 issue 列表
  → 用中文整理好给你看

⏶ 对话效果:

你:帮我创建一个 issue,标题是「用户注册接口响应太慢」,
   描述是「POST /api/users/register 接口响应时间超过 2s,
   怀疑是数据库查询慢,需要加索引」
   标签打上 bug 和 performance

Claude Code:
  已创建 Issue #42 ——「用户注册接口响应太慢」
  https://github.com/yourname/yourproject/issues/42
你:帮我看看 feature/payment 分支和 main 有什么差异,
   列出改动的文件,每个文件改了什么

Claude Code(通过 GitHub MCP):
  ## feature/payment vs main

  | 文件 | 状态 | 变更 |
  |------|------|------|
  | PaymentController.java | 新增 | +156 行 |
  | PaymentService.java | 新增 | +234 行 |
  | application.yml | 修改 | +5 / -2 |
  | pom.xml | 修改 | +4 行(新增依赖)|

  总结:主要新增了支付模块,包含微信支付和支付宝两个渠道……
你:帮我 peer review 一下 PR #38

Claude Code:
  1. 拉取 PR #38 的 diff
  2. 逐文件审查
  3. 输出审查意见:

  ### PR #38 Review

  ⚠️ OrderService.java:45
  扣库存的逻辑没有加事务注解,并发下可能超卖。

  💡 PaymentController.java:23
  建议把金额校验提取到 DTO 的 @DecimalMin 注解,不要在 Controller 里做。

  ✅ 其他部分没有问题,代码风格符合项目规范。

4.3 你实际看到的权限提示

每次 AI 调用 MCP 工具,你都会看到类似这样的提示:

┌─────────────────────────────────────────────┐
│  Claude Code 想要使用 MCP 工具              │
│                                             │
│  服务器:github                              │
│  工具:list_issues                           │
│  参数:{ "repo": "yourname/yourproject" }    │
│                                             │
│  [ 允许 ] [ 拒绝 ] [ 总是允许 ]              │
└─────────────────────────────────────────────┘

频率高的操作可以选「总是允许」,和文件操作一样的逻辑。


五、第二个 MCP:连接本地数据库

5.1 安装与配置

数据库 MCP 服务器是跑在本地的 Node.js 程序。先安装:

# 以 SQLite 为例(最简单,无需额外安装数据库软件)
npm install -g @anthropic/mcp-server-sqlite

然后配置:

{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.github.com/mcp",
      "headers": {
        "Authorization": "Bearer ghp_xxxxxxxxxxxx"
      }
    },
    "sqlite": {
      "type": "local",
      "command": "npx",
      "args": [
        "-y",
        "@anthropic/mcp-server-sqlite",
        "--db-path",
        "./data/myapp.db"
      ]
    }
  }
}

对比一下两种类型:

HTTP 类型                           Local 类型
══════════════                      ═══════════════

  服务器跑在远程                        服务器跑在本地
  本质是调用 HTTP API                  本质是启动一个本地进程
  需要 URL + Token                     需要 command + args

  "type": "http",                  "type": "local",
  "url": "https://xxx/mcp",        "command": "python",
  "headers": { ... }               "args": ["server.py"]

5.2 数据库 MCP 能做什么

你:帮我看一下 user 表的结构

Claude Code → 调用 MCP describe_table
→ 返回:id, username, email, password_hash, created_at, status

你:最近一周每天的新注册用户数,帮我查一下

Claude Code → 调用 MCP execute_sql
→ SELECT DATE(created_at) as date, COUNT(*) FROM users
   WHERE created_at >= datetime('now', '-7 days')
   GROUP BY DATE(created_at)
   ORDER BY date

→ 结果:
  | 日期 | 新注册 |
  |------|--------|
  | 7/1  | 23     |
  | 7/2  | 31     |
  | 7/3  | 18     |
  | 7/4  | 45     |

你:帮我查出哪些用户注册了但从没下过单,
   把他们的邮箱列出来

Claude Code → 自动理解需求 → 写 JOIN 查询 → 返回结果

你不需要写 SQL。你描述需求,AI 写 SQL 并通过 MCP 执行。

5.3 MySQL / PostgreSQL 同理

{
  "mysql": {
    "type": "local",
    "command": "npx",
    "args": [
      "-y",
      "@anthropic/mcp-server-mysql",
      "--host", "localhost",
      "--port", "3306",
      "--user", "readonly_user",
      "--password", "${MYSQL_PASSWORD}",
      "--database", "myapp"
    ]
  }
}

⚠️ 安全提醒:生产数据库用只读账号,不要给 root。不要在生产环境配 MCP 除非你真的知道在做什么。


六、第三个 MCP:连接文件系统(访问其他目录)

默认情况下 Claude Code 只能操作当前项目目录。加一个 filesystem MCP 就能让它访问其他目录:

{
  "filesystem": {
    "type": "local",
    "command": "npx",
    "args": [
      "-y",
      "@anthropic/mcp-server-filesystem",
      "--root",
      "/Users/me/Documents",
      "--root",
      "/Users/me/Downloads"
    ]
  }
}
你:帮我在 Documents 目录下找一下所有和「合同」相关的 PDF 文件

Claude Code → filesystem MCP 搜索 → 列出结果

七、常见的 MCP 服务器列表

MCP 服务器 安装方式 能做什么
GitHub HTTP 连接 Issue/PR/Release 管理、代码搜索、Actions 查看
GitLab HTTP 连接 同上,针对 GitLab
SQLite npx @anthropic/mcp-server-sqlite 查询本地 SQLite 数据库
MySQL npx @anthropic/mcp-server-mysql 查询 MySQL 数据库
PostgreSQL npx @anthropic/mcp-server-postgres 查询 PostgreSQL 数据库
Filesystem npx @anthropic/mcp-server-filesystem 访问项目外的目录
Slack HTTP 连接 发送/读取消息
Jira HTTP 连接 管理 Issue/Sprint
Notion HTTP 连接 读写文档/数据库
Playwright npx @anthropic/mcp-server-playwright 浏览器自动化(E2E 测试用)
Docker npx @anthropic/mcp-server-docker 管理容器和镜像

八、MCP 工具在对话中是怎么被调用的

你不必手动指定用哪个工具——描述你的需求,AI 自动选择:

你说:"帮我把 issue #12 的状态改成 done"

Claude Code 内部决策链:
┌──────────────────────────────────────────────┐
│ 1. "改 issue 状态" → 这是 GitHub 的操作      │
│ 2. 我有 github MCP 吗?→ 有                  │
│ 3. github MCP 有什么工具?→ list_issues,     │
│    update_issue, create_issue, ...           │
│ 4. "改状态" → 用 update_issue 工具           │
│ 5. update_issue 需要什么参数?→              │
│    - owner: "yourname"                       │
│    - repo: "yourproject"                     │
│    - issue_number: 12                        │
│    - state: "closed"                         │
│ 6. 调用工具 → 等待结果 → 告诉你               │
└──────────────────────────────────────────────┘

整个决策过程不需要你参与,你只需要说人话。


九、常见问题

Q1:MCP 和内置工具有什么区别?

内置工具(Read/Write/Edit/Bash/...)     MCP 工具
════════════════════════════════        ═══════════════════

Claude Code 自带的                      需要额外配置才有
操作本地文件和命令                       操作外部服务
所有人都有,不能增减                     你可以无限扩展

MCP 不会替换内置工具,两者共存。AI 根据任务自动选。

Q2:我怎么知道配置成功了?

配好 MCP 后启动 Claude Code,如果看到类似这样的日志就说明成了:

✓ Connected to MCP server: github (1 tool loaded)
✓ Connected to MCP server: sqlite (3 tools loaded)

或者在对话中直接试:

你:用 github MCP 帮我查一下我的仓库列表

如果正常返回了仓库列表,说明配置成功。

Q3:一个项目可以配多少个 MCP?

没有硬性限制。一个典型的项目配置 3-5 个:

{
  "mcpServers": {
    "github": { ... },        // 代码管理
    "mysql": { ... },         // 数据库查询
    "jira": { ... },          // 任务管理
    "slack": { ... }          // 通知
  }
}

Q4:Token 和密码怎么安全存储?

❌ 不要这样:

{
  "headers": {
    "Authorization": "Bearer ghp_abc123def456"    ← 明文写死!
  }
}

✅ 用环境变量:

{
  "headers": {
    "Authorization": "Bearer ${GITHUB_TOKEN}"     ← 引用环境变量
  }
}

然后在终端设置 export GITHUB_TOKEN="ghp_abc..." 或者加到 ~/.bashrc


十、总结

MCP 的本质就一句话:把 Claude Code 的工具列表从「固定的 10 个」变成「你想要的任意个」。

学 MCP 只需要记住三步:

1. 找到/写一个 MCP Server(npm 上搜 @anthropic/mcp-server-xxx)
2. 在 settings.json 里写 5 行配置
3. 用自然语言跟 AI 说你想做什么

不需要理解协议细节,不需要写代码。你只需要知道配置怎么写,剩下的 AI 帮你搞定。


写于 2026 年 7 月 | 配合 CC入门课程.mdCC最佳实践.md 阅读效果更好

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐