Claude Code MCP 详细使用指南
Claude Code MCP 功能摘要 Claude Code MCP(Model Context Protocol)是一个扩展接口系统,可将外部工具和数据源无缝集成到Claude Code中。MCP消除了传统工作流中的上下文切换,让用户通过自然语言指令直接操作系统功能。 核心优势: 工具集成 - 直接操作GitHub、数据库、浏览器等系统 工作流简化 - 单一对话框完成跨系统任务 自动化能力
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: 检查以下几点:
- MCP 依赖的进程是否在运行?(Redis/MySQL 等)
- npm 包是否安装成功?
ls /usr/local/lib/node_modules/@modelcontextprotocol/ - 配置文件格式是否正确?
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. 相关资源
更多推荐



所有评论(0)