Appearance
第 6 章:MCP 协议(Model Context Protocol)
本章概览
到目前为止,我们已经学会了如何与 Claude Code 进行对话、给它看文件、让它改代码。但 Claude Code 的能力远不止于此——通过 MCP 协议,你可以让 Claude Code 连接几乎任何外部工具和数据源,就像给它装上了各种"外挂"。
学习目标
- 理解 MCP 是什么,它解决了什么问题
- 掌握 MCP 的架构和工作原理
- 学会配置和添加 MCP Server
- 了解常见的 MCP Server 及其用途
- 理解项目级与全局配置的区别
- 掌握 MCP 的安全注意事项
6.1 什么是 MCP?
6.1.1 一个类比
想象一下,Claude Code 本身是一位非常聪明的助手,但它被关在一间办公室里。它可以读你桌上的文件、帮你写东西,但它无法:
- 打电话给别人(调用外部 API)
- 上网查资料(访问网络服务)
- 操作你的其他软件(连接外部工具)
MCP(Model Context Protocol) 就是给这间办公室开了很多扇门,每扇门通向不同的地方——GitHub、数据库、Slack、浏览器等等。
6.1.2 正式定义
MCP 是由 Anthropic 推出的一个开放标准协议,它定义了 AI 模型(如 Claude)与外部工具和数据源之间的通信方式。你可以把它理解为 AI 世界的 "USB 接口"——只要工具遵循 MCP 标准,就能被 Claude Code 使用。
为什么需要 MCP?
在没有 MCP 之前,每个 AI 工具想要连接外部服务,都需要自己开发专门的集成代码。这就像每种电器都需要不同形状的插头一样麻烦。MCP 提供了统一的"插头标准",让任何工具都可以轻松接入。
6.1.3 MCP 解决的核心问题
| 问题 | 没有 MCP | 有了 MCP |
|---|---|---|
| 连接 GitHub | 需要专门开发 GitHub 集成 | 安装 GitHub MCP Server 即可 |
| 查询数据库 | 需要编写数据库连接代码 | 安装数据库 MCP Server 即可 |
| 操作浏览器 | 无法实现 | 安装 Puppeteer MCP Server 即可 |
| 发送通知 | 需要自定义脚本 | 安装 Slack MCP Server 即可 |
| 新工具接入 | 每次都要重新开发 | 遵循 MCP 标准即可快速接入 |
6.2 MCP 架构
6.2.1 三层架构
MCP 的架构非常清晰,由三个部分组成:
┌─────────────────────────────────────────────────────────┐
│ │
│ MCP Host (Claude Code) │
│ ┌──────────────┐ │
│ │ AI 模型 │ │
│ │ (Claude) │ │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ MCP Server A │ │ MCP Server B │ ... │
│ │ (GitHub) │ │ (Database) │ │
│ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │
└──────────┼────────────────────┼──────────────────────────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ GitHub API │ │ PostgreSQL │
│ (外部服务) │ │ (外部服务) │
└──────────────┘ └──────────────┘三个角色说明:
| 角色 | 说明 | 类比 |
|---|---|---|
| MCP Host | Claude Code 本身,负责管理和调用 MCP Server | 手机操作系统 |
| MCP Server | 中间桥梁,把外部服务的能力"翻译"成 Claude 能理解的格式 | 手机上的 App |
| External Service | 实际的外部工具或数据源 | App 连接的后端服务 |
6.2.2 通信流程
当你让 Claude Code 执行一个需要外部工具的任务时,流程如下:
你的请求: "帮我查看 GitHub 上 issue #42 的内容"
1. Claude Code(Host)分析你的请求
2. Claude 决定需要调用 GitHub MCP Server
3. Claude Code 向 GitHub MCP Server 发送请求
4. GitHub MCP Server 调用 GitHub API
5. GitHub API 返回 issue 数据
6. GitHub MCP Server 把数据格式化后返回给 Claude
7. Claude 理解数据,用自然语言回复你6.2.3 MCP Server 提供的能力类型
每个 MCP Server 可以提供三种类型的能力:
MCP Server 能力类型:
1. Tools(工具)
- 可执行的操作,如"创建 issue"、"查询数据库"
- Claude 可以主动调用
2. Resources(资源)
- 可读取的数据,如"项目文件列表"、"数据库表结构"
- 为 Claude 提供上下文信息
3. Prompts(提示模板)
- 预定义的交互模板
- 帮助用户更好地使用特定功能6.3 配置 MCP Server
6.3.1 使用 claude mcp add 命令
添加 MCP Server 最简单的方式是使用命令行:
bash
# 基本语法(本地 stdio 进程)
claude mcp add <server-name> <command> [args...]
# 远程 HTTP/SSE 服务器——使用 --transport 指定传输方式
claude mcp add --transport http <server-name> <url>
claude mcp add --transport sse <server-name> <url>--transport 参数
许多第三方 SaaS 产品(Figma、Linear、Notion 等)提供托管式 MCP Server,不需要你在本地运行 npx,只需指定远程 URL。此时需要加 --transport http(Streamable HTTP)或 --transport sse(Server-Sent Events)。不加 --transport 则默认使用 stdio,即本地启动一个子进程。
常用子命令速览:
bash
claude mcp add <name> ... # 添加
claude mcp list # 列出已配置的 Server
claude mcp get <name> # 查看详情
claude mcp remove <name> # 删除claude mcp add-json:复杂配置一步到位
如果你需要同时指定 env、cwd、Header 等字段,可以直接传入一段 JSON,避免拼接大量命令行参数:
bash
claude mcp add-json sentry '{
"type": "http",
"url": "https://mcp.sentry.dev/mcp",
"headers": { "Authorization": "Bearer ${SENTRY_TOKEN}" }
}'6.3.2 配置作用域
添加 MCP Server 时,可以通过 -s 指定配置的作用范围:
bash
# 仅当前项目有效(默认)
claude mcp add my-server -s project npx -y some-server
# 当前用户全局有效
claude mcp add my-server -s user npx -y some-server| 作用域 | 标志 | 配置文件位置 | 适用场景 |
|---|---|---|---|
| Project | -s project | .claude/settings.json(项目目录下) | 项目专属的工具,如项目数据库 |
| User | -s user | ~/.claude/settings.json(用户主目录) | 通用工具,如 GitHub、Slack |
注意
项目级配置文件 .claude/settings.json 通常会被提交到 Git 仓库中,不要在里面放敏感信息(如密码、API Key)。敏感信息应该通过环境变量传递。
6.4 常见 MCP Server 示例
6.4.1 Filesystem Server(文件系统)
让 Claude Code 访问指定目录中的文件:
bash
claude mcp add filesystem npx -y @modelcontextprotocol/server-filesystem /Users/yourname/documents用途:
- 读取和搜索指定目录中的文件
- 在受限范围内操作文件
- 适合需要 Claude 访问项目外部文件的场景
使用示例:
你:请帮我在 documents 目录下找到所有包含"Q1 报告"的文件
Claude:我通过 filesystem MCP Server 搜索了您的 documents 目录,
找到以下 3 个文件包含"Q1 报告":
1. /documents/reports/Q1-report-2024.xlsx
2. /documents/meeting-notes/Q1报告讨论.md
3. /documents/drafts/Q1报告初稿.docx6.4.2 GitHub Server
让 Claude Code 直接操作 GitHub:
bash
# 使用官方 GitHub MCP Server
claude mcp add github -- npx -y @modelcontextprotocol/server-github
# 需要设置 GitHub Token 环境变量
export GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here如何获取 GitHub Personal Access Token
- 登录 GitHub,点击右上角头像 -> Settings
- 左侧菜单最下方点击 Developer settings
- 点击 Personal access tokens -> Tokens (classic)
- 点击 Generate new token (classic)
- 勾选需要的权限(建议至少勾选
repo和read:org) - 点击 Generate token,复制生成的 Token
- 妥善保存,Token 只会显示一次
用途和示例:
你:帮我查看 our-company/product-app 仓库最近的 5 个 Pull Request
Claude:以下是最近 5 个 PR:
1. #234 - 修复登录页面样式问题 (merged)
2. #233 - 添加用户反馈功能 (open)
3. #232 - 更新依赖版本 (merged)
4. #231 - 重构支付模块 (open)
5. #230 - 修复搜索结果排序 (merged)你:帮我在 our-company/product-app 创建一个 issue,标题是"需要添加暗色模式支持",
描述里包含用户需求背景和预期功能
Claude:已创建 Issue #235 "需要添加暗色模式支持"
链接:https://github.com/our-company/product-app/issues/2356.4.3 PostgreSQL / Database Server
让 Claude Code 查询数据库:
bash
# 使用 PostgreSQL MCP Server
claude mcp add postgres npx -y @modelcontextprotocol/server-postgres "postgresql://user:password@localhost:5432/mydb"安全警告
数据库连接字符串包含密码等敏感信息,绝对不要直接写在项目级配置文件中。推荐使用环境变量:
bash
# 设置环境变量
export DATABASE_URL="postgresql://user:password@localhost:5432/mydb"
# 使用环境变量添加 MCP Server
claude mcp add postgres npx -y @modelcontextprotocol/server-postgres "$DATABASE_URL"用途和示例:
你:帮我查看 users 表有多少条数据,以及最近注册的 10 个用户
Claude:users 表共有 15,234 条记录。
最近注册的 10 个用户:
| ID | 用户名 | 邮箱 | 注册时间 |
|-------|----------|-------------------|-------------------|
| 15234 | 张小明 | zhang@example.com | 2024-01-15 14:32 |
| 15233 | 李小红 | li@example.com | 2024-01-15 13:21 |
| ... | ... | ... | ... |6.4.4 Slack Server
让 Claude Code 与 Slack 交互:
bash
claude mcp add slack npx -y @modelcontextprotocol/server-slack
# 需要配置 Slack Bot Token
export SLACK_BOT_TOKEN=xoxb-your-token-here用途:
- 发送消息到指定频道
- 读取频道消息历史
- 搜索 Slack 中的信息
6.4.5 Puppeteer Server(浏览器自动化)
让 Claude Code 控制浏览器:
bash
claude mcp add puppeteer npx -y @modelcontextprotocol/server-puppeteer用途:
- 自动打开网页并截图
- 填写表单、点击按钮
- 抓取网页内容
- 生成页面预览
使用示例:
你:帮我打开我们的产品页面 https://our-product.com,截一张首页的图
Claude:已打开页面并截图,首页加载正常。
[截图预览]
页面加载时间约 2.3 秒,首屏包含以下主要元素:
- 顶部导航栏
- 主 Banner 区域
- 功能介绍卡片区6.4.6 更多 MCP Server
MCP 生态在快速发展,以下是一些实用的 MCP Server:
| MCP Server | 用途 | 适合场景 |
|---|---|---|
server-filesystem | 文件系统访问 | 需要访问项目外的文件 |
server-github | GitHub 操作 | 管理 issue、PR、代码审查 |
server-postgres | PostgreSQL 查询 | 数据分析、数据库操作 |
server-slack | Slack 消息 | 团队通知、信息搜索 |
server-puppeteer | 浏览器控制 | 网页截图、自动化测试 |
server-brave-search | 网络搜索 | 搜索互联网信息 |
server-memory | 知识图谱 | 持久化记忆和知识 |
server-fetch | HTTP 请求 | 调用 REST API |
server-sqlite | SQLite 查询 | 轻量级数据分析 |
发现更多 MCP Server
你可以在以下地方找到更多 MCP Server:
- GitHub: 搜索
mcp-server关键词 - npm: 搜索
@modelcontextprotocol包 - Anthropic 官方文档: 查看推荐的 MCP Server 列表
6.5 产品经理常用 MCP Server
对于产品经理来说,以下 MCP Server 能够覆盖日常工作中设计协作、项目管理、文档、代码仓库、错误监控、产品分析等核心场景。大部分是托管式服务,使用 --transport http 即可接入,无需本地安装。
6.5.1 Figma MCP(设计协作)
bash
claude mcp add --transport http figma https://mcp.figma.com/mcp连接 Figma 后,Claude 可以直接读取设计稿、提取 Design Token、对比设计与实现的差异。
PM 使用场景
你:请打开 Figma 项目 "App Redesign v2",列出所有页面的命名和状态
你:把 Figma 里 "结账流程" 页面的颜色和间距 Token 提取出来,
生成一份开发交付清单Figma MCP 是产品经理与设计师、工程师之间最有效的桥梁工具之一。
6.5.2 Linear MCP(项目管理)
bash
claude mcp add --transport http linear https://mcp.linear.app/mcpLinear 是许多团队的首选项目管理工具。接入后可以查询 Issue、创建 Ticket、追踪 Sprint 进度。
PM 使用场景
你:本周 Sprint 还有哪些未完成的任务?按优先级排列
你:帮我在 Linear 里创建一个 Bug Ticket:
标题「iOS 端搜索结果不显示图片」,优先级 P1,
分配给 @前端团队6.5.3 Jira / Atlassian MCP(项目管理)
bash
claude mcp add --transport sse atlassian https://mcp.atlassian.com/v1/sse如果你的团队使用 Jira,这个 MCP Server 支持 JQL 查询、创建和更新 Ticket。
PM 使用场景
你:用 JQL 查询所有分配给我的、状态为 "In Progress" 的 Ticket
你:本周有哪些未解决的 P0 Bug?帮我按模块分类汇总6.5.4 Notion MCP(文档)
bash
claude mcp add --transport http notion https://mcp.notion.com/mcp连接 Notion Workspace,搜索、读取和写入 Notion 页面及 Database。
PM 使用场景
你:在 Notion 的 "PRD" 数据库中搜索所有状态为 "Review" 的文档,
列出标题和负责人
你:帮我在 Notion 的周报页面中添加本周的产品进展摘要6.5.5 GitHub MCP(代码仓库)
bash
claude mcp add --transport http github \
https://api.githubcopilot.com/mcp \
-H "Authorization: Bearer <TOKEN>"两种 GitHub MCP 接入方式
- 托管式(上面的命令)—— 通过 GitHub Copilot API 端点,需要 Bearer Token
- 本地 stdio(6.4.2 节的方式)——
npx -y @modelcontextprotocol/server-github,需要GITHUB_PERSONAL_ACCESS_TOKEN环境变量
两者功能相同,选择你更方便的方式即可。
PM 使用场景
你:帮我查看 product-app 仓库最近一周 merged 的 PR,
按功能模块分类汇总
你:搜索 product-app 代码中所有包含 "TODO" 或 "FIXME" 的注释,
帮我评估技术债务6.5.6 Sentry MCP(错误监控)
bash
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp接入 Sentry 后可以查看线上错误、分析异常趋势、评估版本质量。
PM 使用场景
你:上线后 24 小时内新增了哪些 Unresolved Error?
按影响用户数排序
你:对比 v2.3.0 和 v2.2.0 的 Crash Rate,
这次发版质量如何?6.5.7 PostHog MCP(产品分析)
PostHog MCP 支持通过 HogQL 查询产品分析数据,适合自建分析平台的团队。
PM 使用场景
你:用 HogQL 查询过去 7 天的注册转化漏斗,
看看哪一步流失最严重
你:最近上线的 "快捷下单" 功能,DAU 和留存数据如何?6.5.8 Amplitude MCP(产品分析)
bash
claude mcp add --transport http amplitude https://mcp.amplitude.com/mcpAmplitude 是主流的产品分析平台。接入后可以查询留存、A/B 测试结果、行为分析数据。
PM 使用场景
你:查看 "新用户引导流程 v2" A/B 测试的结果,
对比两组的 7 日留存
你:过去 30 天里,哪些功能的周活跃用户数增长最快?6.5.9 PM MCP 工具速查表
| MCP Server | 类别 | 传输方式 | 一句话价值 |
|---|---|---|---|
| Figma | 设计协作 | HTTP | 审查设计稿、提取 Token |
| Linear | 项目管理 | HTTP | 查询 Issue、管理 Sprint |
| Jira/Atlassian | 项目管理 | SSE | JQL 查询、Ticket 管理 |
| Notion | 文档 | HTTP | 读写 Notion 页面和数据库 |
| GitHub | 代码仓库 | HTTP | PR 审查、Issue 管理、代码搜索 |
| Sentry | 错误监控 | HTTP | 线上错误追踪、版本健康度 |
| PostHog | 产品分析 | — | HogQL 查询、漏斗分析 |
| Amplitude | 产品分析 | HTTP | 留存、A/B 测试、行为分析 |
认证提醒
以上托管式 MCP Server 首次连接时通常会弹出 OAuth 授权页面,或需要你提供 API Token。请确保你有对应平台的账号和权限。Token 请通过环境变量管理,不要写入项目配置文件。
6.6 配置文件详解
6.6.1 配置文件格式
MCP Server 的配置存储在 JSON 格式的 settings 文件中:
项目级配置 (.claude/settings.json):
json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/path/to/project/docs"
]
},
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}用户级配置 (~/.claude/settings.json):
json
{
"mcpServers": {
"slack": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-slack"
],
"env": {
"SLACK_BOT_TOKEN": "${SLACK_TOKEN}"
}
},
"brave-search": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-brave-search"
],
"env": {
"BRAVE_API_KEY": "${BRAVE_API_KEY}"
}
}
}
}6.6.2 配置字段说明
json
{
"mcpServers": {
"server-name": { // Server 的名称标识
"command": "npx", // 启动命令
"args": [ // 命令参数
"-y",
"@modelcontextprotocol/server-xxx",
"additional-arg"
],
"env": { // 环境变量(可选)
"API_KEY": "xxx",
"ANOTHER_VAR": "${ENV_VARIABLE}" // 引用系统环境变量
},
"cwd": "/path/to/dir" // 工作目录(可选)
}
}
}| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
command | string | 是 | 启动 MCP Server 的命令 |
args | string[] | 否 | 命令行参数 |
env | object | 否 | 环境变量键值对 |
cwd | string | 否 | Server 运行的工作目录 |
6.6.3 使用环境变量的最佳实践
bash
# 在 shell 配置文件中设置环境变量(如 ~/.bashrc 或 ~/.zshrc)
export GITHUB_TOKEN="ghp_xxxxxxxxxxxxxxxxxxxx"
export SLACK_TOKEN="xoxb-xxxxxxxxxxxxxxxxxxxx"
export DATABASE_URL="postgresql://user:pass@host:5432/db"然后在配置文件中引用它们:
json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}安全提示
- 永远不要在
.claude/settings.json(项目配置)中直接写入 API Key 或密码 - 项目配置文件可能被提交到 Git 仓库,会暴露你的凭据
- 始终使用环境变量
${VARIABLE_NAME}的方式引用敏感信息 - 对于用户级配置
~/.claude/settings.json,虽然不会提交到仓库,但仍建议使用环境变量
6.7 项目级 vs 全局配置
6.7.1 配置优先级
当项目级和用户级都配置了同名的 MCP Server 时:
优先级顺序(从高到低):
1. 项目级配置 (.claude/settings.json)
2. 用户级配置 (~/.claude/settings.json)6.7.2 如何选择配置级别
┌──────────────────────────┐
│ 这个 MCP Server 只在 │
│ 当前项目中使用吗? │
└──────────┬───────────────┘
│
┌────────┴────────┐
│ │
是 否
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 项目级配置 │ │ 用户级配置 │
│ -s project │ │ -s user │
└──────────────┘ └──────────────┘项目级配置适合:
- 项目专用的数据库连接
- 项目特定的 API 服务
- 需要团队成员共享的配置
用户级配置适合:
- 个人的 GitHub Token
- 个人的 Slack 连接
- 通用的搜索工具
- 个人常用的工具集
6.8 安全注意事项
6.8.1 最小权限原则
✅ 推荐做法:
- 只授予 MCP Server 需要的最小权限
- Filesystem Server 只指定需要的目录
- GitHub Token 只勾选需要的权限范围
- 数据库用户只授予 SELECT 权限(如果只需要查询)
❌ 不推荐做法:
- 给 Filesystem Server 访问整个硬盘的权限
- GitHub Token 勾选所有权限
- 使用数据库管理员账户连接6.8.2 敏感信息保护
bash
# ❌ 错误:直接在配置文件中写密码
{
"env": {
"DB_PASSWORD": "my-secret-password-123"
}
}
# ✅ 正确:使用环境变量
{
"env": {
"DB_PASSWORD": "${DATABASE_PASSWORD}"
}
}6.8.3 信任与审查
第三方 MCP Server 安全提示
- 只使用来自可信来源的 MCP Server(Anthropic 官方、知名开源项目)
- 使用前检查 MCP Server 的源代码或文档
- 注意 MCP Server 请求的权限范围
- 定期审查已安装的 MCP Server 列表
- 如果不再使用某个 MCP Server,及时删除
6.8.4 企业环境安全建议
在企业环境中使用 MCP 时,建议:
- 统一管理 MCP Server 白名单 —— 只允许使用经过审批的 MCP Server
- 集中管理凭据 —— 使用企业密钥管理系统,不要让每个人自己管理 Token
- 网络隔离 —— MCP Server 只能访问必要的内部服务
- 审计日志 —— 记录 MCP Server 的使用情况
- 定期轮换凭据 —— 定期更新 API Token 和密码
6.9 动手实践:添加你的第一个 MCP Server
6.9.1 练习 1:添加 Filesystem MCP Server
这是最简单的 MCP Server,让我们从它开始:
第 1 步:创建一个测试目录
bash
mkdir -p ~/mcp-test-docs
echo "这是一个测试文档,用于验证 MCP 文件系统访问。" > ~/mcp-test-docs/test.txt
echo "产品需求:用户登录功能需要支持手机号和邮箱两种方式。" > ~/mcp-test-docs/requirements.txt第 2 步:添加 MCP Server
bash
claude mcp add test-docs npx -y @modelcontextprotocol/server-filesystem ~/mcp-test-docs第 3 步:验证配置
bash
claude mcp list
# 输出应该包含 test-docs第 4 步:启动 Claude Code 并测试
bash
claude在 Claude Code 中尝试:
你:请帮我查看 test-docs 目录中有哪些文件,并读取 requirements.txt 的内容
Claude:在 test-docs 目录中找到 2 个文件:
1. test.txt
2. requirements.txt
requirements.txt 的内容是:
"产品需求:用户登录功能需要支持手机号和邮箱两种方式。"第 5 步:清理(可选)
bash
claude mcp remove test-docs6.9.2 练习 2:配置 GitHub MCP Server
前提条件
你需要一个 GitHub 账号和 Personal Access Token。如果你还没有,可以按照前面 6.4.2 节的步骤创建一个。
第 1 步:设置环境变量
bash
# 临时设置(仅当前终端有效)
export GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here
# 永久设置(推荐,添加到 shell 配置文件)
echo 'export GITHUB_PERSONAL_ACCESS_TOKEN=ghp_your_token_here' >> ~/.bashrc
source ~/.bashrc第 2 步:添加 GitHub MCP Server(用户级)
bash
claude mcp add github -s user -- npx -y @modelcontextprotocol/server-github为什么使用 --?
-- 是一个约定,表示"后面的所有内容都是命令本身的参数,而不是 claude mcp add 的参数"。这样可以避免参数解析混乱。
第 3 步:启动 Claude Code 并测试
bash
claude你:帮我列出 GitHub 上 anthropics/claude-code 仓库最近的 5 个 issue
Claude:以下是最近的 5 个 issue:
...6.9.3 练习 3:手动编辑配置文件
有时候你可能更喜欢直接编辑配置文件:
第 1 步:查看当前配置
bash
# 查看项目配置
cat .claude/settings.json
# 查看用户配置
cat ~/.claude/settings.json第 2 步:手动编辑
以项目级配置为例,编辑 .claude/settings.json:
json
{
"mcpServers": {
"project-docs": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"./docs"
]
}
}
}第 3 步:重启 Claude Code 使配置生效
bash
# 退出当前 Claude Code 会话
# 输入 /exit 或按 Ctrl+C
# 重新启动
claude6.10 MCP 使用场景汇总
6.10.1 产品经理常用场景
| 场景 | 使用的 MCP Server | 效果 |
|---|---|---|
| 查看项目 Bug 列表 | GitHub | 直接让 Claude 帮你查 issue |
| 分析用户数据 | PostgreSQL / SQLite | 让 Claude 帮你写 SQL 并查询 |
| 检查线上页面 | Puppeteer | 让 Claude 帮你截图和检查页面 |
| 搜索团队讨论 | Slack | 让 Claude 帮你搜索 Slack 中的信息 |
| 查阅外部文档 | Filesystem / Fetch | 让 Claude 帮你阅读和总结文档 |
6.10.2 一个完整的工作流示例
假设你是产品经理,需要了解某个功能的现状:
你:帮我做以下几件事:
1. 查看 GitHub 上 product-app 仓库中标签为 "feature-request" 的 issue
2. 看一下最近 merged 的 PR 中有没有相关的改动
3. 检查线上页面 https://our-product.com/features 是否已经更新
Claude:我来依次为您检查:
1. GitHub Issues(标签:feature-request)
找到 12 个 issue,其中 3 个与您负责的搜索功能相关:
- #156: 搜索结果需要支持筛选
- #143: 搜索建议词功能
- #138: 搜索历史记录
2. 最近 merged 的相关 PR
找到 2 个已合并的 PR:
- #201: 实现搜索筛选功能(2 天前 merged)
- #195: 搜索性能优化(5 天前 merged)
3. 线上页面检查
已截图查看 https://our-product.com/features
搜索筛选功能已经上线,页面更新正常。6.11 常见问题与排查
6.11.1 MCP Server 启动失败
bash
# 检查 MCP Server 是否正确安装
npx -y @modelcontextprotocol/server-filesystem --help
# 如果报错,可能需要清理 npm 缓存
npm cache clean --force
# 检查 Node.js 版本(建议 18+)
node --version6.11.2 权限问题
问题:Claude 说 "没有权限访问该资源"
解决:
1. 检查 MCP Server 配置的路径或 URL 是否正确
2. 检查环境变量是否正确设置
3. 检查 API Token 是否有足够的权限6.11.3 连接超时
问题:MCP Server 连接超时
解决:
1. 检查网络连接
2. 如果使用公司内网,检查代理设置
3. 尝试重启 Claude Code调试技巧:查看 MCP Server 日志
如果 MCP Server 出现问题,可以尝试手动运行 Server 命令来查看详细错误信息:
bash
# 手动运行 GitHub MCP Server 查看日志
npx -y @modelcontextprotocol/server-github 2>&1这样可以看到 Server 启动过程中的详细日志和错误信息。
6.12 本章小结
在本章中,我们学习了:
- MCP 的概念 —— AI 与外部工具之间的标准通信协议
- MCP 的架构 —— Host、Server、External Service 三层结构
- 配置方法 —— 使用
claude mcp add命令或手动编辑配置文件 - 常见 Server —— Filesystem、GitHub、Database、Slack、Puppeteer 等
- 配置级别 —— 项目级 vs 用户级,以及如何选择
- 安全实践 —— 最小权限、环境变量、信任审查
下一步
在下一章中,我们将学习 Plugins 插件系统,它可以让你通过 Slash Command、Subagent 和 Skill 来扩展 Claude Code 的工作流。如果说 MCP 扩展了 Claude 能"连接什么",那么 Plugin 就是扩展了 Claude "怎么工作"。