MCP 概述
Understanding the Model Context Protocol and Its Role in Claude Code
Model Context Protocol(MCP)是 Anthropic 于 2024 年底推出的一项开放协议,旨在为 AI 模型提供一种标准化的方式来连接外部工具、数据源和服务。在 Claude Code 中,MCP 扮演着桥梁的角色,让 Claude 能够突破纯文本交互的限制,直接与真实世界的系统进行交互。
什么是 MCP
What is the Model Context Protocol
MCP 的全称是 Model Context Protocol,直译为「模型上下文协议」。它定义了一套标准的通信规范,使得 AI 模型(如 Claude)能够:
- 调用外部工具执行操作(如搜索网页、操作数据库、管理文件)
- 读取外部数据源获取上下文信息
- 使用预定义的提示模板来完成特定任务
简单来说,MCP 就像是 AI 世界的「USB 接口」——只要设备(MCP 服务器)遵循统一的协议标准,就能即插即用地与任何支持 MCP 的 AI 客户端连接。
传统方式:每个 AI 应用需要为每个服务编写专用集成代码
AI App A ──── 自定义代码 ──── GitHub
AI App A ──── 自定义代码 ──── Slack
AI App B ──── 自定义代码 ──── GitHub (重复工作)
MCP 方式:统一协议,一次实现,处处可用
AI App A ──┐ ┌── GitHub MCP Server
AI App B ──┤── MCP 协议 ────┤── Slack MCP Server
AI App C ──┘ └── DB MCP Server核心价值
Core Value Proposition
| 特性 | 传统 API 集成 | MCP 集成 |
|---|---|---|
| 协议标准 | 各自定义 | 统一标准 |
| 开发成本 | 每次重新开发 | 一次开发,多处复用 |
| 发现机制 | 需要文档 | 自描述能力 |
| 安全模型 | 各自实现 | 内置权限管理 |
| 社区生态 | 碎片化 | 统一生态 |
MCP 的设计理念
Design Philosophy of MCP
MCP 的设计基于以下几个核心原则:
1. 开放与标准化
Open and Standardized
MCP 是完全开源的协议规范。任何人都可以实现自己的 MCP 服务器或客户端,无需 Anthropic 的授权。协议规范托管在 GitHub 上,接受社区贡献。
2. 安全优先
Security First
MCP 内置了多层安全机制:
- 能力声明:服务器必须声明它能提供的所有工具和资源
- 用户确认:敏感操作(如写入文件、执行命令)需要用户明确授权
- 作用域隔离:不同 MCP 服务器之间相互隔离,不能访问彼此的数据
{
"tools": [
{
"name": "read_file",
"description": "读取指定路径的文件内容",
"inputSchema": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "文件的绝对路径"
}
},
"required": ["path"]
}
}
]
}3. 可组合性
Composability
多个 MCP 服务器可以同时连接到一个客户端,Claude Code 可以根据任务需要,自动选择合适的工具组合来完成复杂任务。
4. 传输无关性
Transport Agnostic
MCP 不绑定特定的传输方式。无论是本地进程通信还是远程 HTTP 调用,都使用相同的消息格式。
架构图解
Architecture Overview
MCP 采用经典的客户端-服务器架构。在 Claude Code 的场景中,架构如下:
┌─────────────────────────────────────────────────────┐
│ Claude Code (客户端) │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ MCP │ │ MCP │ │ MCP │ │
│ │ Client 1│ │ Client 2│ │ Client 3│ ... │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │
└───────┼─────────────┼─────────────┼───────────────────┘
│ stdio │ SSE │ Streamable HTTP
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 本地 MCP │ │ 远程 MCP │ │ 云端 MCP │
│ Server │ │ Server │ │ Server │
│(文件系统) │ │ (Exa) │ │(数据库) │
└──────────┘ └──────────┘ └──────────┘
│ │ │
▼ ▼ ▼
本地文件 Exa 搜索 API PostgreSQL通信流程
Communication Flow
一次典型的 MCP 交互流程如下:
- 初始化:Claude Code 启动 MCP 服务器进程(或连接远程服务器)
- 能力发现:客户端请求服务器的能力列表(工具、资源、提示)
- 工具调用:用户提出请求,Claude 决定调用某个 MCP 工具
- 执行与返回:MCP 服务器执行操作,将结果返回给 Claude
- 结果整合:Claude 将工具返回的结果整合到回复中
用户: "帮我搜索最新的 React 19 特性"
Claude Code Exa MCP Server Exa API
│ │ │
│──── tools/call ─────────────>│ │
│ {name: "search", │ │
│ query: "React 19"} │──── HTTP Request ───────>│
│ │ │
│ │<─── Search Results ──────│
│<─── tool result ────────────│ │
│ {results: [...]} │ │
│ │ │
▼
Claude: "根据搜索结果,React 19 的主要新特性包括..."三种传输类型
Three Transport Types
MCP 支持三种传输机制,适用于不同的部署场景:
1. stdio(标准输入输出)
Standard I/O Transport
最常用的本地传输方式。Claude Code 将 MCP 服务器作为子进程启动,通过标准输入(stdin)和标准输出(stdout)进行通信。
# 典型的 stdio MCP 服务器启动方式
claude mcp add my-server -- node /path/to/server.js
claude mcp add python-tool -- python3 /path/to/server.py
claude mcp add npx-tool -- npx -y @anthropic/some-mcp-server适用场景:
- 本地开发工具(文件系统、Git 操作)
- 不需要网络访问的工具
- 需要访问本地资源的场景
优点:启动快、延迟低、无需网络配置、安全性高
2. SSE(Server-Sent Events)
Server-Sent Events Transport
基于 HTTP 的单向流式传输,适用于远程 MCP 服务器。
# 连接远程 SSE MCP 服务器
claude mcp add --transport sse remote-server https://mcp.example.com/sse适用场景:
- 远程托管的 MCP 服务
- 需要通过网络访问的 API 集成
- 团队共享的 MCP 服务器
3. Streamable HTTP
Streamable HTTP Transport
MCP 协议的最新传输类型,结合了 HTTP 的通用性和流式传输的高效性。
# 连接 Streamable HTTP MCP 服务器
claude mcp add --transport http remote-server https://mcp.example.com/mcp适用场景:
- 现代云端 MCP 服务
- 需要双向流式通信的场景
- 对性能要求较高的远程服务
传输类型对比
Transport Type Comparison
| 特性 | stdio | SSE | Streamable HTTP |
|---|---|---|---|
| 部署位置 | 本地 | 本地/远程 | 本地/远程 |
| 启动方式 | 子进程 | HTTP 连接 | HTTP 连接 |
| 通信方向 | 双向 | 服务器推送 | 双向 |
| 延迟 | 极低 | 中等 | 低 |
| 安全性 | 高(本地) | 需 HTTPS | 需 HTTPS |
| 适用场景 | 本地工具 | 远程服务 | 云端服务 |
| 协议版本 | 所有版本 | 早期版本 | 最新版本 |
MCP 提供的能力类型
Capability Types Provided by MCP
MCP 服务器可以向客户端提供三种类型的能力:
Tools(工具)
Tools — Executable Actions
工具是 MCP 最核心的能力。它们代表 AI 可以执行的具体操作,例如搜索网页、读写文件、查询数据库等。
{
"name": "execute_query",
"description": "执行 SQL 查询并返回结果",
"inputSchema": {
"type": "object",
"properties": {
"sql": {
"type": "string",
"description": "要执行的 SQL 语句"
},
"database": {
"type": "string",
"description": "目标数据库名称"
}
},
"required": ["sql"]
}
}Resources(资源)
Resources — Contextual Data
资源允许 MCP 服务器向 AI 提供额外的上下文数据。资源可以是文件内容、数据库 schema、API 文档等。
{
"uri": "db://schema/users",
"name": "Users 表结构",
"mimeType": "application/json",
"description": "users 表的完整 schema 定义"
}Prompts(提示)
Prompts — Reusable Templates
提示是预定义的交互模板,帮助用户更高效地使用特定 MCP 服务器的功能。
{
"name": "code_review",
"description": "对指定代码进行审查",
"arguments": [
{
"name": "language",
"description": "编程语言",
"required": true
},
{
"name": "code",
"description": "待审查的代码",
"required": true
}
]
}与传统 API 集成的区别
Differences from Traditional API Integration
为了更好地理解 MCP 的价值,我们将它与传统的 API 集成方式进行对比:
传统 API 集成
# 传统方式:每个服务需要单独编写集成代码
import requests
class GitHubClient:
def __init__(self, token):
self.token = token
self.base_url = "https://api.github.com"
def create_issue(self, repo, title, body):
response = requests.post(
f"{self.base_url}/repos/{repo}/issues",
headers={"Authorization": f"token {self.token}"},
json={"title": title, "body": body}
)
return response.json()
# AI 应用需要硬编码每个 API 的调用逻辑
# 每个新服务都需要重新开发MCP 集成
# MCP 方式:标准化的工具声明和调用
# 服务器只需声明能力,客户端自动发现和使用
# MCP 服务器端
@server.tool()
async def create_issue(repo: str, title: str, body: str) -> str:
"""在 GitHub 仓库中创建新 Issue"""
# 实现逻辑...
return f"Issue #{issue_number} 已创建"
# Claude Code 自动发现并使用这个工具
# 无需任何额外的集成代码核心差异总结
| 维度 | 传统 API 集成 | MCP 集成 |
|---|---|---|
| 集成方式 | 硬编码 API 调用 | 声明式工具发现 |
| 新服务接入 | 需要开发 | 即插即用 |
| AI 理解能力 | 需要手动描述 | 自描述工具 Schema |
| 错误处理 | 各自实现 | 协议层统一处理 |
| 权限管理 | 各自实现 | 协议内置 |
| 可复用性 | 低 | 高 |
MCP 生态系统现状
Current State of the MCP Ecosystem
截至目前,MCP 生态系统已经形成了相当规模的社区和工具链。
官方资源
- 协议规范:modelcontextprotocol.io — 完整的协议文档
- 官方 SDK:TypeScript SDK、Python SDK、Java SDK、C# SDK
- 官方服务器:Anthropic 维护的参考实现
社区生态
MCP 社区正在快速发展,涵盖以下领域的服务器实现:
| 领域 | 代表性服务器 | 说明 |
|---|---|---|
| 搜索引擎 | Exa、Brave Search | AI 友好的网络搜索 |
| 设计工具 | Figma (Framelink) | 设计稿解析与转换 |
| 代码管理 | GitHub、GitLab | 代码仓库操作 |
| 数据库 | PostgreSQL、MySQL、SQLite | 数据库查询与管理 |
| 文件系统 | Filesystem MCP | 本地文件操作 |
| 浏览器 | Puppeteer、Playwright | 浏览器自动化 |
| 通信协作 | Slack、Discord | 团队消息通知 |
| 监控 | Sentry | 错误追踪与监控 |
| 文档 | Context7、Notion | 文档检索与管理 |
| 云服务 | AWS、GCP | 云资源管理 |
支持 MCP 的客户端
除了 Claude Code 之外,越来越多的 AI 工具开始支持 MCP:
- Claude Desktop — Anthropic 的桌面应用
- Claude Code — 命令行开发工具(本文主角)
- Cursor — AI 代码编辑器
- Windsurf — AI 开发环境
- Continue — 开源 AI 编码助手
- 其他第三方 AI 应用
开发者工具
MCP 也有丰富的开发者工具支持:
# MCP Inspector — 用于调试 MCP 服务器的可视化工具
npx @anthropic/mcp-inspector
# 创建新的 MCP 服务器项目
npx create-mcp-server my-server
# Claude Code 内置的调试命令
claude mcp serve # 以 MCP 服务器模式运行 Claude Code小结
Summary
MCP 代表了 AI 与外部系统集成的一个重要范式转变。通过标准化的协议,它解决了传统 API 集成中的碎片化问题,让 AI 工具能够更加灵活、安全地与各种外部服务进行交互。
在接下来的章节中,我们将深入探讨如何在 Claude Code 中配置 MCP 服务器、常用的 MCP 服务推荐,以及实际应用案例。
下一步:阅读 MCP 配置 了解如何在 Claude Code 中设置 MCP 服务器。