MCP(Model Context Protocol)详细介绍
MCP(Model Context Protocol)是Anthropic于2024年11月推出的开源协议,旨在为AI大模型与外部数据源/工具提供标准化集成方案。该协议采用客户端-服务器架构,支持JSON-RPC通信,具备四大核心能力:资源访问(Resources)、工具调用(Tools)、提示词模板(Prompts)和模型采样(Sampling)。MCP能有效解决AI集成中的碎片化、安全性和实时
一、定义
MCP(Model Context Protocol,模型上下文协议) 是由 Anthropic 于 2024 年 11 月推出并开源的一种开放标准协议。
它的核心定位是:为 AI 模型(特别是大语言模型 LLM)与外部数据源、工具之间提供一种统一、标准化、安全的集成方式。MCP 常被形象地比喻为 AI 应用的 "USB-C 接口" —— 就像 USB-C 统一了电子设备的连接方式一样,MCP 旨在统一 AI 与外部世界的连接方式。
核心设计理念
| 特性 | 说明 |
|---|---|
| 开放性 | 完全开源协议,任何开发者或组织都可以实现 |
| 标准化 | 统一的接口规范,消除集成碎片化 |
| 双向性 | 支持 AI 主动请求数据和执行操作 |
| 安全性 | 本地优先架构,用户始终掌控数据访问权限 |
| 可扩展性 | 模块化设计,易于添加新的数据源和工具 |
二、作用
2.1 解决的核心问题
在 MCP 出现之前,AI 应用与外部系统的集成面临诸多挑战:
- 碎片化集成:每个 AI 应用都需要为每个外部服务编写定制化的连接代码
- 重复开发:同样的功能(如读取本地文件、查询数据库)在不同应用中反复实现
- 安全隐忧:缺乏统一的安全标准,数据访问权限管理混乱
- 能力边界受限:AI 只能依赖训练数据,无法实时获取外部信息
2.2 MCP 带来的变革
传统方式:
AI 应用 A ←→ 定制化代码 ←→ GitHub API
AI 应用 A ←→ 定制化代码 ←→ PostgreSQL
AI 应用 B ←→ 定制化代码 ←→ GitHub API
AI 应用 B ←→ 定制化代码 ←→ 本地文件系统
MCP 方式:
AI 应用 A ←→ MCP 协议 ←→ MCP 服务器(GitHub)
AI 应用 A ←→ MCP 协议 ←→ MCP 服务器(PostgreSQL)
AI 应用 B ←→ MCP 协议 ←→ MCP 服务器(GitHub)
AI 应用 B ←→ MCP 协议 ←→ MCP 服务器(文件系统)
关键优势:
- 一次开发,到处使用:开发者实现一个 MCP 服务器,所有支持 MCP 的客户端(Claude、Cursor、Cline 等)都可以使用
- 实时数据访问:AI 可以获取最新的、不在训练集中的信息
- 本地优先:数据在本地处理,降低隐私泄露风险
- 用户授权:所有数据访问都需要用户明确授权
三、核心功能与架构
3.1 整体架构
MCP 采用经典的客户端-服务器(Client-Server)架构:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP 客户端 │ ←─────→ │ MCP 协议 │ ←─────→ │ MCP 服务器 │
│ (AI 应用/模型) │ JSON-RPC │ (标准化通信) │ │ (数据源/工具) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │
│ ┌──────┴──────┐
│ │ │
[Claude Code] [文件系统] [数据库]
[Claude Desktop] [GitHub] [Slack]
[Cursor] [浏览器] [API服务]
[Cline] [搜索引擎] ...
3.2 通信协议
MCP 基于 JSON-RPC 2.0 进行通信,支持两种传输方式:
| 传输方式 | 说明 | 适用场景 |
|---|---|---|
| stdio(标准输入输出) | 通过进程间通信(IPC)进行本地连接 | 本地工具、文件系统、本地数据库 |
| SSE(Server-Sent Events) | 通过 HTTP 进行远程连接 | 远程 API、云服务 |
3.3 四大核心能力
MCP 服务器可以向客户端暴露以下四种核心能力:
① Resources(资源)
定义:暴露数据和内容,供 AI 读取和引用。
示例:
- 本地文件系统中的文件和目录
- 数据库中的表和记录
- GitHub 仓库中的代码文件
- 网页内容
- 日志文件
特点:
- 只读或读写权限可配置
- 支持订阅更新(实时推送变更)
- URI scheme 标识(如
file://、postgres://、github://)
② Tools(工具)
定义:暴露可执行的函数或操作,供 AI 调用以完成特定任务。
示例:
read_file:读取文件内容execute_query:执行数据库查询send_message:发送 Slack 消息create_pull_request:创建 GitHub PRrun_command:执行终端命令
特点:
- 需要用户授权才能执行(特别是破坏性操作)
- 带参数定义(JSON Schema 描述)
- AI 根据任务需求自主选择和调用
③ Prompts(提示词模板)
定义:提供预设的、可复用的提示词模板。
示例:
- 代码审查模板
- 调试辅助模板
- 文档生成模板
特点:
- 参数化,可动态填充内容
- 标准化常见任务的交互方式
④ Sampling(采样 / LLM 补全)
定义:允许 MCP 服务器请求客户端的 LLM 进行文本生成或推理。
示例:
- 服务器获取原始数据后,请求 LLM 生成摘要
- 多步骤任务中,服务器请求 LLM 进行中间推理
特点:
- 服务器可以利用客户端的 AI 能力
- 支持复杂的、需要 AI 推理的交互流程
3.4 生命周期与交互流程
1. 连接建立(Initialization)
└─ 客户端与服务器交换协议版本和能力信息
2. 能力协商(Capability Negotiation)
└─ 确认双方支持的 Resources、Tools、Prompts 等
3. 正常交互(Operation)
├─ 客户端请求资源列表(resources/list)
├─ 客户端读取资源内容(resources/read)
├─ 客户端调用工具(tools/call)
├─ 客户端获取提示词(prompts/get)
└─ 服务器推送资源更新(notifications/resources/updated)
4. 连接终止(Termination)
└─ 正常关闭或错误处理
四、使用场景
4.1 开发工具与 IDE 集成
场景描述:在 IDE(如 VS Code、Cursor)中,AI 助手需要访问代码库、执行命令、与版本控制系统交互。
MCP 应用:
- 文件系统 MCP:读取、搜索、修改项目文件
- Git MCP:查看提交历史、分支状态、差异对比
- 终端 MCP:执行构建命令、运行测试、部署脚本
- 代码搜索 MCP:在大型代码库中快速定位相关代码
代表工具:Claude Code、Cursor、Cline、Roo Code
4.2 数据库与数据查询
场景描述:让 AI 能够安全地查询和操作数据库,进行数据分析或生成报告。
MCP 应用:
- PostgreSQL MCP:执行 SQL 查询、查看表结构
- SQLite MCP:本地数据库操作
- BigQuery MCP:云端大数据分析
- 向量数据库 MCP:检索增强生成(RAG)场景
典型工作流:
用户:"分析一下上个月销售额最高的前 10 个产品"
AI → 调用 MCP 工具 execute_query("SELECT ... FROM sales ...")
AI → 获取结果 → 生成分析报告和可视化建议
4.3 企业知识库与文档管理
场景描述:连接企业内部的知识库、文档系统,让 AI 基于企业私有数据回答问题。
MCP 应用:
- Confluence MCP:访问 Wiki 文档
- Notion MCP:读取和更新知识库
- SharePoint MCP:企业文档中心
- 本地文档 MCP:PDF、Word、Markdown 文件索引
优势:
- 数据不离开企业环境(本地部署 MCP 服务器)
- 实时访问最新文档,避免知识过时
- 细粒度的权限控制
4.4 云服务与 SaaS 集成
场景描述:连接第三方云服务和 SaaS 平台,实现自动化工作流。
MCP 应用:
- GitHub MCP:管理 Issue、PR、仓库设置
- Slack MCP:发送消息、查询频道历史
- Google Workspace MCP:操作文档、表格、日历
- AWS/GCP/Azure MCP:管理云资源
典型工作流:
用户:"帮我在 GitHub 上创建一个关于登录页面的 Issue"
AI → 调用 MCP 工具 create_issue(title="...", body="...")
AI → 返回创建的 Issue 链接
4.5 浏览器自动化与网页交互
场景描述:让 AI 能够浏览网页、提取信息、执行网页操作。
MCP 应用:
- Playwright MCP:自动化浏览器操作
- Puppeteer MCP:网页抓取和测试
- 爬虫 MCP:结构化数据提取
典型工作流:
用户:"帮我查看这个网页的最新公告"
AI → 调用 MCP 工具 browser_navigate(url="...")
AI → 调用 MCP 工具 browser_snapshot()
AI → 提取公告内容 → 总结给用户
4.6 个人效率与本地工具
场景描述:增强个人 AI 助手的能力,连接本地应用和数据。
MCP 应用:
- 文件系统 MCP:管理本地文件
- 邮件 MCP:读取和发送邮件
- 日历 MCP:查询和安排日程
- 备忘录 MCP:管理待办事项和笔记
五、生态与工具链
5.1 官方 SDK
Anthropic 和社区提供了多语言的 MCP SDK:
| 语言 | 包名/仓库 | 用途 |
|---|---|---|
| TypeScript | @modelcontextprotocol/sdk |
构建 Node.js 服务器和客户端 |
| Python | mcp (PyPI) |
构建 Python 服务器和客户端 |
| Java | io.modelcontextprotocol |
Java/Kotlin 生态 |
| C# | ModelContextProtocol |
.NET 生态 |
5.2 知名 MCP 服务器示例
| 类别 | 代表项目 | 功能 |
|---|---|---|
| 文件系统 | filesystem |
本地文件读写 |
| Git | git |
代码版本管理 |
| GitHub | github |
仓库、Issue、PR 管理 |
| PostgreSQL | postgres |
数据库查询 |
| Slack | slack |
消息收发 |
| Puppeteer | puppeteer |
浏览器自动化 |
| Brave Search | brave-search |
网络搜索 |
| SQLite | sqlite |
轻量级数据库 |
5.3 支持 MCP 的客户端
| 客户端 | 类型 | 特点 |
|---|---|---|
| Claude Code | CLI 工具 | Anthropic 官方,强大的代码能力 |
| Claude Desktop | 桌面应用 | 支持本地 MCP 服务器配置 |
| Cursor | AI 编辑器 | 流行的 AI 驱动 IDE |
| Cline | VS Code 插件 | 开源的 AI 编程助手 |
| Roo Code | VS Code 插件 | Cline 的分支,增强功能 |
| Zed | 代码编辑器 | 原生支持 MCP |
| 5ire | AI 客户端 | 支持多种 MCP 工具 |
六、优势与局限
6.1 优势
- 标准化:一次实现,多平台复用,大幅降低集成成本
- 安全性:本地优先、用户授权、最小权限原则
- 实时性:打破训练数据的时间限制,获取最新信息
- 模块化:按需组合不同的 MCP 服务器,灵活构建能力
- 开放性:开源生态,社区驱动,持续扩展
6.2 局限与挑战
- 性能开销:进程间通信(stdio)或网络请求带来延迟
- 配置复杂度:需要手动配置服务器连接信息和权限
- 错误处理:工具调用失败时的容错和重试机制需要完善
- 安全边界:虽然用户授权是必需的,但社会工程学攻击仍需防范
- 生态成熟度:相比传统 API 集成,工具和文档仍在快速发展中
七、快速开始示例
7.1 配置 Claude Desktop 使用 MCP
在 Claude Desktop 的配置文件中添加 MCP 服务器:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_token_here"
}
}
}
}
7.2 简单的 Python MCP 服务器示例
from mcp.server.fastmcp import FastMCP
# 创建 MCP 服务器实例
mcp = FastMCP("my-server")
# 定义一个工具
@mcp.tool()
def calculate_sum(a: float, b: float) -> float:
"""计算两个数的和"""
return a + b
# 定义一个资源
@mcp.resource("greeting://{name}")
def get_greeting(name: str) -> str:
"""返回个性化问候语"""
return f"Hello, {name}! Welcome to MCP."
if __name__ == "__main__":
mcp.run(transport='stdio')
八、总结
MCP(Model Context Protocol)是 AI 集成领域的重要创新,它通过标准化协议打通了 AI 模型与外部世界的壁垒。对于开发者而言,MCP 意味着更低的集成成本和更高的复用性;对于用户而言,MCP 意味着更强大、更实时、更安全的 AI 助手。
随着生态的快速发展,MCP 正在成为 AI 应用连接数据和服务的事实标准,其"USB-C for AI"的愿景正在逐步成为现实。
参考资源:
- 官方文档:What is the Model Context Protocol (MCP)? - Model Context Protocol
- 官方 GitHub:Model Context Protocol · GitHub
- Python SDK:GitHub - modelcontextprotocol/python-sdk: The official Python SDK for Model Context Protocol servers and clients · GitHub
- TypeScript SDK:GitHub - modelcontextprotocol/typescript-sdk: The official TypeScript SDK for Model Context Protocol servers and clients · GitHub
- 社区服务器集合:GitHub - modelcontextprotocol/servers: Model Context Protocol Servers · GitHub
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)