赋予您的AI一种在对话之间持久的记忆。 再也不会丢失重要的上下文信息。
MCP Memory 是一个强大的、基于Elasticsearch的知识图谱系统,它为AI模型提供了超出其上下文窗口限制的持久记忆。构建于模型上下文协议(MCP)之上,确保您的大型语言模型(LLMs)永远记住重要信息,从而创建更加连贯、个性化且有效的AI对话。
<p align="center"> <img src="https://via.placeholder.com/800x400?text=MCP+Memory+Visualization" alt="MCP Memory Visualization" width="600"> </p>您是否曾遇到过这些与AI助手相关的困扰?
MCP Memory通过创建一个结构化、可搜索的记忆存储来解决这些问题,该存储可以无限期地保存上下文。现在,您的AI可以建立有意义的长期用户关系,并在数天、数周甚至数月的交互中保持连贯性。
开始使用非常简单:
# 1. 克隆仓库
git clone https://github.com/mcp-servers/mcp-servers.git
cd mcp-servers/memory
# 2. 安装依赖
npm install
# 3. 启动Elasticsearch(使用Docker)
npm run es:start
# 注意:如果您希望使用自己的Elasticsearch安装,
# 设置ES_NODE环境变量指向您的Elasticsearch实例
# 4. 构建项目
npm run build
MCP Memory设计为与Claude Desktop无缝工作,为所有对话提供持久记忆:
复制并配置启动脚本:
仓库包含一个launch.example文件,您可以简单复制:
# 复制示例启动文件
cp launch.example launch.sh
# 编辑launch.sh以添加您的Groq API密钥
# 这是智能记忆检索所需的
nano launch.sh # 或使用您喜欢的编辑器
将脚本设为可执行:
chmod +x launch.sh
在Claude Desktop中添加命令:
验证连接:
完整的示例和视觉指南,请参阅在线的Claude Desktop MCP Server Setup Guide。
MCP Memory创建了一个结构化的知识图谱,其中:
当集成到LLM中时,系统会自动:
对话1:初始信息
用户:我女儿的名字叫Emma,她下个月就8岁了。
Claude:太棒了!Emma下个月就8岁了。你们有什么特别的计划吗?
(幕后操作:Claude将“Emma”作为类型为“人”的实体存储,并记录她的年龄和生日时间)
对话2:几天或几周后
用户:我在想送什么礼物。
Claude:如果你正在寻找Emma8岁生日的礼物想法,你考虑过她的当前兴趣是什么吗?那个年龄段的孩子通常喜欢创意物品、书籍或教育游戏。
(幕后操作:Claude检索了实体“Emma”,她的年龄以及生日即将到来的事实)
对话3:生日之后
用户:周六的派对进行得很顺利!
Claude:很高兴Emma的8岁生日派对周六成功举行!她收到的礼物喜欢吗?
(幕后操作:Claude更新了关于Emma的观察,记录了她的生日派对在周六举行并且很成功)
当用户提到一些重要的信息时,代理:
当用户提到与存储信息相关的内容时,代理:
这一切都是自动发生的——用户只需与助手进行正常的对话,而记忆系统则在后台工作,以维护跨会话的上下文。
MCP Memory包括智能处理实体创建和更新:
MCP Memory包括一个全面的管理CLI,用于维护您的知识图谱:
# 搜索记忆
node dist/admin-cli.js search "Emma 生日"
# 查看特定实体的详细信息
node dist/admin-cli.js entity "Emma"
# 备份整个记忆系统
node dist/admin-cli.js backup memory-backup.json
将知识组织到不同的领域:
# 创建一个项目特定的记忆区域
node dist/admin-cli.js zones add client-acme "ACME Corp项目知识"
# 将数据导入该区域
node dist/admin-cli.js import acme-data.json client-acme
您还可以通过自然对话指示助手将记忆组织到不同的区域:
创建和使用记忆区域
用户:Claude,你能创建一个名为“work-project”的新记忆区域来存储有关我当前工作的项目信息吗?
Claude:我已经创建了一个名为“work-project”的新记忆区域。我会在这个区域存储与您的工作项目相关的信息。你想让我记住关于这个项目的什么信息?
用户:项目的截止日期是3月15日,我们正在建设一个新的库存管理系统。
Claude:我已经将关于您的工作项目的3月15日截止日期和您正在建设的库存管理系统的信息存储在“work-project”区域。我会将未来与此项目相关的信息组织在这个区域。
(幕后操作:Claude创建了一个新的记忆区域,并将项目信息专门存储在该区域)
检索特定区域的信息
用户:你记得我的工作项目吗?
Claude:根据我们讨论过的关于您的工作项目,我记得您正在建设一个库存管理系统,截止日期是3月15日。
(幕后操作:Claude专门搜索“work-project”区域的相关信息)
切换记忆区域
用户:Claude,我们现在切换到我的“烹饪”记忆区域。我想讨论一个食谱。
Claude:我已经切换到了您的“烹饪”记忆区域。今天你想讨论哪个食谱?
(幕后操作:Claude更新其记忆上下文,优先搜索“烹饪”区域)
用户:上个月告诉你的那道意大利面是什么?
Claude:根据我们在“烹饪”区域之前的对话,你分享了一种使用培根、鸡蛋、佩科里诺奶酪和黑胡椒的卡邦纳拉食谱。你提到这是你在罗马旅行时学到的家庭最爱。
(幕后操作:Claude专门在“烹饪”区域搜索此信息)
通过将记忆组织到不同的区域,对话变得更加相关和专注于当前的主题或项目。
利用Elasticsearch的强大搜索功能:
# 模糊搜索(即使有拼写错误也能找到“会议”)
node dist/admin-cli.js search "会议笔记"
# 区域特定搜索
node dist/admin-cli.js search "预算" client-acme
欢迎贡献!详情请参阅CONTRIBUTING.md。
MIT