一、定义

MCP(Model Context Protocol,模型上下文协议) 是由 Anthropic 于 2024 年 11 月推出并开源的一种开放标准协议

它的核心定位是:为 AI 模型(特别是大语言模型 LLM)与外部数据源、工具之间提供一种统一、标准化、安全的集成方式。MCP 常被形象地比喻为 AI 应用的 "USB-C 接口" —— 就像 USB-C 统一了电子设备的连接方式一样,MCP 旨在统一 AI 与外部世界的连接方式。

核心设计理念

特性 说明
开放性 完全开源协议,任何开发者或组织都可以实现
标准化 统一的接口规范,消除集成碎片化
双向性 支持 AI 主动请求数据和执行操作
安全性 本地优先架构,用户始终掌控数据访问权限
可扩展性 模块化设计,易于添加新的数据源和工具

二、作用

2.1 解决的核心问题

在 MCP 出现之前,AI 应用与外部系统的集成面临诸多挑战:

  1. 碎片化集成:每个 AI 应用都需要为每个外部服务编写定制化的连接代码
  2. 重复开发:同样的功能(如读取本地文件、查询数据库)在不同应用中反复实现
  3. 安全隐忧:缺乏统一的安全标准,数据访问权限管理混乱
  4. 能力边界受限: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 PR
  • run_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 优势

  1. 标准化:一次实现,多平台复用,大幅降低集成成本
  2. 安全性:本地优先、用户授权、最小权限原则
  3. 实时性:打破训练数据的时间限制,获取最新信息
  4. 模块化:按需组合不同的 MCP 服务器,灵活构建能力
  5. 开放性:开源生态,社区驱动,持续扩展

6.2 局限与挑战

  1. 性能开销:进程间通信(stdio)或网络请求带来延迟
  2. 配置复杂度:需要手动配置服务器连接信息和权限
  3. 错误处理:工具调用失败时的容错和重试机制需要完善
  4. 安全边界:虽然用户授权是必需的,但社会工程学攻击仍需防范
  5. 生态成熟度:相比传统 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"的愿景正在逐步成为现实。


参考资源

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐