Skip to content

3.1 本章介绍

🎯 一句话理解

MCP (Model Context Protocol) 是 AI 工具集成的通用协议标准,让 Claude Code 能够像使用 USB-C 一样连接到任何外部工具、数据库和服务。


🤔 为什么需要 MCP?

想象你让 Claude 帮你:

场景 1:调试生产环境错误

❌ 没有 MCP:

你:"Claude,线上有个认证错误"
Claude:"能提供错误日志吗?"
你:(切换到 Sentry)→ 复制错误信息 → 粘贴到 Claude
Claude:"能看看相关的代码吗?"
你:(切换到 GitHub)→ 找到文件 → 复制代码 → 粘贴回来
Claude:"这个 API 的文档是什么样的?"
你:(切换到 Notion)→ 搜索文档 → 复制内容 → 再次粘贴

来回切换 5-10 次,花费 20 分钟,上下文不断丢失。

✅ 有 MCP:

你:"Claude,分析 @sentry 中的最新认证错误"
Claude:
  → 自动连接 Sentry 获取错误详情
  → 自动访问 @github 查看相关代码
  → 自动查询 @notion 中的 API 文档
  → 3 分钟内给出完整诊断和修复建议

一次性完成,工作流不中断。


场景 2:实现 JIRA 任务

❌ 没有 MCP:

你:(打开 JIRA)→ 阅读需求 → 复制到笔记
你:(打开 Figma)→ 查看设计 → 截图保存
你:"Claude,根据这个需求实现..." → 粘贴需求文本
Claude:开始编码
你:"等等,设计稿里按钮是蓝色的" → 粘贴截图
Claude:修改代码
你:"能自动更新 JIRA 状态吗?"
Claude:"抱歉,我无法直接访问 JIRA"
你:(回到 JIRA)→ 手动更新状态

手动来回 8+ 次,信息容易遗漏。

✅ 有 MCP:

你:"实现 @linear:issue://ENG-123"
Claude:
  → 自动读取 Linear issue 完整需求
  → 自动获取 @figma 设计规范
  → 实现功能并运行测试
  → 自动更新 Linear issue 状态为 "In Review"
  → 创建 GitHub PR 并关联 issue

端到端自动化,零信息丢失。


场景 3:数据分析与报告

❌ 没有 MCP:

你:(打开 PostgreSQL 客户端)→ 运行查询 → 导出 CSV
你:"Claude,分析这份销售数据" → 上传 CSV 文件
Claude:分析数据并生成见解
你:"能把这个加到 Notion 的季度报告里吗?"
Claude:"你需要手动复制粘贴到 Notion"
你:(打开 Notion)→ 创建页面 → 格式化内容 → 手动添加

数据流转完全手动,耗时 30+ 分钟。

✅ 有 MCP:

你:"分析 @postgres:sales 表的 Q1 数据并更新 @notion 季度报告"
Claude:
  → 自动查询 PostgreSQL 数据库
  → 运行数据分析和可视化
  → 生成结构化报告
  → 自动创建/更新 Notion 页面
  → 添加图表和关键指标

完全自动化,5 分钟完成。


💡 核心问题与解决方案

问题 1:集成复杂度爆炸 (M×N 问题)

传统方式:

  • 每个 AI 工具需要为每个服务写定制集成代码
  • N 个 AI 工具 × M 个服务 = N×M 个连接器
  • GitHub 集成、Notion 集成、Slack 集成... 每个都要单独实现
  • 维护成本指数级增长

MCP 解决方案:

  • 一次实现,处处可用
  • AI 工具实现 MCP 客户端 一次
  • 服务提供 MCP 服务器 一次
  • N + M = 线性复杂度
  • 类似 USB-C:一个标准,连接所有设备

问题 2:上下文效率低下

传统方式:

  • 工具定义占用大量 token(150,000+ tokens)
  • 中间结果多次流经模型(50,000+ tokens 额外开销)
  • 每次工具调用都是完整的请求-响应循环
  • 成本高、延迟大

MCP 解决方案:

  • 98.7% token 减少(150,000 → 2,000 tokens)
  • 按需加载工具定义(渐进式发现)
  • 中间结果在执行环境处理,不经过模型
  • 文件系统层次结构组织工具
  • 支持代码执行进行复杂数据处理

问题 3:工具发现和适配困难

传统方式:

  • 硬编码的工具列表
  • API 变化导致集成失效
  • 需要单独的文档和说明
  • 版本兼容性问题

MCP 解决方案:

  • 动态工具发现(运行时 tools/list 查询)
  • 自描述接口(工具包含语义描述和参数说明)
  • 参数变化时客户端自动适配
  • 无需单独文档,接口即文档

📖 什么是 MCP?

比类理解

MCP 就像:

  1. USB-C 通用接口

    • USB-C 让你用一根线连接所有设备(显示器、硬盘、手机)
    • MCP 让 Claude 用一个协议连接所有服务(GitHub、数据库、Notion)
  2. ODBC 数据库标准

    • 90 年代 ODBC 让应用程序标准化连接任何数据库
    • 2020 年代 MCP 让 AI 标准化连接任何工具和数据源
  3. 语言服务器协议 (LSP)

    • LSP 让任何编辑器支持任何编程语言(VS Code、Vim、Emacs)
    • MCP 让任何 AI 访问任何数据源和工具

技术定义

Model Context Protocol (MCP) 是一个开源的标准协议,用于连接 AI 系统与外部数据源、工具和服务。它定义了统一的通信接口,使 AI 应用能够动态发现、访问和调用外部能力,同时保持高效的上下文管理和安全的权限控制。

核心组成:

  • 协议层:基于 JSON-RPC 2.0 的消息交换规范
  • 传输层:支持 HTTP、SSE、Stdio 三种传输机制
  • 原语层:定义 Resources、Prompts、Tools 等核心概念
  • 安全层:OAuth 2.1 认证和权限管理

🎨 MCP 工作原理(可视化)

┌─────────────────────────────────────────────────────────────┐
│                     Claude Code (MCP Host)                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │ MCP Client 1 │  │ MCP Client 2 │  │ MCP Client 3 │     │
│  │  (GitHub)    │  │   (Sentry)   │  │  (Postgres)  │     │
│  └───────┬──────┘  └───────┬──────┘  └───────┬──────┘     │
└──────────┼─────────────────┼─────────────────┼────────────┘
           │                 │                 │
           │ MCP Protocol    │ MCP Protocol    │ MCP Protocol
           │ (JSON-RPC 2.0)  │ (JSON-RPC 2.0)  │ (JSON-RPC 2.0)
           │                 │                 │
    ┌──────▼──────┐   ┌──────▼──────┐   ┌──────▼──────┐
    │ MCP Server  │   │ MCP Server  │   │ MCP Server  │
    │  (Remote)   │   │  (Remote)   │   │   (Local)   │
    │   GitHub    │   │   Sentry    │   │  Postgres   │
    └─────────────┘   └─────────────┘   └─────────────┘
          │                  │                  │
          ▼                  ▼                  ▼
    GitHub API         Sentry API         Local Database

数据流:

  1. Claude Code 创建 MCP 客户端连接到每个服务器
  2. 服务器暴露 Tools(可执行函数)、Resources(数据)、Prompts(提示模板)
  3. Claude 动态发现可用工具:tools/list → 获取 GitHub/Sentry/Postgres 的所有工具
  4. 用户请求时,Claude 调用相应工具:tools/call → 执行操作
  5. 结果直接返回,无需多次往返

🆚 MCP vs Skills:何时使用什么?

维度SkillsMCP
核心定位📋 工作流程和提示模板🔌 外部工具和数据集成
主要用途封装复杂的多步骤任务指令连接第三方服务和数据源
触发方式/ 斜杠命令@ 提及资源或自动工具调用
内容类型Markdown 文档 + 可选文件可执行代码(服务器程序)
数据访问静态文件和模板实时 API 调用和数据库查询
配置复杂度⭕ 低(一个 SKILL.md 文件)🟡 中到高(需配置服务器和认证)
开发难度⭕ 低(写 Markdown)🟡 中到高(需编程或使用现成服务器)
适用场景代码审查、文档生成、测试流程监控集成、项目管理、数据分析
团队共享✅ 项目 .claude/skills/✅ 项目 .mcp.json
更新频率低(工作流相对稳定)高(数据实时更新)
Token 开销高(完整内容加载到上下文)低(按需调用,结果不经模型)

使用建议

选择 Skills 当你需要:

  • ✅ 标准化代码审查流程
  • ✅ 提供项目特定的文档模板
  • ✅ 定义复杂的多步骤操作指令
  • ✅ 团队共享最佳实践和规范
  • ✅ 不需要外部 API 或实时数据

选择 MCP 当你需要:

  • ✅ 访问 GitHub/GitLab 仓库和 PR
  • ✅ 查询数据库或 API
  • ✅ 集成 Sentry/Datadog 监控系统
  • ✅ 连接 Notion/Linear 项目管理工具
  • ✅ 获取实时数据或执行外部操作

组合使用:

markdown
# Skill: 生产环境故障诊断

1. 使用 @sentry 获取最新错误报告
2. 检查 @github:repo://backend 的相关代码
3. 查询 @postgres:logs 表获取详细日志
4. 生成诊断报告并更新 @linear:issue
5. 创建 hotfix 分支并提交修复

Skill 提供流程,MCP 提供数据和工具。


🌟 MCP 的四大核心特性

1. 🔌 通用连接标准

问题:

  • 每个服务都有自己的 API 格式
  • 每个 AI 工具都要单独实现集成
  • 维护成本随服务数量指数增长

MCP 解决:

不再是:
Claude → 定制 GitHub 集成
Claude → 定制 Sentry 集成
Claude → 定制 Notion 集成
Claude → ... (每个都要单独写)

而是:
Claude → MCP 协议 ← GitHub MCP Server
                  ← Sentry MCP Server
                  ← Notion MCP Server
                  ← ... (一次实现,处处可用)

行业采用:

  • ✅ Anthropic (Claude)
  • ✅ OpenAI (已采用 MCP)
  • ✅ Microsoft
  • ✅ Sourcegraph、Zed、Replit、Codeium
  • ✅ 1000+ 社区服务器

2. ⚡ 极致的效率优化

Token 减少:98.7%

传统工具调用:
┌─────────────────────────────────────────┐
│ 加载所有工具定义:150,000 tokens       │
│ + 中间结果往返:50,000 tokens          │
│ = 总计:200,000 tokens                 │
└─────────────────────────────────────────┘

MCP 方式:
┌─────────────────────────────────────────┐
│ 按需加载工具定义:2,000 tokens         │
│ 中间结果本地处理:0 tokens             │
│ = 总计:2,000 tokens                   │
│ ✅ 节省 98.7%                           │
└─────────────────────────────────────────┘

性能提升示例(Vercel 部署监控):

  • 工具列表:10,100 tokens → 300-500 tokens(减少 95-97%)
  • 会议记录分析:50,000 tokens → 0 tokens(中间结果不经模型)
  • 数据库查询:全表加载 → 过滤后结果(10,000 行 → 5 行)

3. 🔍 动态发现与自适应

传统 API:静态硬编码

json
// 硬编码的工具定义
{
  "name": "github_create_issue",
  "parameters": {
    "title": "string",
    "body": "string"
  }
}

// 如果 GitHub 添加新参数 "assignee"?
// ❌ 集成失效,需要手动更新代码

MCP:动态发现和自描述

json
// 运行时查询可用工具
→ tools/list

// 服务器返回最新定义
{
  "name": "github_create_issue",
  "description": "Create a new issue in the repository",
  "inputSchema": {
    "title": {"type": "string", "description": "Issue title"},
    "body": {"type": "string", "description": "Issue body"},
    "assignee": {"type": "string", "description": "Assign to user"}
  }
}

// ✅ Claude 自动适配新参数,无需代码更新

自描述优势:

  • 工具描述 = 工具文档(无需单独维护文档)
  • 参数变化自动适配
  • 新工具自动可用
  • 语义化描述帮助 AI 正确使用

4. 🔒 安全与隐私优先

多层安全机制:

1. 传输层安全

Local (Stdio):操作系统进程隔离
Remote (HTTP):TLS 加密 + OAuth 2.1 认证

2. 权限控制

bash
# Filesystem 服务器只能访问指定目录
claude mcp add filesystem --scope project /allowed/path/only

# 不允许访问:
# ❌ /etc/passwd
# ❌ /Users/你的个人文件
# ✅ /project/allowed/path

3. 用户审批

Claude:"需要调用 GitHub 创建 PR,是否允许?"
你:
  [✅ 仅本次允许]
  [✅ 始终允许此工具]
  [❌ 拒绝]

4. 隐私保护

中间结果在执行环境处理,敏感数据不经模型:

获取用户邮箱 → 自动脱敏 → 只有 token 进入模型上下文
原始邮件地址、电话号码永不暴露给 AI

5. 企业级管理

json
// managed-mcp.json(IT 管理员控制)
{
  "allowedMcpServers": [
    {"serverName": "github"},
    {"serverName": "sentry"}
  ],
  "deniedMcpServers": [
    {"serverName": "filesystem"}  // 阻止文件系统访问
  ]
}

🗺️ 学习路线图

你在这里 → [3.1 本章介绍] ← 当前位置

         [3.2 MCP 基础概念和架构]
              ├─ 协议架构(Client-Server-Host)
              ├─ 三种传输类型(HTTP/SSE/Stdio)
              ├─ 配置文件结构
              └─ 原语系统(Tools/Resources/Prompts)

         [3.3 创建你的第一个 MCP 集成]
              ├─ 示例 1:远程服务器(GitHub/Notion)
              ├─ 示例 2:本地服务器(Sequential Thinking)
              └─ 示例 3:复杂多服务器设置

         [3.4 进阶技巧和最佳实践]
              ├─ OAuth 认证配置
              ├─ 环境变量和作用域管理
              ├─ 调试方法论
              ├─ 性能优化
              └─ 安全加固

         [3.5 本章小结]
              ├─ 核心知识回顾
              ├─ FAQ 常见问题
              └─ 学习路径建议

📋 学习前的快速检查

在开始学习 MCP 之前,确保你:

环境准备:

  • [ ] 已安装 Claude Code
  • [ ] 已完成 Claude Code 基础教程(Module 1)
  • [ ] 了解 Skills 基础概念(Module 2)
  • [ ] Node.js 版本 ≥ 18.17(运行 node --version 检查)
  • [ ] 熟悉基本的命令行操作

知识储备:

  • [ ] 了解什么是 API
  • [ ] 知道 JSON 格式
  • [ ] 理解客户端-服务器架构
  • [ ] (可选)有使用过 GitHub/Notion/Slack 等服务

学习目标:

  • [ ] 理解 MCP 的核心概念和设计理念
  • [ ] 能够配置和使用远程 MCP 服务器
  • [ ] 能够设置本地 MCP 服务器
  • [ ] 掌握 MCP 的调试和优化方法
  • [ ] 了解 MCP 的安全最佳实践

时间预期:

  • 阅读本章:20-25 分钟
  • 完成所有章节:3-4 小时
  • 动手实践:额外 2-3 小时

🎯 本章核心要点

1. MCP 解决的核心问题

集成复杂度: M×N → M+N(线性复杂度) 上下文效率: 150,000 tokens → 2,000 tokens(98.7% 减少) 工具发现: 硬编码 → 动态发现和自描述 数据流转: 手动复制粘贴 → 自动化集成

2. MCP vs Skills 的区别

SkillsMCP
工作流和指令工具和数据
静态内容实时 API
/ 斜杠命令@ 资源引用
低复杂度中高复杂度

3. MCP 的四大特性

  1. 通用连接标准:USB-C for AI
  2. 极致效率:98.7% token 减少
  3. 动态发现:自描述接口
  4. 安全优先:多层权限控制

4. MCP 生态系统

  • 已支持: 1000+ 服务器
  • 主流采用: OpenAI、Microsoft、Sourcegraph
  • 企业部署: Cognizant 350,000 员工
  • 市场规模: 2025 年预计 $10.3B

🚀 下一步

现在你已经了解了 MCP 的核心价值和应用场景。

3.2 MCP 基础概念和架构 中,我们将深入:

  • MCP 的协议架构(Client-Server-Host)
  • 三种传输类型(HTTP、SSE、Stdio)的区别和使用场景
  • 配置文件的结构和位置
  • 核心原语系统(Tools、Resources、Prompts)

准备好了吗? 让我们开始掌握 MCP 的技术基础!


💡 学习提示: MCP 的概念可能一开始看起来有些复杂,但不用担心。我们会从最简单的远程服务器开始(只需一行命令),然后逐步深入。记住:MCP 是工具,Skills 是流程,两者结合才能发挥最大价值。

基于 MIT 许可证发布。内容版权归作者所有。