MCP 协议解析:为什么它是 Agent 的 USB-C

2026-05-28MCP协议Agent

什么是 MCP

MCP(Model Context Protocol)是 Anthropic 提出的开放协议,旨在为 LLM 应用提供一套统一的工具/数据源接入标准。类比 USB-C——MCP 的目标是让任何 LLM 都能以相同的方式连接任何工具和数据源,不再需要为每个集成写自定义胶水代码。

为什么需要 MCP

在 MCP 之前,LLM 应用集成工具的方式是混乱的:

  • 每个框架(LangChain、CrewAI、AutoGen)都有自己的工具定义方式
  • 每个数据源需要写单独的连接代码
  • 工具的多租户、安全、认证逻辑分散在各处

MCP 统一了这场混乱:定义了Host → Client → Server的三层架构和标准通信协议。

架构:Host - Client - Server

┌──────────────────────────────────────────────┐
│  Host(宿主应用)                               │
│  • 管理用户交互和 LLM 编排                       │
│  • 如:Claude Desktop、IDE 插件、自定义 Agent    │
│  • 每个 Host 可以连接多个 MCP Server             │
├──────────────────────────────────────────────┤
│  Client(MCP 客户端)                           │
│  • 每个 Server 对应一个 Client 连接              │
│  • 管理连接生命周期和请求路由                     │
├──────────────────────────────────────────────┤
│  Server(MCP 服务器)                           │
│  • 暴露工具、资源、提示模板                       │
│  • 如:文件系统 Server、数据库 Server、API Server  │
│  • 每个 Server 是一个独立进程                     │
└──────────────────────────────────────────────┘

核心能力

传输层

MCP 支持两种传输方式:

  • stdio:Server 作为子进程运行,通过 stdin/stdout 通信,适合本地工具
  • SSE (Server-Sent Events):通过 HTTP 通信,适合远程服务和多客户端场景

MCP Server 开发者体验

创建一个 MCP Server 只需几步:

# Python (mcp 库)
from mcp.server import Server

server = Server("my-tools")

@server.tool()
def get_weather(city: str) -> str:
    """查询城市天气"""
    return f"{city}: 晴, 28°C"

server.run()  # 启动 stdio 传输

MCP 的定位

  • 不是 Agent 框架:MCP 不处理 Agent 的编排、路由、记忆,只处理工具接入
  • 不是 API 网关:MCP 面向 LLM,而不是面向人类的 HTTP 接口
  • 是集成标准:让工具开发者写一次 Server,所有 MCP 兼容的 Host 都能用
未标记
能力说明示例
Tools可被 LLM 调用的函数(同步/异步)SQL 查询、发送邮件、GitHub API
ResourcesLLM 可以读取的数据源文件内容、API 响应、数据库记录
Prompts预定义的提示模板调试模板、总结模板、代码审查模板
SamplingServer 主动请求 LLM 生成Agent 间的交叉验证