MCP协议的架构设计全解:从核心组件到安全机制
一、总体架构概览MCP(Model Context Protocol)遵循 “客户端-主机-服务器” 三层架构:
- Host(主机):充当容器与协调器,创建/管理多个 Client,负责安全策略与用户授权。
- Client(客户端):与单个 Server 建立 1:1 有状态会话,完成能力协商、双向消息转发与上下文维护。
- Server(服务器):暴露特定资源或工具,专注单一能力,实现最小化职责与安全隔离。
二、消息层:JSON-RPC 2.0 与状态会话MCP 统一采用 JSON-RPC 2.0 作为消息格式(请求 / 响应 / 通知三类),并通过 session 保持跨多步任务的上下文,实现链式调用与变量追踪。
三、传输层:可插拔通信通道
- Stdio(标准输入/输出)——本地 CLI 与桌面插件首选,延迟极低。
- Streamable HTTP——“单端点 POST + 可选 SSE 流” 的远程方案,支持断点续连与多客户端并发。
- 传统 SSE 双端点——兼容旧生态,依旧常见于生产环境。
- 自定义扩展——协议允许 WebSocket、Unix Socket、ZeroMQ 等任意双向通道,只需封装 JSON-RPC 消息。
四、能力协商与扩展机制建立连接时,Client 与 Server 显式声明 capability 列表(如订阅通知、工具调用、采样支持等)。功能按需启用,保证前向兼容与渐进式扩展。
五、安全设计要点
- 最小权限原则:主机层面对每个工具设定 Scope,避免越权。
- 多重隔离:Server 彼此不可见,完整会话仅掌握在 Host,防止数据泄露。
- 审计与日志:所有调用链路可追溯,便于检测提示注入、令牌窃取等攻击。
六、设计原则与实践价值
- 易构建:Server 只关注自身功能,复杂编排交由 Host 完成。
- 可组合:多个 Server 可任意拼装,快速聚合能力。
- 逐步演进:核心协议精简,功能通过 capability 渐进扩展,保持长期稳定。
七、部署拓扑示例
- 本地开发:IDE 插件 (Client) ←→ 调试 Server (Stdio)
- 云端服务:浏览器 Agent (Client) ←HTTP→ 工具网关 (Server)
- 操作系统级:Windows AI Foundry (Host) 统一暴露文件系统、日历等 Server,任何 LLM Agent 均可即插即用。
八、总结通过“客户端-主机-服务器”解耦、JSON-RPC 消息层与可插拔传输,MCP 将 AI 与外部工具的集成从碎片化接线升级为 标准化、可扩展、安全可控 的体系,为构建企业级与个人级智能体奠定基础。