简短答案
保持服务器无状态,并将记忆移入服务器每次请求查询的外部层。创建一个 MemoryLake 项目,生成一个 MCP 服务器端点,并让您的无状态服务器通过它读取和写入上下文——状态存储在 MemoryLake 中,因此任何实例都可以服务任何请求,并且仍然能够回忆起所有内容。
为什么无状态和记忆不是矛盾
2026 年的 MCP 变更将曾经纠缠在一起的两件事分开:传输和状态。无状态服务器是关于传输——没有每个连接的会话将客户端固定到一个实例。它并没有说明您的应用程序是否具有记忆。错误在于将记忆存储在进程中,这迫使粘性会话,并在第二个实例启动时打破水平扩展。
干净的模式是将记忆外部化。服务器保持为一个薄的、无状态的请求处理程序;记忆层负责持久性、检索和历史。每个实例指向相同的存储,因此请求可以由任何节点服务,并且仍然可以看到完整的上下文。这是更广泛生态系统在 2026 年达成的相同分割——可恢复存储与运行时上下文分开——应用于 MCP 层。
开始之前
您需要:
- 一个免费的 MemoryLake 账户
- 一个无状态的 MCP 服务器(或您正在重构为无状态的服务器)
- 您的服务器需要持久化的上下文——事实、规则或文件(PDF、Word、Excel、PowerPoint、Markdown 或图像)
如何逐步在无状态 MCP 服务器上添加持久记忆
第 1 步:构建一个记忆项目
登录 MemoryLake 并打开 项目管理。点击 创建项目 并命名(例如,“无状态服务器记忆”)。打开 文档驱动器,使用 上传 添加文件,然后 文档标签 → 添加文档 → 确认 附加它们。通过 记忆标签 → 添加记忆 → 保存 添加持久规则。

第 2 步:生成一个 MCP 服务器端点
打开 MCP 服务器标签 → 添加 MCP 服务器 → 描述它(例如,“无状态服务器后端”) → 生成。MemoryLake 返回一个 密钥 ID、一个 密钥 和一个 端点 URL。立即复制 密钥——它只显示一次。

第 3 步:从您的服务器每次请求查询记忆
在您的无状态处理程序中,使用 密钥 作为 Bearer 令牌 调用 MemoryLake 的 端点 URL,以在每个请求上读取或写入上下文。由于调用是无状态的,并且每个请求都经过身份验证,因此在您的负载均衡器后面的任何服务器实例都可以服务任何客户端,并且仍然能够回忆起完整的历史。请参阅 MCP 设置指南 以获取配置参考。 [免费试用 MemoryLake]

进程状态与 MemoryLake
| 维度 | 进程状态 | MemoryLake |
|---|---|---|
| 实例重启后存活 | 否 | 是 |
| 与轮询负载均衡一起工作 | 否(需要粘性) | 是 |
| 在服务器实例之间共享 | 否 | 是 |
| 版本控制 | 否 | 是(Git 风格历史) |
| 数据所有权 | 您的,但不稳定 | 您拥有它(AES-256,持久) |
| 基准 | — | LoCoMo #1 — 94.03% |
提示与最佳实践
- 将记忆端点视为依赖项,而不是缓存——在请求时读取上下文,以便任何实例保持正确。
- 按租户或工作区划分项目,以便无状态服务器可以在不持有每个用户状态的情况下路由读取。
- 在轮换时重新生成 Bearer 令牌;无状态服务器在不消耗会话的情况下获取新凭证。
- 将持久规则保存在记忆条目中,并在文档驱动器中批量上下文——小规则检索速度快。
故障排除
- 不同实例返回不同上下文: 确认每个实例指向相同的端点 URL 和项目,而不是本地存储。
- 身份验证间歇性失败: 检查 Bearer 令牌是否从共享配置中读取,而不是嵌入到一个实例中。
- “未找到密钥”: 密钥只显示一次。在 MCP 服务器标签中撤销并生成新密钥。
保持服务器无状态,保持记忆
外部化状态一次,您的 MCP 服务器就可以在不放弃长期记忆的情况下水平扩展。