MemoryLake
返回全部文章
Tutorial2026 年 6 月 5 日7 分钟阅读

如何将长期记忆构建到您编写的自定义 MCP 服务器中?

当您编写自己的 MCP 服务器时,您拥有工具架构的每一行代码、每个处理程序和每个响应——但您也继承了一个棘手的问题:记忆存储在哪里?一个典型的自定义服务器从设计上是无状态的,一次处理一个请求,无法意识到五次调用前或三位用户之前发生了什么。这在您的代理需要回忆用户偏好、项目约束或上周二开始的对话线程时会出现问题。本指南将引导您在不添加数据库或从头重新实现检索的情况下,将持久的跨会话记忆添加到自定义 MCP 服务器中。

简短答案

将外部记忆层附加到您的自定义 MCP 服务器,而不是将状态存储在进程内部。创建一个 MemoryLake 项目,生成一个 MCP 服务器端点,并通过在处理程序中调用带有 Secret 的 Bearer 令牌的端点 URL 来读取或写入上下文——记忆在每个会话中持久存在,您服务器的任何实例都可以访问相同的存储。

为什么自定义 MCP 服务器中的进程内记忆不够用

将记忆添加到您编写的服务器的最快方法是使用模块级字典或与代码捆绑在一起的简单 SQLite 文件。这在开发中有效,但在第一个边缘案例中模型会崩溃:重启进程时字典会清空;部署两个实例时它们会分歧;将项目交给团队成员时,他们将从没有历史记录的空白状态开始。

更深层次的问题是,进程内存储混淆了两个职责。服务器是请求处理程序——它的工作是解释工具调用并返回结果。当它还拥有状态持久性时,您最终需要在应专注于工具逻辑的代码中管理架构迁移、备份计划和导出管道。

外部化记忆可以清晰地分离这些关注点。您的处理程序保持精简:调用记忆层,结合返回的上下文,执行工具逻辑,选择性地写回新事实。记忆层处理持久性、版本控制、检索和访问控制。您可以在重启和实例之间获得持久的历史,而无需向服务器的代码库添加基础设施。

开始之前

您需要:

  • 一个免费的 MemoryLake 账户
  • 一个您编写并可以修改的自定义 MCP 服务器代码库
  • 您希望持久化的上下文——用户偏好、项目规则或参考文件(PDF、Word、Excel、PowerPoint、Markdown 或图像)

如何将长期记忆添加到自定义 MCP 服务器(逐步)

第 1 步:构建记忆项目

登录 MemoryLake 并打开 项目管理。点击 创建项目,并为其命名,以映射到您服务器的域——例如,“自定义服务器记忆”或每个租户的标签。打开 文档驱动器,使用 上传 推送任何您的服务器处理程序应该能够读取的参考文件。然后打开 文档标签 → 添加文档 → 确认 将它们附加到项目。对于规则、约束或用户事实,打开 记忆标签 → 添加记忆,输入条目,然后点击 保存

第 1 步:构建记忆项目
第 1 步:构建记忆项目

第 2 步:生成 MCP 服务器端点

导航到 MCP 服务器标签 → 添加 MCP 服务器。给它一个描述性的标签——例如,“自定义 MCP 后端”——然后点击 生成。MemoryLake 返回三个值:Key IDSecretEndpoint URL。立即复制 Secret;它只显示一次,关闭面板后无法检索。

第 2 步:生成 MCP 服务器端点
第 2 步:生成 MCP 服务器端点

第 3 步:通过 MCP 将您的服务器连接到 MemoryLake

在您自定义服务器的 MCP 配置中,粘贴 Endpoint URL 并将 Secret 设置为 Bearer 令牌。您的处理程序现在可以在工具调用开始时调用端点以读取上下文,或在结束时写入新事实。由于身份验证是按请求进行的,您服务器的每个实例都可以访问相同的项目,记忆在运行多少个副本时都能一致地累积。请参阅 MCP 设置指南 以获取完整的配置参考。[免费试用 MemoryLake]

第 3 步:通过 MCP 将您的服务器连接到 MemoryLake
第 3 步:通过 MCP 将您的服务器连接到 MemoryLake

自定义服务器内置存储与 MemoryLake

维度进程内/捆绑存储MemoryLake
跨会话持久否(重启时清除)
在其他 AI 中工作是——ChatGPT、Claude、Gemini、任何 MCP 工具
容量受本地磁盘/记忆限制无限项目和文档
版本控制是(Git 风格历史)
数据所有权不稳定,无导出保证您拥有它(AES-256,随时导出/删除)
基准LoCoMo #1 — 94.03%

提示与最佳实践

  • 每个逻辑租户或工作区范围内一个项目,以便您的服务器可以通过在请求中传递项目标识符来路由读取,保持不同用户的记忆隔离。
  • 在记忆条目中存储结构化规则和事实,并在文档驱动器中存储较大的参考文档——短条目在工具处理程序的往返中检索更快。
  • 在处理程序开始时读取上下文,在结束时写入更新的事实;这使每次调用自包含,并允许任何实例处理任何请求而无需本地状态。
  • 定期轮换 Bearer 令牌,通过撤销旧密钥并在 MCP 服务器标签中生成新密钥来实现——在您的部署配置中更新并重新部署,无需排空会话。

故障排除

  • 处理程序返回过时或缺失的上下文: 验证您的服务器配置中的 Endpoint URL 指向正确的项目,并且没有被之前构建的本地环境变量覆盖。
  • 身份验证被拒绝,错误代码 401: Bearer 令牌必须与复制的 Secret 值完全相同,而不是 Key ID。仔细检查在您的 MCP 配置中设置的值。
  • 启动时出现“未找到 Secret”错误: Secret 只显示一次。打开 MCP 服务器标签,撤销现有密钥,然后点击生成以生成新的 Key ID、Secret 和 Endpoint URL。

给您的自定义服务器一个它能保持的记忆

您的服务器处理工具逻辑;MemoryLake 处理所有需要持续超过单个请求的内容。

常见问题

如何将长期记忆添加到自定义 MCP 服务器?

附加一个外部记忆层。创建一个 MemoryLake 项目,生成一个 MCP 服务器端点,并在处理程序中调用带有 Secret 的 Bearer 令牌的 Endpoint URL。记忆在重启时持久存在,并且被您服务器的每个实例共享。

将记忆添加到自定义 MCP 服务器是否需要单独的数据库?

不需要。MemoryLake 充当记忆层,因此您无需配置或维护数据库。您的处理程序通过单个经过身份验证的端点读取和写入上下文,而无需管理架构或迁移。

多个自定义 MCP 服务器可以使用相同的记忆项目吗?

可以。多个服务器可以指向相同的 Endpoint URL 和项目。由于身份验证是通过 Bearer 令牌按请求进行的,任何服务器实例都可以读取相同的持久上下文,这对于多个服务器共享知识库的微服务架构非常有用。

我可以在自定义 MCP 服务器的记忆中存储哪些类型的内容?

您可以将结构化事实和规则存储为记忆条目,并将文件——PDF、Word、Excel、PowerPoint、Markdown 或图像——上传到项目中的文档驱动器。两者都可以通过相同的端点检索。

当我的自定义 MCP 服务器读取记忆数据时,数据安全吗?

MemoryLake 使用 AES-256 加密,并持有 ISO 27001、SOC 2 Type II、GDPR 和 CCPA 认证。您拥有自己的数据,并可以随时导出或永久删除。

MemoryLake 与将记忆存储在 MCP 服务器进程内部有什么不同?

进程内存储在重启时会消失,并在多个实例之间分歧。MemoryLake 是一个持久的外部层——记忆在重启时存活,跨副本扩展,并与任何 MCP 兼容的 AI 工具一起使用,而不仅仅是您的自定义服务器。