Host 就像是一个作战大厅,大厅里主要有三种角色:
- LLM Client 扮演者将军的角色,负责作战计划的制定。
- Orchestrator 扮演着作战参谋的角色,负责协调各个 MCP Client 的行动。
- MCP Client 扮演者通信兵的角色,负责与外部 MCP Server 进行通信。
从另一个层面看,Host 是 Client 容器,也负责协调、编排任务的执行,确保任务能够被安全、可靠、高质量的完成。
接下来,我们看下 MCP(Model Context Protocol) 真正的架构部分:
以上,是一个标准的 C/S 架构。
- Host 是一个完整的 LLM 应用。创建和管理多个 Client 实例、执行安全策略、处理用户授权决策。
- Client 和 Server 保持 1:1 的连接。Client 向 Server 声明自己的能力需求,Server 向 Client 暴露可用的工具和资源。
- Server 提供各种能力:Prompts、Tools、Resources。告诉 Client 我能做什么,我还需要什么。
- Client 和 Server 之间,靠 MCP 标准通信协议保障,实现了能力协商、安全调用的规范。
MCP 解决了一个关键痛点:M×N 问题 —— 即 M 个不同的大语言模型需要与 N 个不同工具和数据源集成时的组合爆炸式复杂性。
事实上,让 LLM 具备工具协调能力、规划能力事实上并不一定靠 MCP 解决。
多代理下的 Function call 也可以实现这样的效果。但 MCP 将这种能力标准化,并提供了一个完整的生态系统。
一、MCP Host
一个完成的 Host 应用通用架构如下所示:
1.1 用户交互层
用户交互层是 Host 应用的入口,负责与用户进行交互。
交互通常应支持多模态。
1.2 应用业务层
应用业务层负责实现核心业务目标。
AI Model Interface 负责智能任务规划:通过 Prompt 构建将用户需求与当前可用能力(Client/Server 能力)整合为上下文,经 多模型路由选择合适的 LLM 进行推理,最终生成可执行的任务列表。
Task Orchestrator 负责任务执行编排:通过 工作流引擎将 AI 意图分解为可执行的操作序列并调用相应 Client,通过 规则引擎对执行结果进行安全审查和边界监控。
1.3 集成协调层
集成协调层负责 MCP 连接管理:通过 生命周期管理确保各 Client 实例正常运行,通过 高可用机制提供连接池优化、故障恢复和重试策略等可靠性保障。
1.4 基础设施层
基础设施层提供系统运行基础支撑:通过 存储管理确保数据持久化和配置服务,通过 监控安全提供系统分析和安全基础设施保障。
二、MCP Server
2.1 MCP 协议实现层
协议实现层负责标准通信协议支撑:通过 JSON-RPC 2.0 处理器实现消息解析与响应机制,通过 能力协商器管理客户端能力发现与版本匹配,提供错误处理、进度报告和通知系统等核心协议功能。
2.2 核心能力
MCP Server 通过标准协议向客户端暴露三类核心能力:Resources(数据访问)、Tools(功能执行)、Prompts(模板交互)。另外,还提供了一些辅助能力:Sampling(LLM 推理服务)、Roots(文件系统访问权限)。
2.2.1 Resources
受应用控制的只读数据源,为模型提供上下文信息。每个资源具备唯一的 URI 标识,支持通过 直接发现(resources/list 获取静态列表)和 模板发现(URI 模板动态构建)两种方式进行资源发现,通过 resources/read 请求访问具体内容。
2.2.2 Tools
受模型控制的可执行功能,支持状态修改。LLM 通过工具与外部系统交互、执行计算和现实世界操作。每个工具具备唯一名称标识,支持通过 工具发现(tools/list 获取可用列表)和 工具调用(tools/call 执行具体功能)两种标准化操作。
2.2.3 Prompts
受用户控制的交互模板,实现业务流程标准化。每个 Prompt 支持 参数化设计(定义参数名称、类型和必需性)和 工作流模板(预定义业务流程的标准化交互模式),通过 prompts/list 和 prompts/get 实现模板发现和获取。
2.2.4 Sampling
受服务器请求的 LLM 推理服务,使服务器在处理过程中获得 AI 辅助。每个请求具备标准消息格式,支持通过 模型偏好(成本、速度、智能优先级配置)和 上下文包含(指定服务器上下文范围)两种方式进行请求定制,通过 sampling/createMessage 向客户端请求 LLM 生成。
2.2.5 Roots
Roots 是 MCP 协议中客户端提供的一个关键安全特性,它定义了服务器在文件系统中可以操作的边界。简单来说,Roots就是”允许访问的目录清单”,类似于给保姆一串特定房间的钥匙。
每个目录具备唯一的 file:// URI 路径,支持通过 权限验证(服务器向客户端请求 roots/list 获取允许目录清单)和 动态调整(客户端可实时更新访问权限范围并发送 roots/list_changed 通知)两种方式进行安全边界管理,确保服务器只能在授权目录内执行文件操作。
2.3 执行引擎层
执行引擎层负责业务逻辑执行:通过 工具执行器处理功能调用与生命周期管理,通过 资源提供器实现数据访问与内容缓存,集成参数验证、模板引擎和安全上下文等核心执行组件。
2.4 传输抽象层
传输抽象层提供多协议通信支撑:通过 标准传输协议(Stdio、HTTP、WebSocket)实现跨环境通信,通过 自定义传输扩展支持灵活的集成需求和协议适配。
总结
MCP 通过标准化协议解决了 AI 与外部系统集成的复杂性,提供了一种 AI 应用开发的范式。
参考
LLM Powered Autonomous Agents
Model Context Protocol
MCP (Model Context Protocol),一篇就够了。