关于 MCP Memory with Redis Graph
这是一个将 LLM 对话记忆存入 Redis Graph 知识图谱的 MCP 服务,支持多种记忆类型、搜索以及记忆间的关联。
主要功能
- 01存储多种类型的记忆
- 02按类型或关键词搜索记忆
- 03创建和查询记忆关联
- 04更新和删除记忆
适用场景
- 01保留长期对话上下文
- 02记录项目详情和问题
- 03关联相关任务与记忆
MCP 相关
该 MCP 服务提供工具,用于存储、检索、搜索、更新和删除记忆图谱条目,也可创建和查询记忆间的关联。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
使用 Redis Graph 的 MCP Memory
此项目使用 Redis Graph 实现 LLM 对话记忆系统,以存储长期记忆。
设置
先决条件
- Docker 和 Docker Compose
- Node.js(v16 或更高版本)
运行带有 RedisGraph 的 Redis
- 启动包含 RedisGraph 模块的 Redis 容器:
docker-compose up -d
- 验证 Redis 是否已加载 RedisGraph 模块:
docker exec -it mcp-memory-redis-1 redis-cli
进入 Redis CLI 后,可以检查 RedisGraph 模块是否已加载:
127.0.0.1:6379> MODULE LIST
你应该能在已加载模块列表中看到 RedisGraph。
从应用程序连接到 Redis
应用程序使用 src/index.ts 中的配置连接到 Redis。默认连接到:
- 主机:localhost
- 端口:6379
如需更改这些设置,请更新 src/index.ts 中的 Redis 客户端配置。
用法
- 安装依赖:
npm install
- 启动应用程序:
npm start
记忆工具
应用程序提供多种用于管理记忆的工具:
create_memory:创建新记忆retrieve_memory:根据 ID 检索记忆search_memories:按类型或关键词搜索记忆update_memory:更新现有记忆delete_memory:删除记忆create_relation:创建记忆之间的关系get_related_memories:获取与特定记忆相关的记忆
用法示例
// Create a memory
const memory = await memoryService.createMemory({
type: MemoryNodeType.CONVERSATION,
content: 'This is a conversation about Redis Graph',
title: 'Redis Graph Discussion',
});
// Search for memories
const memories = await memoryService.searchMemories(
{ keyword: 'Redis' },
{ limit: 10, orderBy: 'created', direction: 'DESC' },
);
概述
MCP Memory 是一个 MCP 服务,提供用于存储和检索与 LLM 对话相关记忆的工具。它使用 Redis Graph 作为后端,创建记忆知识图谱,从而支持不同信息片段之间的复杂关系。
功能
- 存储不同类型的记忆(对话、项目、任务、问题、配置、财务、待办事项)
- 创建记忆之间的关系
- 根据各种条件搜索和检索记忆
- 更新和删除记忆
记忆类型
系统支持多种记忆类型,以处理不同场景:
- Conversation:常规对话记忆
- Topic:讨论过的具体主题
- Project:项目详情(例如,法币供应商停用脚本)
- Task:待完成的具体任务
- Issue:错误或事故
- Config:配置详情(例如,产品费用设置)
- Finance:财务建议或信息
- Todo:待办事项
用法示例
1. 项目详情
存储有关项目、配置和系统的信息:
create_memory(
type: "Project",
name: "Fiat Vendor Disable Script",
description: "Script to disable fiat vendors in the system",
content: "The script is located at /scripts/disable-vendor.js and takes vendor ID as parameter"
)
2. 问题处理
记录错误和事故:
create_memory(
type: "Issue",
title: "Payment Processing Timeout",
severity: "high",
status: "open",
content: "Payments are timing out when processing large transactions over $10,000"
)
3. 个人财务建议
存储财务建议:
create_memory(
type: "Finance",
category: "Investment",
content: "Recommendation to allocate 60% to index funds, 30% to bonds, and 10% to speculative investments",
metadata: {
riskProfile: "moderate",
timeHorizon: "long-term"
}
)
4. 工作相关待办事项
保存待完成的任务:
create_memory(
type: "Todo",
title: "Update payment network documentation",
priority: "medium",
completed: false,
content: "Update the documentation to include the new payment networks: Visa Direct and MasterCard Send"
)
记忆之间的关系
你可以创建记忆之间的关系来构建知识图谱:
create_relation(
fromId: "issue-123",
toId: "project-456",
type: "PART_OF"
)
搜索记忆
根据各种条件搜索记忆:
search_memories(
type: "Project",
keyword: "payment",
limit: 10
)
架构
系统使用 Redis Graph 将记忆存储为图数据库中的节点。每条记忆都是一个带有属性的节点,而记忆之间的关系则是图中的边。
MCP 服务提供用于与记忆图谱交互的工具,让 LLM 能够按需存储和检索信息。
许可证
ISC
使用 Redis Graph
使用 Redis CLI 辅助脚本
我们提供了一个辅助脚本,用于连接 Redis 并显示常用的 RedisGraph 命令:
npm run redis:cli
这将打开一个 Redis CLI 会话,其中列出了用于操作记忆图谱的实用命令。
检查图谱
要检查记忆图谱的当前状态,请运行:
npm run check:graph
这将显示图谱中的所有节点、Finance 记忆和关系。
检视图谱
要更详细地检查图谱的架构和内容:
npm run inspect:graph
常用 RedisGraph 命令
以下是可在 redis-cli 中运行的一些实用命令:
-
列出所有图谱:
GRAPH.LIST -
统计所有节点:
GRAPH.QUERY memory "MATCH (n) RETURN count(n)" -
查看 Finance 记忆:
GRAPH.QUERY memory "MATCH (n:Finance) RETURN n.id, n.title, n.content" -
搜索特定内容:
GRAPH.QUERY memory "MATCH (n) WHERE n.content CONTAINS 'debit card' RETURN n.id, n.type, n.content" -
查看关系:
GRAPH.QUERY memory "MATCH (a)-[r]->(b) RETURN a.id, type(r), b.id"
在 Docker 中运行
要在 Docker 中运行 MCP Memory 服务:
# Build the Docker image
docker build -t mcp/memory .
# Run the container on the same network as Redis
docker run --rm -i --network=mcp-memory_default -e REDIS_URL=redis://redis:6379 mcp/memory
测试
我们提供了多个测试脚本:
# Test Redis connection
npm run test:redis
# Test memory operations
npm run test:memory
# Test memory service
npm run test:service
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。