Claude Code MCP 详细使用指南

TL;DR:MCP 是 Claude Code 的"万能扩展接口"——装一个 MCP,Claude 就能操作对应的系统(GitHub、数据库、浏览器、飞书…)。本文档覆盖你当前已安装的 10+ 个 MCP 服务器及其实际用法。


一、MCP 是什么?

MCP(Model Context Protocol) 是 Anthropic 推出的开放协议,用于将外部工具和数据源注入 Claude Code 的工具调用能力中。

直观理解:

Claude Code 本身的能力
├── 读文件(Read)    ── 只能读你给的路径
├── 写文件(Write)   ── 只能写到你给的路径
├── 执行命令(Bash)  ── 只能跑 shell 命令
│
MCP 给你的额外能力
├── → 直接查 GitHub API     (不用开浏览器)
├── → 直接查 Redis           (不用 ssh + redis-cli)
├── → 自动控制浏览器         (不用 DevTools 手动操作)
├── → 直接发飞书消息         (不用打开飞书客户端)
│
→ 所有这些操作,Claude 像用原生工具一样直接调用,你完全无感知

没有 MCP vs 有 MCP

场景 没有 MCP 有了 MCP
查看 GitHub PR 打开 Chrome → 登录 GitHub → 找到仓库 → 切到 Pull Requests 标签 → 手动浏览 “帮我看看最近合并的 PR”
排查 Redis 数据 SSH 到服务器 → 连 Redis → 输入 keys、get、hgetall → 手动分析 “看看 Redis 里 session:abc 的数据”
查技术文档 Google → 搜 React Hooks API → 打开 react.dev → 找 useEffect 文档 “Context7 查一下 React 18 hooks 最新写法”
前端性能调试 打开 Chrome DevTools → 切 Performance 面板 → 录屏 → 分析火焰图 “帮我看下首页的 Lighthouse 评分和性能瓶颈”

二、MCP 能解决什么问题?

1. 消除上下文切换

以前你需要在多个窗口/工具间反复切换:

浏览器 ←→ 终端 ←→ 编辑器 ←→ Slack ←→ 飞书

有了 MCP,所有工作流都收敛到 Claude Code 对话框:

你 ↔ Claude Code ←→ 所有系统(通过 MCP)

2. 让 Claude 操作真实系统

MCP 让 Claude 从「会说话」变成「能干活的助手」:

能做什么                          怎么做
─────────────────────────────────────────────────────
查数据库      ✓                    SQL query via MySQL MCP
清缓存        ✓                    Redis GET / DELETE
创建 Issue    ✓                    GitHub MCP create_issue
自动化测试    ✓                    Playwright E2E 流程
截图/录屏     ✓                    Chrome DevTools / utools
搜索文档      ✓                    Context7 查最新版 API
读写任意文件  ✓                    Filesystem MCP(可配置范围限制)
发消息到群聊  ✓                    Feishu MCP 发消息

3. 跨工具联动

MCP 最强大的地方在于 组合使用

“帮我查飞书文档里的需求描述 → 去 GitHub 创建对应 Issue → 在 Redis 里标记为进行中 → 通知相关人员”

这是一句话完成的多步骤跨系统任务,每个步骤调用不同的 MCP。


三、架构:MCP 是怎么工作的?

┌─────────────────────────────────────────────────┐
│                Claude Code                       │
│                                                  │
│  ┌──────────────────────────────────────────┐   │
│  │          Tool Call Router                 │   │
│  │                                          │   │
│  │  Read?    → 内置工具                     │   │
│  │  Write?   → 内置工具                     │   │
│  │  Bash?    → 内置工具                     │   │
│  │  ?        → 交给对应 MCP                  │   │
│  └──────────────────────────────────────────┘   │
│                      │                           │
│                      ▼                           │
│  ┌─────────────┬─────────────┬───────────────┐  │
│  │  GitHub MCP │  Redis MCP  │  Chrome MCP   │  │
│  │  (node)     │  (stdio)    │  (http)       │  │
│  └─────┬───────┴─────┬───────┴───────┬───────┘  │
└────────┼─────────────┼───────────────┼──────────┘
         ▼             ▼               ▼
   ┌───────────┐  ┌───────────┐  ┌───────────┐
   │ GitHub API │  │  Redis     │  │ Chrome    │
   │            │  │ Server     │  │ Browser   │
   └───────────┘  └───────────┘  └───────────┘

关键概念:

概念 说明
MCP Server 一个独立的进程(通常是 node/python),实现了一套标准化的工具接口
Transport MCP Server 与 Claude Code 通信的方式,最常见的是 stdio(标准输入输出)
Tools MCP Server 暴露的具体功能(如 GitHub 的 list_issues、Playwright 的 navigate)
Resources MCP Server 提供的可读取数据源(不是所有 MCP 都有)

四、当前已安装的 MCP 清单

4.1 已安装 MCP 总览

# MCP 名称 类型 安装方式 你用它做什么
1 context7 文档查询 npm 全局安装 查 React/Vue/MyBatis 等框架最新文档,获取代码示例
2 github GitHub API npm 全局安装 + Token 查 PR、建 Issue、Review 代码、管理分支
3 filesystem 文件系统 npm 全局安装 批量读写 Home 目录下的文件

4.2 各 MCP 详细用法

Context7 — 项目依赖的最新文档查询

为什么需要它?

❌ 没有 Context7:
你在写 MyBatis-Plus 分页代码,不确定 3.5 版本用的是 selectPage 还是 Page 构造器的参数顺序
→ 打开 Google → 搜"MyBatis-Plus 3.5 分页 API" → 
  第1个结果是 2022 年的博客 → 第5个才是官网但要看半天 → 
  复制粘贴过去发现版本不对
✅ 有了 Context7:
"Context7 查一下 MyBatis-Plus 3.5 的分页写法"
→ Claude 直接调 Query Documentation 工具
→ 返回官网上架的最新代码示例
→ 你拿到正确代码

可用场景:

# 查任何框架的最新文档
"用 Context7 查一下 Spring Boot 3 的 controller 注解变化"
"用 Context7 查 Next.js 14 app router 的服务端组件写法"
"用 Context7 查 Prisma 最新 version 的 relation 定义语法"

# 对比不同版本
"用 Context7 查 React 17 和 18 的 Hooks 有什么区别"

支持的项目:
超过 300+ 知名开源项目,包括 React、Vue、Next.js、Spring Boot、Django、Prisma、TailwindCSS、Express、Docker、Kubernetes 等主流项目。


GitHub — 完整 GitHub 仓库管理

核心能力矩阵:

操作类别 具体能力
Issue 创建/关闭/评论 Issue、获取 Issue 详情、子 Issue 管理
Pull Request 创建/更新 PR、合并 PR、Request Review、添加 Review Comment
代码搜索 精确搜索符号、函数、类名
分支 创建分支、列出分支、获取 Commit
Release 列出 Release、获取 Tag、Latest Release
安全扫描 Secret Scanning(密钥泄露检测)

典型用法:

# 查看最近的 PR
"帮我看看项目最近一周有哪些 PR 被合并了,列出 commit 信息和变更概要"

# 创建 Issue
"创建一个 Issue,标题是 fix(auth): 修复登录超时问题,描述包含复现步骤和解决方案"

# 代码审查
"帮我 Review 当前分支的所有改动,标注出潜在的边界问题"

# 管理 PR
"给当前分支创建一个 PR 到 main,标题用 feat(api): 新增用户权限管理模块"

# 搜索代码
"搜索一下代码库里所有用到 UserService 的地方,我想知道修改这个类会影响哪些文件"

Filesystem — 安全的文件批量操作

作用范围:

你的 Filesystem MCP 配置为 /Users/xiaoxiangyuan,意味着它可以访问整个 Home 目录的文件。这是通过参数传递的限制路径实现的。

典型用法:

# 文件搜索与批量操作
"帮我把 ~/Downloads 里所有 .pdf 文件移动到 ~/Documents/参考资料/"
"搜索 Home 目录下所有包含 'TODO' 的 .java 文件"

# 文件信息获取
"检查 ~/.claude/settings.json 的大小和最后修改时间"

# 多文件同时读写
"同时读取这 5 个配置文件,告诉我它们的差异"

安全注意事项:

⚠️ 该 MCP 可以删除文件!
⚠️ 不要在不确定时让它做 destructive 操作
⚠️ 涉及 rm、git reset --hard 等操作前会等待你的确认

4.3 插件加载的 MCP

以下 MCP 是通过 Claude Code 的插件机制自动加载的,你不需要手动管理它们的生命周期:

插件来源 提供的 MCP 说明
superpowers@claude-plugins-official brainstorming、writing-plans、test-driven-development、debugging 等工作流型 MCP 提供结构化的开发方法论,作为 Skill 调用
context7@claude-plugins-official context7 MCP 同上方 installed MCP
playwright@claude-plugins-official playwright 浏览器自动化 MCP 完整的浏览器控制能力
claude-mem@thedotmack mem-search、smart-explore、knowledge-agent 等记忆/知识类 MCP 持久化记忆检索

此外还有其他独立安装的工具类 MCP:

  • feishu — 飞书文档、群组、消息操作
  • chrome-devtools — Chrome 浏览器调试
  • mysql — 数据库 SQL 执行
  • redis — Redis 缓存操作
  • sequential-thinking — 结构化推理
  • utools — macOS 系统集成(剪贴板、OCR、录屏等)

五、实战场景详解

场景 1:代码开发 — 从查文档到落地的完整闭环

你的需求:"帮我用 Context7 查一下 MyBatis-Plus 3.5 最新分页写法,
           然后改造 UserService 的分页方法"

Claude 的工作流程:
┌──────────────────────────────────────────────┐
│ ① 调 mcp__context7__resolve-library-id       │
│    → 查到 "/mybatis-plus/mybatis-plus/3.5.x" │
│                                              │
│ ② 调 mcp__context7__query-docs               │
│    → 返回 3.5 版本的 selectPage API 用法      │
│                                              │
│ ③ Read UserService.java                        │
│    → 找到当前的分页方法                         │
│                                              │
│ ④ Edit 修改分页逻辑                            │
│    → 按照 Context7 返回的正确 API 重写         │
│                                              │
│ ⑤ 自检:改完后的代码是否符合规范?              │
└──────────────────────────────────────────────┘

场景 2:数据排查 — 同时操作 MySQL 和 Redis

你的需求:"帮我查 MySQL 里 id=123 的用户数据,
           再看看 Redis 里有没有对应的缓存,不一致告诉我"

Claude 的工作流程:
┌──────────────────────────────────────────────┐
│ ① mcp__mysql-kkd-prod__mysql_query           │
│    SELECT * FROM users WHERE id = 123        │
│    → 得到 name: "张三", status: "active"     │
│                                              │
│ ② mcp__redis-local__get                      │
│    key: "user:123"                           │
│    → 得到 {"name":"张三","status":"expired"} │
│                                              │
│ ③ 对比发现 status 不一致                     │
│    → 告诉你:"MySQL 显示 active,但 Redis      │
│               缓存里是 expired,可能是缓存没  │
│               同步更新,建议清理缓存"          │
└──────────────────────────────────────────────┘

场景 3:前端调试 — 可视化分析页面质量

你的需求:"打开 http://localhost:3000,用 Chrome DevTools
           帮我看看首页的 Lighthouse 评分和性能问题"

Claude 的工作流程:
┌──────────────────────────────────────────────┐
│ ① lighthouse_audit()                        │
│    → 返回 Accessibility: 92                   │
│       Best Practices: 88                      │
│       SEO: 95                                 │
│                                              │
│ ② performance_start_trace()                 │
│    → 记录页面加载过程的火焰图                  │
│                                              │
│ ③ 分析瓶颈                                    │
│    → "LCP 主因是首屏图片过大(2.3MB)"        │
│    → "CLS 偏高因为广告位占位不稳定"            │
│                                              │
│ ④ take_screenshot()                          │
│    → 生成页面截图附在报告中                    │
└──────────────────────────────────────────────┘

场景 4:团队协作 — 从需求到落地的一站式

你的需求:"根据飞书文档里 Q2 需求规划的会议记录,
           在 GitHub 上创建对应的 Issue,
           然后在 Redis 里做个看板标记进度"

Claude 的工作流程:
┌──────────────────────────────────────────────┐
│ ① feishu 相关工具                             │
│    → 搜索飞书文档 "Q2 需求规划"               │
│    → 提取会议中的 TaskList                     │
│                                              │
│ ② github 工具                                │
│    → 为每个 Task 创建 GitHub Issue             │
│    → 设置 Label: "q2-roadmap"                 │
│                                              │
│ ③ redis 工具                                  │
│    → Hash 存储任务状态                          │
│    → HSET q2-board task_1 status:in_progress  │
│                                              │
│ ④ feishu 工具                                │
│    → 在群里发一条通知:「Q2 需求已全部创建      │
│       GitHub Issue,共 N 个」                  │
└──────────────────────────────────────────────┘

六、MCP 管理命令

命令行管理

# ═══════════════════════════════════
# 查看与管理
# ═══════════════════════════════════

# 列出所有已配置的 MCP 服务器
claude mcp list

# 查看某个 MCP 的配置详情
claude mcp get <name>

# ═══════════════════════════════════
# 添加 MCP(三种方式)
# ═══════════════════════════════════

# 方式1:npm 包(stdio 模式,最常用)
claude mcp add <name> -- npx -y <package-name>

# 方式2:HTTP 端点(服务端托管)
claude mcp add --transport http <name> <url> \
  --header "Authorization: Bearer <token>"

# 方式3:本地可执行文件
claude mcp add <name> -- ./path/to/binary --arg1 --arg2

# ═══════════════════════════════════
# 带环境变量
# ═══════════════════════════════════

claude mcp add --scope user -e MY_API_KEY=xxx \
  my-service -- npx -y @some/package

# ═══════════════════════════════════
# 移除 MCP
# ═══════════════════════════════════

claude mcp remove <name> --scope user

配置文件的存储位置

~/.claude/mcp.json                    ← 你的 MCP 配置(由 claude mcp add 管理)
~/Document/claudeCode/config/.claude/settings.local.json  ← 项目级权限白名单
~/.claude/settings.json              ← 全局设置(API Key、模型、插件)

你的实际配置内容 (~/.claude/mcp.json):

{
  "mcpServers": {
    // Context7 — 查文档
    "context7": {
      "command": "node",
      "args": ["/usr/local/lib/node_modules/@upstash/context7-mcp/dist/index.js"]
    },

    // GitHub — 仓库管理(需要 Token)
    "github": {
      "command": "node",
      "args": ["/usr/local/lib/node_modules/@modelcontextprotocol/server-github/dist/index.js"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "github_pat_xxx..."
      }
    },

    // Filesystem — 文件操作(限定范围)
    "filesystem": {
      "command": "node",
      "args": ["/usr/local/lib/node_modules/@modelcontextprotocol/server-filesystem/dist/index.js",
               "/Users/xiaoxiangyuan"]
    }
  }
}

常见安装模板速查

MCP 名称 安装命令 需要什么
Git claude mcp add git -- npx -y @modelcontextprotocol/server-git 无需配置
Brave Search claude mcp add -e BRAVE_API_KEY=key search -- npx -y server-brave-search Brave API Key
PostgreSQL claude mcp add postgresql -- npx -y server-postgres "postgresql://host/db" 数据库连接串
Slack claude mcp add -e SLACK_BOT_TOKEN=xoxb slack -- npx -y server-slack Slack Bot Token
Docker claude mcp add docker -- npx -y server-docker 无需配置
SQLite claude mcp add sqlite -- npx -y server-sqlite /path/to/db.sqlite 数据库文件路径

七、最佳实践

1. 不要装太多 MCP

原则:按需安装,每个 MCP 都要有实际使用场景

理由:
- 每次 Claude 启动都要初始化所有 MCP
- MCP 越多,启动越慢
- 不用的 MCP 反而会增加工具选择噪音

建议:保持 3-10 个高频使用的 MCP

2. 生产环境 MCP 要谨慎

⚠️ Redis 操作(DEL/HSET FLUSHALL)
   → 建议只配置 read-only 的 MCP
   → 或者明确只在 local 环境使用

⚠️ 数据库写入操作
   → 生产库 MCP 只做只读查询
   → 写操作走 CI/CD 或单独的管理 MCP

⚠️ GitHub token 权限
   → 使用 fine-grained PAT,最小权限原则
   → 不要给 admin 权限

3. 配置作用域的选择

作用域 生效范围 适合场景
--scope user(默认) 所有项目 GitHub、Context7 等通用工具
--scope local 仅当前项目 项目专属的 MCP
# 你想只在 java-demo 项目中用一个内部的监控 MCP
cd ~/Projects/java-demo
claude mcp add monitor -- ./internal-monitor-server --scope local

# 这个 MCP 对其他项目不可见

4. API Key 安全管理

✅ 放在 ~/.claude/settings.json 的 env 字段中
✅ 提交时排除(已经加在 .gitignore)
✅ 定期轮换
✅ 不要用同一个 Token 服务多个不相干的 MCP

❌ 写在 Chat 里告诉 Claude
❌ 放到项目目录的 config 里
❌ 硬编码在脚本中

5. 高效使用策略

策略1:善用 Context7 再动手写代码
  "Context7 查一下 X 的 API,然后再帮我改 Y"
  → 比盲猜快 5 倍,而且不会用过时 API

策略2:先用只读的 MCP 排查,确认后再操作
  "先帮我 Redis 里查一下 xxx key 的内容,
   如果确认过期了再帮我清理"

策略3:复杂任务拆成子任务逐个处理
  "第一步:帮我查 GitHub 上所有 open 的 bug issue
   第二步:把高优先级的导出到一个文件
   第三步:总结归类"

策略4:组合使用不同 MCP
  "把这个页面的 HTML 源码抓取下来 →
   用 grep 搜索特定的 class →
   在本地文件里标记出来"

八、常见问题

Q1: 怎么知道某个 MCP 有没有成功加载?

A: 向 Claude 提问即可,如果 MCP 正常工作,它会自动调用对应的工具。你也可以:

claude mcp list  # 查看所有已配置且可达的 MCP

Q2: MCP 报 Connection Refused 怎么办?

A: 检查以下几点:

  1. MCP 依赖的进程是否在运行?(Redis/MySQL 等)
  2. npm 包是否安装成功?ls /usr/local/lib/node_modules/@modelcontextprotocol/
  3. 配置文件格式是否正确?

Q3: 如何判断该用内置工具还是 MCP?

情况 推荐
读/写/搜索本地文件 内置 Read/Edit/Glob/Grep(更快)
操作远程系统(GitHub/API/DB) MCP(内置工具做不到)
批量文件操作(移动/重命名) Filesystem MCP(语义更清晰)
执行 shell 命令 内置 Bash

Q4: MCP 和 Claude Code 的 Skill 有什么区别?

对比项 MCP Skill
本质 进程(独立运行的程序) 指令集(纯文本文件)
能力 操作外部系统 指导 Claude 的行为模式
生命周期 常驻内存,等待调用 按需加载,用完释放
例子 context7(查文档) karpathy-guidelines(编码准则)
关系 MCP 是手 Skill 是大脑

Q5: 我想自定义一个 MCP 怎么办?

A: 你可以用 TypeScript/Python 开发自己的 MCP Server。基本结构:

// my-mcp-server/index.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";

const server = new McpServer({ name: "my-tool", version: "1.0.0" });

// 注册一个工具
server.tool("check-health", { appName: z.string() }, async ({ appName }) => {
  return {
    content: [{ type: "text", text: `${appName} running, uptime: 99.9%` }]
  };
});

打包后用 claude mcp add my-tool -- ./path/to/my-server 安装。


九、附录

A. 快速参考卡片

┌─────────────────────────────────────────────────────┐
│              Claude Code MCP Quick Ref               │
├──────────────┬──────────────────────────────────────┤
│ 查文档       │ "Context7 查一下 React 18 Suspense"   │
│ 查 PR/Issue  │ "给我看最近 5 个 open PR 的 diff"      │
│ 创建 Issue   │ "创建一个 Bug Issue,标题+描述+"       │
│ 管理文件     │ "把 ~/Downloads 的 pdf 移到 docs/"    │
│ 查数据库     │ "帮我查 MySQL 今天新增了多少钱的订单"  │
│ 操作缓存     │ "Redis 里以 'cache:' 开头的 key"     │
│ 调试前端     │ "打开 localhost:3000 截个图给我看"    │
│ 协作沟通     │ "在飞书群里发一条构建成功的消息"       │
│ 结构化思考   │ "用 Sequential Thinking 分析一下这个"  │
└──────────────┴──────────────────────────────────────┘

B. 术语表

术语 全称 含义
MCP Model Context Protocol Anthropic 定义的模型上下文协议
Client Claude Code 发起 MCP 连接的客户端
Server MCP Server 实现协议的工具提供者
Transport 客户端和服务端之间的通信通道,通常是 stdio
Tool MCP Server 暴露的具体操作方法
Resource MCP Server 提供的可读数据
Prompt MCP Server 提供的可复用对话模板

C. 相关资源

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐