Skip to main content

MCP集成基础

MCP(Model Context Protocol,模型上下文协议)是Claude Code最强大的扩展机制。

通过MCP,Claude Code能连接上百个外部工具和数据源:GitHub、网络搜索、数据库、监控系统等等。

今天详细介绍MCP的概念、工作原理和实际集成方法。

什么是MCP

核心概念

Model Context Protocol(MCP)是Anthropic于2024年11月推出的开放标准和开源框架,旨在标准化AI系统(如大型语言模型)与外部工具、系统和数据源的集成与数据共享方式。

简单来说,MCP就像是一座桥梁:

  • 一端连接着AI助手(如Claude Code)
  • 另一端连接着各种外部服务和数据源
  • 通过这座桥梁,AI可以安全、高效地访问和操作外部资源

MCP的价值

MCP出现前,每个AI工具都要为每个服务写定制代码,导致:

  • 大量重复工作
  • 质量参差不齐
  • 难维护、难扩展

MCP用标准化解决这些问题:

传统方式:
AI工具A → 定制集成 → GitHub
AI工具A → 定制集成 → Slack
AI工具B → 定制集成 → GitHub
AI工具B → 定制集成 → Slack

MCP方式:
AI工具A → MCP客户端 → MCP标准 → GitHub MCP服务器
AI工具B → MCP客户端 → MCP标准 → GitHub MCP服务器
AI工具C → MCP客户端 → MCP标准 → Slack MCP服务器

好处:

  • 一次开发,处处可用: MCP服务器能被所有支持MCP的AI工具用
  • 更安全: 统一的认证和授权机制
  • 生态好: 社区可以一起开发和维护
  • 扩展快: 新工具快速接入现有的MCP服务器网络

行业采用情况

MCP已经获得了广泛的行业支持:

  • 2025年3月:OpenAI正式采用MCP,集成到ChatGPT桌面应用、Agents SDK和Responses API
  • 2025年4月:Google DeepMind CEO Demis Hassabis确认即将在Gemini模型中支持MCP
  • 2025年12月:Anthropic将MCP捐赠给Linux基金会下的Agentic AI Foundation(AAIF),由Anthropic、Block、OpenAI共同创立,获得Google、Microsoft、AWS、Cloudflare和Bloomberg支持

这使得MCP成为2025年AI工具集成的事实标准。

MCP工作原理

架构概览

MCP采用客户端-服务器架构,包含两个主要层次:

┌─────────────────────────────────────────────────────────┐
│ 应用层(Host) │
│ (如Claude Code、ChatGPT等) │
└────────────────────┬────────────────────────────────────┘

┌────────────────────▼────────────────────────────────────┐
│ MCP客户端层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │客户端1 │ │客户端2 │ │客户端3 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
└─────────┼─────────────┼─────────────┼───────────────────┘
│ │ │
│ MCP协议 │ MCP协议 │ MCP协议
│ (JSON-RPC) │ (JSON-RPC) │ (JSON-RPC)
│ │ │
┌─────────▼─────────────▼─────────────▼───────────────────┐
│ MCP服务器层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │GitHub │ │Sentry │ │Filesystem│ │
│ │服务器 │ │服务器 │ │服务器 │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
└─────────┼─────────────┼─────────────┼───────────────────┘
│ │ │
┌─────────▼─────────────▼─────────────▼───────────────────┐
│ 外部服务层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │GitHub │ │Sentry │ │本地文件 │ │
│ │API │ │API │ │系统 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────┘

核心组件

1. 数据层(Data Layer)

数据层定义了基于JSON-RPC的协议,包括:

生命周期管理

  • 连接建立和断开
  • 会话管理
  • 错误处理

核心原语

  • Tools(工具):可被AI调用的函数或操作
  • Resources(资源):可被AI读取的数据或内容
  • Prompts(提示):预定义的提示模板
  • Notifications(通知):服务器向客户端发送的事件

2. 传输层(Transport Layer)

传输层定义了数据交换机制:

STDIO传输(本地):

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
}
}
}

HTTP/SSE传输(远程):

{
"mcpServers": {
"sentry": {
"url": "https://mcp.sentry.dev/mcp",
"transport": "http"
}
}
}

通信流程

让我们看一个完整的交互流程:

1. 连接建立
Claude Code → [初始化请求] → MCP服务器
Claude Code ← [服务器能力] ← MCP服务器

2. 工具发现
Claude Code → [列出工具] → MCP服务器
Claude Code ← [工具列表+描述] ← MCP服务器

3. 工具调用
用户: "查看我的GitHub仓库"
Claude Code → [调用list_repos工具] → GitHub MCP服务器
GitHub MCP服务器 → [查询GitHub API] → GitHub
GitHub → [返回仓库列表] → GitHub MCP服务器
GitHub MCP服务器 → [格式化结果] → Claude Code
Claude Code → [展示结果] → 用户

4. 资源读取
Claude Code → [获取README内容] → GitHub MCP服务器
GitHub MCP服务器 → [读取文件] → GitHub API
GitHub MCP服务器 ← [文件内容] ← GitHub API
Claude Code ← [返回内容] ← GitHub MCP服务器

为什么MCP对Claude Code很重要

突破能力边界

Claude Code本身已经很强大,但受限于:

  • 只能访问本地文件系统
  • 无法直接查询外部API
  • 不能访问需要认证的服务
  • 无法获取实时数据

MCP打破了这些限制:

没有MCP的Claude Code:
用户: "帮我查看Sentry中最近的错误"
Claude: 抱歉,我无法直接访问Sentry。请您手动查看。

有MCP的Claude Code:
用户: "帮我查看Sentry中最近的错误"
Claude: [通过Sentry MCP服务器查询]
这是最近24小时的错误列表:
1. TypeError in payment.js (23次)
2. Network timeout in api.js (15次)
3. Null reference in user-profile.js (8次)

需要我帮您分析这些错误吗?

工作流整合

MCP使Claude Code能够真正融入你的开发工作流:

从问题到代码,一气呵成

1. 从Linear/Jira获取任务详情

2. 从GitHub拉取相关代码

3. 分析Sentry中的错误日志

4. 修改代码解决问题

5. 运行测试验证

6. 提交代码并更新任务状态

所有这些步骤都可以在Claude Code中完成,无需切换工具。

知识增强

通过MCP,Claude Code可以访问:

  • 企业内部知识库
  • 项目文档和Wiki
  • 监控和日志系统
  • 数据库和数据仓库

这让AI助手具备了企业特定的上下文知识。

内置MCP服务器介绍

Claude Code团队和社区提供了丰富的MCP服务器,涵盖各种常见需求。

开发工具类

GitHub MCP服务器

功能

  • 列出仓库和分支
  • 读取文件内容
  • 搜索代码
  • 查看Issues和Pull Requests
  • 创建Issues和评论

使用场景

用户: "查看我的react-app仓库中所有开放的issues"
Claude: [通过GitHub MCP查询]
你的react-app仓库有5个开放的issues:

#23 - 修复移动端布局问题
#21 - 添加暗色模式支持
#19 - 优化首页加载速度
#17 - 实现用户头像上传
#15 - 修复表单验证bug

Git MCP服务器

功能

  • 读取Git历史
  • 查看提交信息
  • 比较分支差异
  • 操作Git仓库

使用场景

用户: "查看最近5次提交修改了哪些文件"
Claude: [通过Git MCP查询]
最近5次提交的文件变更:

commit abc1234 - "优化性能"
- src/utils/cache.js
- src/components/ProductList.js

commit def5678 - "修复bug"
- src/api/auth.js

搜索与信息类

Brave Search MCP服务器

功能

  • 网络搜索
  • 本地商户搜索
  • 图片搜索
  • 视频搜索
  • 新闻搜索
  • AI摘要

配置示例

{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": ["-y", "@brave/brave-search-mcp-server"],
"env": {
"BRAVE_API_KEY": "your-api-key"
}
}
}
}

使用场景

用户: "搜索React 19的新特性"
Claude: [通过Brave Search查询最新信息]
React 19的主要新特性包括:

1. Actions - 简化表单处理
2. useOptimistic - 优化用户体验
3. use API - 简化异步操作
4. Server Components改进

来源:react.dev官方博客

文件系统类

Filesystem MCP服务器

功能

  • 安全的文件读写
  • 可配置的访问控制
  • 目录浏览
  • 文件搜索

安全配置

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/projects",
"/Users/username/documents"
]
}
}
}

只有配置的目录可被访问,确保安全性。

监控与错误追踪类

Sentry MCP服务器

功能

  • 获取项目信息
  • 分析错误
  • 查看Issue详情
  • 触发Seer AI进行根因分析
  • 支持16种不同的工具调用

使用场景

用户: "分析Sentry中最严重的3个错误"
Claude: [通过Sentry MCP查询和分析]
最严重的3个错误:

1. PaymentError (影响1,234用户)
- 原因:第三方支付API超时
- 建议:添加重试机制和超时处理

2. DatabaseConnectionError (影响856用户)
- 原因:连接池耗尽
- 建议:增加连接池大小

3. NullReferenceError (影响423用户)
- 原因:用户数据未正确初始化
- 建议:添加空值检查

数据库类

PostgreSQL MCP服务器

功能

  • 执行查询
  • 查看表结构
  • 分析数据
  • 生成报表

配置示例

{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_URL": "postgresql://user:password@localhost:5432/mydb"
}
}
}
}

如何连接MCP服务器

方法一:CLI向导(推荐)

Claude Code提供了友好的CLI向导来添加MCP服务器:

# 基本添加命令
claude mcp add github --scope user

# 带环境变量的添加
claude mcp add brave-search \
-e BRAVE_API_KEY=your-api-key \
--scope user

# 添加远程服务器
claude mcp add sentry \
--transport http \
--url https://mcp.sentry.dev/mcp \
--scope project

交互流程

$ claude mcp add github --scope user

? Select server type:
❯ Official Server
Community Server
Custom Server

? Enter configuration:
Command: npx
Args: -y @modelcontextprotocol/server-github

? Environment variables (optional):
GITHUB_TOKEN: ghp_xxxxxxxxxxxxxxxxxxxx

✓ GitHub MCP server added successfully!
✓ Configuration saved to user scope

Restart Claude Code to apply changes.

方法二:直接编辑配置文件

对于复杂配置,可以直接编辑配置文件:

配置文件位置

# macOS
~/Library/Application Support/Claude/claude_desktop_config.json

# Linux
~/.config/Claude/claude_desktop_config.json

# Windows
%APPDATA%/Claude/claude_desktop_config.json

完整配置示例

{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_your_github_token"
}
},
"brave-search": {
"command": "npx",
"args": ["-y", "@brave/brave-search-mcp-server"],
"env": {
"BRAVE_API_KEY": "your_brave_api_key"
}
},
"sentry": {
"url": "https://mcp.sentry.dev/mcp",
"transport": "http"
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/projects",
"/Users/username/documents"
]
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_URL": "postgresql://user:pass@localhost:5432/db"
}
}
}
}

配置作用域

MCP服务器可以在三个不同的作用域配置:

Local(本地)作用域

  • 位置:项目根目录的 .claude/mcp.json
  • 用途:项目特定的配置、实验性配置、敏感凭证
  • 特点:不会被Git追踪,仅当前项目可用
claude mcp add database --scope local

Project(项目)作用域

  • 位置:项目根目录的 mcp.json
  • 用途:团队共享的服务器、项目必需的工具
  • 特点:可以提交到Git,团队成员共享
claude mcp add github --scope project

User(用户)作用域

  • 位置:用户配置目录
  • 用途:个人常用工具、跨项目的开发工具
  • 特点:所有项目可用
claude mcp add brave-search --scope user

优先级:Local > Project > User

验证配置

配置完成后,验证MCP服务器:

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

# 输出示例:
# MCP Servers (5):
# ✓ github (user)
# ✓ brave-search (user)
# ✓ sentry (project)
# ✓ filesystem (local)
# ✓ postgres (local)

# 测试特定服务器
claude mcp test github

在Claude Code中测试:

claude

# 输入测试命令
> 列出我配置的所有MCP服务器

Claude会显示已连接的服务器列表和可用功能

MCP安全认证和OAuth

为什么需要认证

许多MCP服务器需要访问受保护的资源:

  • GitHub需要Personal Access Token
  • Sentry需要用户授权
  • 数据库需要连接凭证

MCP支持多种认证方式,其中OAuth 2.1是最安全和标准化的方式。

OAuth 2.1规范

2025年3月,MCP规范引入了OAuth 2.1支持,包括:

关键安全特性

  • 强制PKCE:保护所有客户端免受攻击
  • 元数据发现:自动发现OAuth端点
  • 动态客户端注册(DCR):自动注册新客户端

OAuth认证流程

1. 用户添加需要OAuth的MCP服务器

2. Claude Code检测到需要OAuth

3. 打开浏览器进行授权
┌──────────────────────────────┐
│ Login to Sentry │
│ ┌────────────────────────┐ │
│ │ Email: user@example.com│ │
│ │ Password: ************ │ │
│ └────────────────────────┘ │
│ │
│ [Continue] │
└──────────────────────────────┘

4. 用户同意授权
┌──────────────────────────────┐
│ Claude Code requests access │
│ │
│ This app wants to: │
│ ✓ Read your projects │
│ ✓ View error information │
│ ✓ Trigger Seer AI analysis │
│ │
│ [Deny] [Allow] │
└──────────────────────────────┘

5. 获取访问令牌

6. 令牌安全存储

7. 自动刷新令牌

Sentry OAuth配置实例

添加Sentry MCP服务器

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

首次使用时会触发OAuth流程:

$ claude

> 查看Sentry中的错误

🔐 Authentication Required

Sentry MCP server requires OAuth authentication.

Opening browser for authorization...

✓ Authorization successful!
✓ Access token saved securely

Now fetching Sentry errors...

配置文件(自动生成)

{
"mcpServers": {
"sentry": {
"url": "https://mcp.sentry.dev/mcp",
"transport": "http",
"oauth": {
"authorizationUrl": "https://sentry.io/oauth/authorize",
"tokenUrl": "https://sentry.io/oauth/token",
"clientId": "auto-registered-client-id",
"scopes": ["project:read", "event:read", "event:write"]
}
}
}
}

API密钥认证

对于不支持OAuth的服务器,使用API密钥:

GitHub Personal Access Token

# 1. 在GitHub创建Personal Access Token
# Settings → Developer settings → Personal access tokens → Generate new token

# 2. 添加到环境变量
claude mcp add github \
-e GITHUB_TOKEN=ghp_your_token_here \
--scope user

Brave Search API Key

# 1. 在Brave获取API Key
# https://brave.com/search/api/

# 2. 配置到MCP
claude mcp add brave-search \
-e BRAVE_API_KEY=your_api_key \
--scope user

安全最佳实践

  1. 使用环境变量而非硬编码
// ❌ 不好
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_hardcoded_token_here"
}
}
}
}

// ✅ 好
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}

然后在shell配置中设置:

# ~/.bashrc 或 ~/.zshrc
export GITHUB_TOKEN="ghp_your_token_here"
  1. 使用最小权限原则
  • GitHub Token只授予必需的权限
  • 数据库账号使用只读权限
  • API密钥限制访问范围
  1. 定期轮换凭证
  • 定期更新API密钥
  • 使用短期访问令牌
  • 监控异常访问
  1. 不要提交敏感信息到Git
# .gitignore
.claude/mcp.json
.env
*.key
*.token

实际集成案例

让我们通过几个真实案例来看MCP如何提升开发效率。

案例1:使用Sentry MCP调试生产问题

场景:生产环境出现高频错误,需要快速定位和修复。

步骤1:配置Sentry MCP

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

步骤2:启动Claude Code并查询错误

用户: 查看production项目中最近24小时错误率最高的3个问题

Claude: [通过Sentry MCP查询]

查询到production项目的高频错误:

1. TypeError: Cannot read property 'user' of undefined
- 文件: src/middleware/auth.js:45
- 发生次数: 1,234次
- 影响用户: 456人
- 首次出现: 18小时前

2. ReferenceError: calculateDiscount is not defined
- 文件: src/services/pricing.js:89
- 发生次数: 678次
- 影响用户: 234人
- 首次出现: 12小时前

3. NetworkError: Request timeout
- 文件: src/api/payment.js:123
- 发生次数: 432次
- 影响用户: 156人
- 首次出现: 6小时前

步骤3:深入分析第一个错误

用户: 分析第一个错误的根因

Claude: [调用Sentry Seer AI进行根因分析]

根因分析结果:

问题原因:
auth.js中间件在某些情况下没有正确处理session对象为null的情况。
当用户的session过期但cookie仍然存在时,会触发此错误。

错误堆栈:
1. auth.js:45 - req.session.user访问
2. session.js:23 - session已过期返回null
3. cookie-parser:34 - 解析到过期的session cookie

建议修复:
添加空值检查和session有效性验证

步骤4:查看相关代码并修复

用户: 读取src/middleware/auth.js的内容并修复这个问题

Claude: [读取文件内容并生成修复]

我已经读取了auth.js的代码,问题在第45行:

当前代码:
```javascript
const userId = req.session.user.id;

修复后:

// 检查session和user对象是否存在
if (!req.session || !req.session.user) {
return res.status(401).json({
error: 'Session expired. Please login again.'
});
}

const userId = req.session.user.id;

是否应用这个修复?


**步骤5:应用修复并验证**

用户: 是的,请应用修复

Claude: ✓ 已应用修复到src/middleware/auth.js ✓ 添加了session有效性检查 ✓ 添加了友好的错误响应

建议:

  1. 运行单元测试验证修复
  2. 在staging环境测试
  3. 部署后监控Sentry确认错误消失

### 案例2:使用Linear MCP管理开发任务

**场景**:从Linear任务直接生成实现代码。

**配置Linear MCP**:
```json
{
"mcpServers": {
"linear": {
"url": "https://mcp.linear.app",
"transport": "http"
}
}
}

工作流演示

用户: 查看分配给我的高优先级任务

Claude: [通过Linear MCP查询]

你有3个高优先级任务:

1. [PROJ-123] 实现用户头像上传功能
优先级: High
状态: In Progress
描述: 允许用户上传和更新个人头像,支持裁剪和压缩

2. [PROJ-124] 优化首页加载速度
优先级: High
状态: Todo
描述: 首页加载时间超过3秒,需要优化到1秒内

3. [PROJ-125] 修复移动端表单验证
优先级: High
状态: Todo
描述: 移动端表单验证不生效,需要修复

────────────────────────────────────────

用户: 开始实现PROJ-123

Claude: [获取任务详情]

任务PROJ-123详情:

标题: 实现用户头像上传功能

详细需求:
- 支持JPG、PNG格式
- 文件大小限制5MB
- 前端裁剪为正方形
- 自动压缩为200x200
- 上传到S3存储
- 更新用户profile

技术栈:
- React前端
- Node.js后端
- AWS S3存储

我建议按以下步骤实现:
1. 创建前端上传组件
2. 实现图片裁剪和压缩
3. 创建后端API端点
4. 实现S3上传逻辑
5. 更新数据库

开始实现第一步吗?

────────────────────────────────────────

用户: 是的,开始实现

Claude: [创建Avatar上传组件]

✓ 创建 src/components/AvatarUpload.jsx
✓ 添加图片选择功能
✓ 集成react-image-crop裁剪库
✓ 实现预览功能

代码已创建,包含:
- 文件选择和验证
- 图片裁剪界面
- 实时预览
- 上传按钮

下一步创建后端API?

────────────────────────────────────────

[继续实现...]

────────────────────────────────────────

用户: 实现完成,更新Linear任务状态

Claude: [通过Linear MCP更新任务]

✓ PROJ-123状态已更新为 "Done"
✓ 添加了实现说明
✓ 标记为已完成

任务完成摘要:
- 创建了5个新文件
- 修改了3个现有文件
- 添加了单元测试
- 更新了API文档

案例3:结合多个MCP服务器的综合工作流

场景:从Figma设计到完整实现的全流程。

用户: 根据Figma设计实现新的产品展示页面

Claude: [检测到需要多个MCP服务器]

这个任务需要:
✓ Figma MCP - 获取设计
✓ GitHub MCP - 访问代码库
✓ Brave Search MCP - 查找最佳实践
✓ Filesystem MCP - 创建文件

开始执行...

步骤1: 从Figma获取设计
[通过Figma MCP读取设计规范]
✓ 获取到布局规范
✓ 提取颜色方案
✓ 导出图标资源

步骤2: 查找React最佳实践
[通过Brave Search查询]
✓ 找到产品展示页面的最佳实践
✓ 了解最新的性能优化技巧

步骤3: 创建组件文件
[通过Filesystem MCP创建]
✓ src/pages/ProductShowcase.jsx
✓ src/components/ProductCard.jsx
✓ src/styles/showcase.css

步骤4: 实现响应式布局
✓ 桌面端布局 (1200px+)
✓ 平板端布局 (768px-1199px)
✓ 移动端布局 (<768px)

步骤5: 优化性能
✓ 图片懒加载
✓ 代码分割
✓ CSS优化

步骤6: 提交代码
[通过GitHub MCP]
✓ 创建feature分支
✓ 提交代码
✓ 创建Pull Request

Pull Request已创建: #234
标题: "实现产品展示页面"
链接: https://github.com/yourorg/repo/pull/234

所有完成!需要我做什么其他的吗?

MCP的实际应用场景

1. 全栈开发

适用工具组合

  • GitHub/Git MCP - 代码管理
  • PostgreSQL/MongoDB MCP - 数据库操作
  • Sentry MCP - 错误监控
  • Brave Search MCP - 技术查询

典型工作流

需求 → Linear任务

设计 → Figma MCP获取

开发 → Claude Code + 多个MCP

测试 → 自动化测试

部署 → GitHub MCP提交

监控 → Sentry MCP追踪

2. 数据分析

适用工具组合

  • PostgreSQL MCP - 数据查询
  • Brave Search MCP - 外部数据
  • Filesystem MCP - 本地数据文件

应用示例

用户: 分析最近30天的用户增长趋势

Claude: [通过PostgreSQL MCP查询]

执行查询:
SELECT DATE(created_at) as date,
COUNT(*) as new_users
FROM users
WHERE created_at >= NOW() - INTERVAL '30 days'
GROUP BY DATE(created_at)
ORDER BY date;

结果分析:
- 总新增用户: 1,234
- 日均增长: 41.1人
- 增长趋势: 上升13%
- 峰值日期: 2025-12-15 (89人)

需要我生成可视化图表吗?

3. DevOps自动化

适用工具组合

  • Sentry MCP - 监控告警
  • GitHub MCP - 自动修复
  • Slack MCP - 通知团队

自动化流程

Sentry检测到错误

Claude Code通过Sentry MCP获取详情

分析根因

通过GitHub MCP创建修复PR

通过Slack MCP通知团队

4. 知识管理

适用工具组合

  • Notion MCP - 文档管理
  • GitHub MCP - 代码文档
  • Brave Search MCP - 外部知识

应用示例

用户: 为新员工创建React开发入门文档

Claude: 我会整合多个来源创建全面的文档:

1. [Brave Search] 最新React最佳实践
2. [GitHub MCP] 我们项目的代码规范
3. [Notion MCP] 现有团队文档

正在生成文档...

✓ 创建了完整的入门指南
✓ 包含代码示例
✓ 添加了项目特定的注意事项
✓ 已保存到Notion

文档链接: notion.so/react-onboarding

常见问题排查

问题1:MCP服务器无法连接

症状

Error: Failed to connect to MCP server "github"
Connection timeout after 30s

排查步骤

  1. 检查配置
# 查看配置
cat ~/Library/Application\ Support/Claude/claude_desktop_config.json

# 验证JSON格式
python3 -m json.tool claude_desktop_config.json
  1. 检查网络
# 对于HTTP传输,测试URL可访问性
curl https://mcp.sentry.dev/mcp

# 检查代理设置
echo $HTTP_PROXY
echo $HTTPS_PROXY
  1. 检查依赖
# 确保npx可用
npx --version

# 手动运行MCP服务器测试
npx -y @modelcontextprotocol/server-github
  1. 查看详细日志
# 启用调试模式
claude --verbose

# 或设置环境变量
export DEBUG=mcp:*
claude

问题2:认证失败

症状

Error: Authentication failed for GitHub MCP server
401 Unauthorized

解决方案

  1. 验证Token有效性
# 测试GitHub token
curl -H "Authorization: token YOUR_TOKEN" \
https://api.github.com/user

# 测试Brave API key
curl -H "X-Subscription-Token: YOUR_KEY" \
https://api.search.brave.com/res/v1/web/search?q=test
  1. 检查Token权限
  • GitHub需要 reporead:user 权限
  • 确保Token未过期
  • 检查组织访问权限
  1. 重新授权OAuth
# 删除已保存的token
claude mcp remove sentry

# 重新添加触发新的OAuth流程
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

问题3:环境变量未加载

症状

Error: GITHUB_TOKEN is not defined

解决方案

  1. 检查环境变量
# 查看当前环境变量
echo $GITHUB_TOKEN

# 检查shell配置
cat ~/.bashrc | grep GITHUB_TOKEN
cat ~/.zshrc | grep GITHUB_TOKEN
  1. 正确设置环境变量
# 添加到shell配置
echo 'export GITHUB_TOKEN="ghp_your_token"' >> ~/.zshrc

# 重新加载配置
source ~/.zshrc

# 验证
echo $GITHUB_TOKEN
  1. 在配置中直接设置(仅用于测试)
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_actual_token_here"
}
}
}
}

注意:生产环境应使用环境变量而非硬编码。

问题4:MCP服务器响应慢

症状

MCP server response time: 15s (expected < 3s)

优化方案

  1. 使用本地缓存
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}",
"CACHE_TTL": "300"
}
}
}
}
  1. 选择合适的传输方式
  • 本地服务器:使用STDIO(更快)
  • 远程服务器:使用HTTP + SSE(支持流式)
  1. 限制查询范围
❌ "分析所有仓库的所有issues"
✅ "分析react-app仓库最近7天的issues"

问题5:权限错误

症状

Error: Permission denied: /path/to/file
Filesystem MCP server cannot access this location

解决方案

  1. 检查文件系统配置
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/allowed/path1",
"/allowed/path2"
]
}
}
}
  1. 添加访问路径
# 重新配置包含需要的路径
claude mcp remove filesystem
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /path1 /path2 /path3
  1. 检查文件权限
# 确保文件可读
ls -la /path/to/file

# 修改权限(如需要)
chmod +r /path/to/file

问题6:版本不兼容

症状

Error: MCP protocol version mismatch
Server: v1.0, Client: v0.9

解决方案

  1. 更新Claude Code
# 检查版本
claude --version

# 更新到最新版
npm install -g @anthropic/claude-code@latest
  1. 更新MCP服务器
# 清除npx缓存
npx clear-npx-cache

# 强制使用最新版本
npx -y @modelcontextprotocol/server-github@latest
  1. 锁定版本(如需要):
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github@1.0.0"
]
}
}
}

调试技巧

  1. 启用详细日志
export DEBUG=mcp:*
export MCP_LOG_LEVEL=debug
claude --verbose
  1. 单独测试MCP服务器
# 直接运行服务器
npx -y @modelcontextprotocol/server-github

# 应该看到服务器启动信息
  1. 使用MCP Inspector(即将推出):
# MCP调试工具
claude mcp inspect github
  1. 查看Claude Code日志
# macOS
tail -f ~/Library/Logs/Claude/mcp.log

# Linux
tail -f ~/.local/share/Claude/logs/mcp.log

最佳实践建议

1. 合理组织MCP服务器

按使用频率和作用域组织:

用户级(常用工具)

claude mcp add brave-search --scope user
claude mcp add github --scope user

项目级(团队共享)

claude mcp add sentry --scope project
claude mcp add postgres --scope project

本地级(敏感配置)

claude mcp add database --scope local

2. 安全管理凭证

# 使用密钥管理工具
# macOS Keychain
security add-generic-password \
-a "$USER" \
-s "github_token" \
-w "ghp_your_token"

# 在配置中引用
export GITHUB_TOKEN=$(security find-generic-password \
-a "$USER" \
-s "github_token" \
-w)

3. 监控MCP使用情况

# 定期审查配置
claude mcp list

# 删除不用的服务器
claude mcp remove unused-server

4. 文档化团队配置

在项目的 README.md 中记录:

## MCP服务器配置

本项目使用以下MCP服务器:

1. **Sentry** - 错误监控
```bash
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
  1. PostgreSQL - 数据库访问
    claude mcp add postgres \
    -e POSTGRES_URL="postgresql://localhost:5432/db" \
    --scope project

## 下一步探索

掌握MCP集成后,你可以:

1. **探索更多MCP服务器**
- [官方MCP服务器仓库](https://github.com/modelcontextprotocol/servers)
- [社区MCP服务器列表](https://github.com/punkpeye/awesome-mcp-servers)

2. **开发自定义MCP服务器**
- 查看 [MCP协议规范](https://modelcontextprotocol.io/specification)
- 学习 [开发自定义服务器](/claude-code/03-高级特性/custom-mcp)

3. **深入实战应用**
- [使用MCP构建AI工作流](/claude-code/04-实战案例/mcp-workflows)
- [企业级MCP部署](/claude-code/05-最佳实践/enterprise-mcp)

## 总结

MCP是Claude Code生态的核心扩展机制:

✅ **标准化集成** - 统一协议,广泛兼容
✅ **安全认证** - OAuth 2.1支持,保护数据
✅ **丰富生态** - 数百个现成MCP服务器
✅ **易于配置** - CLI向导和配置文件
✅ **实际价值** - 显著提升开发效率

合理配置和使用MCP服务器,Claude Code就能成为连接整个开发工具链的智能中枢。

## 参考资源

### 官方文档
- [Model Context Protocol官方网站](https://modelcontextprotocol.io/)
- [Claude Code MCP文档](https://code.claude.com/docs/en/mcp)
- [MCP规范](https://modelcontextprotocol.io/specification)

### MCP服务器
- [官方MCP服务器集合](https://github.com/modelcontextprotocol/servers)
- [Awesome MCP Servers](https://github.com/punkpeye/awesome-mcp-servers)
- [Sentry MCP文档](https://docs.sentry.io/product/sentry-mcp/)
- [Brave Search MCP](https://github.com/brave/brave-search-mcp-server)

### 教程和指南
- [MCP配置最佳实践](https://scottspence.com/posts/configuring-mcp-tools-in-claude-code)
- [添加MCP服务器到Claude Code](https://mcpcat.io/guides/adding-an-mcp-server-to-claude-code/)
- [MCP与OAuth集成](https://stytch.com/blog/oauth-for-mcp-explained-with-a-real-world-example/)

---

**延伸阅读**:
- [CLAUDE.md配置](/claude-code/03-高级特性/claude-md)
- [自定义MCP服务器开发](/claude-code/03-高级特性/custom-mcp)
- [Slash命令系统](/claude-code/02-核心功能/slash-commands)