🔌 MCP 深度解读

Model Context Protocol — 让AI应用拥有"手和眼"的统一协议

📖 什么是 MCP?

MCP(Model Context Protocol,模型上下文协议)是一个开源通信标准,定义了AI应用(如 Claude、ChatGPT)如何与外部数据源和工具进行交互。

类比理解:如果大模型是"大脑",MCP就是让大脑连接"眼睛"(读取数据)、"手"(执行操作)和"记忆"(访问知识库)的标准化神经系统

在MCP出现之前,每个AI应用需要为每个外部服务单独编写集成代码(N×M问题)。MCP将这个问题简化为 N+M:开发者只需为每个AI应用写一个MCP客户端,为每个服务写一个MCP Server,即可实现全面互通。

🏗️ 核心架构

MCP Host
AI 应用(Claude / ChatGPT / Cursor)
↓ 管理多个 ↓
MCP Client 1
维护专用连接
MCP Client 2
维护专用连接
MCP Client 3
维护专用连接
↕ JSON-RPC 2.0 ↕
Server A
文件系统(本地)
Server B
数据库(本地/远程)
Server C
Sentry / GitHub(远程)
角色 说明 示例
MCP Host 协调和管理多个 Client 的 AI 应用 Claude Desktop、ChatGPT、VS Code
MCP Client 与单个 Server 维持连接的组件 Host 内部自动实例化的连接管理器
MCP Server 暴露工具/资源/提示词的程序 文件系统 Server、GitHub Server、数据库 Server

📡 传输层:两种通信模式

💻 STDIO 传输

通过标准输入/输出流进行进程间通信,零网络开销,适合本地 MCP Server

  • 同机通信,延迟极低
  • Server 作为子进程启动
  • 适合文件系统、本地数据库等场景

🌐 Streamable HTTP

基于 HTTP POST + SSE 的远程通信,支持标准认证,适合远程 MCP Server

  • 支持 OAuth / Bearer Token / API Key
  • 一个 Server 可服务多个 Client
  • 适合云端 API、SaaS 集成等场景

🧩 三大核心原语

🔧 Tools(工具)

AI 可主动调用的可执行函数,模型决定何时使用

  • 文件读写、API 调用、数据库查询
  • 搜索航班、发送消息、创建日程
  • 通过 JSON Schema 定义输入参数
  • 支持用户审批机制确保安全

📚 Resources(资源)

被动数据源,提供只读上下文信息,应用决定如何使用

  • 文件内容、数据库 Schema、API 文档
  • 支持固定 URI 和动态模板两种模式
  • 可通过 URI 模板参数化查询
  • 如:calendar://events/2024

📝 Prompts(提示词模板)

预构建的交互模板,用户主动选择使用

  • 结构化的任务引导模板
  • 支持参数化输入
  • 如:"规划旅行"、"总结会议"、"起草邮件"
  • 可通过斜杠命令触发(/plan-vacation)

⚡ 工作流程

Step 1 初始化握手 — Client 与 Server 交换能力声明,协商协议版本
Step 2 能力发现 — Client 调用 tools/list、resources/list 发现可用原语
Step 3 执行操作 — LLM 根据对话上下文决定调用哪个工具,Client 转发请求
Step 4 结果返回 — Server 执行完毕,结果作为上下文注入 LLM 对话流
Step 5 实时通知 — Server 可主动推送变更通知(如工具列表更新),Client 按需刷新

🎯 典型使用场景

🌍 生态系统支持

MCP 已获得广泛行业支持,"一次构建,处处集成":

Anthropic Claude OpenAI ChatGPT VS Code Copilot Cursor Windsurf Zed Sourcegraph Replit MCPJam Cline Continue Amazon Bedrock Google Vertex AI

🚀 快速上手

在 Claude Desktop 中配置一个 MCP Server(以文件系统为例):

// 在 Claude Desktop 配置文件中添加: { "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/files" ] } } }

支持的 Server 启动方式:

# TypeScript Server(通过 npx) npx -y @modelcontextprotocol/server-memory # Python Server(通过 uvx) uvx mcp-server-git # Python Server(通过 pip) pip install mcp-server-git python -m mcp_server_git

📊 MCP vs 传统集成方式

维度 传统方式(N×M 集成) MCP(N+M 集成)
集成复杂度 每个 AI × 每个服务都需要单独适配 AI 只需实现 Client,服务只需实现 Server
可复用性 集成代码绑死特定 AI 应用 Server 可被任意 MCP Client 调用
协议标准化 各自定义接口,无统一规范 统一 JSON-RPC 2.0 协议
发现机制 硬编码能力,无法动态发现 运行时动态发现工具/资源/提示词
安全模型 各平台自行实现权限控制 内置用户审批、权限协商机制