MCP 客户端与 MCP 服务器:定义、职责及实现详解
一、概念定义
- MCP 客户端(Client)
- 由 Host 创建并管理,用于与单个 MCP 服务器建立 1:1 有状态会话。
- 负责序列化 / 反序列化 JSON-RPC 消息、维持连接、重连、心跳等底层通信细节。
- 保存当前任务的变量、会话历史,为 AI 智能体提供连续上下文。
- MCP 服务器(Server)
- 暴露一组具体工具或数据源的调用能力(例如 GitHub、SQL 数据库、搜索 API)。
- 只聚焦单一职责,确保安全隔离与水平扩容。
- 通过能力声明文件(manifest)列出可调用的方法、参数约束及权限范围。
二、核心职责与功能
角色 | 主要职责 | 典型功能 |
---|---|---|
MCP Client | 建立并维护连接、处理消息、缓存上下文 | 发送请求、解析响应、重连、心跳、错误恢复 |
MCP Server | 提供具体能力、执行安全校验 | 按请求参数执行动作、返回结果或错误、记录审计日志 |
三、典型实现与部署方式
- Client 端:常嵌入在 AI 智能体或 Host 网关中,以库或模块形式调用;可使用 Stdio、HTTP、SSE 等多种传输适配器。
- Server 端:通常作为微服务或本地进程部署;支持容器化、FaaS 或插件式加载,方便按需启停和扩容。
四、交互流程示例
- Client 启动并向 Server 发送
mcp.listTools
,获取可用功能。 - Client 根据智能体规划,调用
mcp.runTool
等方法执行具体操作。 - Server 验证权限,执行操作并将结果以 JSON-RPC 响应返回。
- 如遇错误,Server 返回标准化错误对象,Client 负责重试或向智能体报告。
五、最佳实践建议
- 最小权限原则:为 Server 的每个方法设定精细化 Scope,避免越权。
- 单一职责原则:一个 Server 专注一种资源或工具,降低复杂性。
- 客户端缓存:合理缓存能力列表与会话变量,减少重复协商。
- 监控与审计:Server 应输出调用日志,Client 应上报延迟与错误率,便于运营维护。