MCP 协议 中级

MCP 架构:Host、Client、Server 与传输层

拆解 MCP 的三角色架构(Host/Client/Server)、两大传输方式(stdio / Streamable HTTP)与 JSON-RPC 消息机制。

三角色模型

┌─ Host(宿主应用,如 Claude Desktop / 你的 Agent)─┐
│  ┌─ Client 1 ──连接──→ MCP Server: GitHub     │
│  ┌─ Client 2 ──连接──→ MCP Server: 数据库      │
│  └─ Client 3 ──连接──→ MCP Server: 浏览器     │
└──────────────────────────────────────────┘
  • Host:用户使用的 AI 应用,内含 LLM 与对话逻辑;
  • Client:Host 内部维护的连接器,每个 Client 与一个 Server 一对一通信
  • Server:暴露工具/资源/提示词的轻量服务 —— 可以是本地进程,也可以是远程服务。

两种传输方式

  • stdio(标准输入输出):Server 作为本地子进程启动,通过 stdin/stdout 通信 —— 本地工具首选,零网络配置;
  • Streamable HTTP:远程 Server 走 HTTP(服务端可主动推送),适合云端共享服务;早期版本用 HTTP+SSE,现已演进为更简单的 Streamable HTTP。

消息层:JSON-RPC 2.0

所有通信基于 JSON-RPC:Client → Server 的 tools/list(发现工具)、tools/call(调用工具)、resources/read 等;Server → Client 也有反向请求(如 Sampling,见下一课)。协议本身与语言无关,官方提供 Python / TypeScript SDK。

理解要点:Server 是"能力提供方",但何时调用工具永远由 Host 侧的模型与应用决定 —— 与本站《Tool Calling》课"模型点菜、应用执行"的原则一致。

📝 课后练习

quiz-1 MCP 架构中 Client 与 Server 的关系是?