本项目实现了一个用于LLM对话的记忆系统,使用Redis Graph进行长期记忆存储。
docker-compose up -d
docker exec -it mcp-memory-redis-1 redis-cli
进入Redis CLI后,可以检查RedisGraph模块是否已加载:
127.0.0.1:6379> MODULE LIST
你应该能在已加载的模块列表中看到RedisGraph。
应用程序通过src/index.ts中的配置连接到Redis。默认情况下,它连接到:
如果需要更改这些设置,请更新src/index.ts中的Redis客户端配置。
npm install
npm start
应用程序提供了几种管理记忆的工具:
create_memory: 创建新的记忆retrieve_memory: 根据ID检索记忆search_memories: 根据类型或关键词搜索记忆update_memory: 更新现有记忆delete_memory: 删除记忆create_relation: 在记忆之间创建关系get_related_memories: 获取与特定记忆相关的记忆// 创建一个记忆
const memory = await memoryService.createMemory({
type: MemoryNodeType.CONVERSATION,
content: '这是一个关于Redis Graph的对话',
title: 'Redis Graph讨论',
});
// 搜索记忆
const memories = await memoryService.searchMemories(
{ keyword: 'Redis' },
{ limit: 10, orderBy: 'created', direction: 'DESC' },
);
MCP Memory是一个提供工具来存储和检索与LLM对话相关记忆的服务器。它使用Redis Graph作为后端,创建记忆的知识图谱,允许不同信息片段之间的复杂关系。
系统支持多种记忆类型以处理不同的场景:
存储有关项目、配置和系统的相关信息:
create_memory(
type: "项目",
名称: "禁用fiat供应商脚本",
描述: "禁用系统中fiat供应商的脚本",
内容: "该脚本位于/scripts/disable-vendor.js,并接受供应商ID作为参数"
)
记录错误和事件:
create_memory(
type: "问题",
标题: "支付处理超时",
严重程度: "高",
状态: "开放",
内容: "当处理超过$10,000的大额交易时,支付会超时"
)
存储财务建议:
create_memory(
type: "财务",
分类: "投资",
内容: "建议将60%分配给指数基金,30%分配给债券,10%分配给投机性投资",
元数据: {
风险概况: "中等",
时间范围: "长期"
}
)
保存待办任务:
create_memory(
type: "待办事项",
标题: "更新支付网络文档",
优先级: "中等",
完成: false,
内容: "更新文档以包括新的支付网络:Visa Direct和MasterCard Send"
)
可以在记忆之间创建关系以构建知识图谱:
create_relation(
fromId: "问题-123",
toId: "项目-456",
类型: "属于"
)
根据各种标准搜索记忆:
search_memories(
类型: "项目",
关键词: "支付",
限制: 10
)
系统使用Redis Graph将记忆存储为图数据库中的节点。每个记忆都是具有属性的节点,而记忆之间的关系则是图中的边。
MCP服务器提供了与记忆图交互的工具,使LLM能够按需存储和检索信息。
ISC
我们提供了一个辅助脚本,它连接到Redis并显示常用的RedisGraph命令:
npm run redis:cli
这将打开一个Redis CLI会话,并列出一些有用的命令,用于操作记忆图。
要检查当前的记忆图状态,运行:
npm run check:graph
这将显示图中的所有节点、财务记忆和关系。
对于更详细的图模式和内容检查:
npm run inspect:graph
这里是一些在redis-cli中运行的有用命令:
列出所有图:
GRAPH.LIST
统计所有节点:
GRAPH.QUERY memory "MATCH (n) RETURN count(n)"
查看财务记忆:
GRAPH.QUERY memory "MATCH (n:Finance) RETURN n.id, n.title, n.content"
搜索特定内容:
GRAPH.QUERY memory "MATCH (n) WHERE n.content CONTAINS '借记卡' RETURN n.id, n.type, n.content"
查看关系:
GRAPH.QUERY memory "MATCH (a)-[r]->(b) RETURN a.id, type(r), b.id"
要在Docker中运行MCP Memory服务器:
# 构建Docker镜像
docker build -t mcp/memory .
# 在与Redis相同的网络上运行容器
docker run --rm -i --network=mcp-memory_default -e REDIS_URL=redis://redis:6379 mcp/memory
我们提供了几个测试脚本:
# 测试Redis连接
npm run test:redis
# 测试记忆操作
npm run test:memory
# 测试记忆服务
npm run test:service