返回市场
MCP-内存

MCP-内存

作者:samwang07236 星标更新:2025-03-06

项目介绍

使用Redis Graph的MCP内存

本项目实现了一个用于LLM对话的记忆系统,使用Redis Graph进行长期记忆存储。

配置

先决条件

  • Docker 和 Docker Compose
  • Node.js(v16或更高版本)

运行带有RedisGraph的Redis

  1. 启动带有RedisGraph模块的Redis容器:
docker-compose up -d
  1. 验证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客户端配置。

使用方法

  1. 安装依赖:
npm install
  1. 启动应用:
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作为后端,创建记忆的知识图谱,允许不同信息片段之间的复杂关系。

特性

  • 存储不同类型的记忆(对话、项目、任务、问题、配置、财务、待办事项)
  • 在记忆之间创建关系
  • 根据各种标准搜索和检索记忆
  • 更新和删除记忆

记忆类型

系统支持多种记忆类型以处理不同的场景:

  • 对话:一般对话记忆
  • 主题:具体讨论的主题
  • 项目:项目详情(例如,禁用fiat供应商脚本)
  • 任务:具体的待办任务
  • 问题:错误或事件
  • 配置:配置详情(例如,产品费用设置)
  • 财务:财务建议或信息
  • 待办事项:待办事项

使用示例

1. 项目详情

存储有关项目、配置和系统的相关信息:

create_memory(
  type: "项目",
  名称: "禁用fiat供应商脚本",
  描述: "禁用系统中fiat供应商的脚本",
  内容: "该脚本位于/scripts/disable-vendor.js,并接受供应商ID作为参数"
)

2. 问题处理

记录错误和事件:

create_memory(
  type: "问题",
  标题: "支付处理超时",
  严重程度: "高",
  状态: "开放",
  内容: "当处理超过$10,000的大额交易时,支付会超时"
)

3. 个人财务建议

存储财务建议:

create_memory(
  type: "财务",
  分类: "投资",
  内容: "建议将60%分配给指数基金,30%分配给债券,10%分配给投机性投资",
  元数据: {
    风险概况: "中等",
    时间范围: "长期"
  }
)

4. 工作相关的待办事项

保存待办任务:

create_memory(
  type: "待办事项",
  标题: "更新支付网络文档",
  优先级: "中等",
  完成: false,
  内容: "更新文档以包括新的支付网络:Visa Direct和MasterCard Send"
)

记忆之间的关系

可以在记忆之间创建关系以构建知识图谱:

create_relation(
  fromId: "问题-123",
  toId: "项目-456",
  类型: "属于"
)

搜索记忆

根据各种标准搜索记忆:

search_memories(
  类型: "项目",
  关键词: "支付",
  限制: 10
)

架构

系统使用Redis Graph将记忆存储为图数据库中的节点。每个记忆都是具有属性的节点,而记忆之间的关系则是图中的边。

MCP服务器提供了与记忆图交互的工具,使LLM能够按需存储和检索信息。

许可证

ISC

使用Redis Graph

使用Redis CLI助手

我们提供了一个辅助脚本,它连接到Redis并显示常用的RedisGraph命令:

npm run redis:cli

这将打开一个Redis CLI会话,并列出一些有用的命令,用于操作记忆图。

检查图

要检查当前的记忆图状态,运行:

npm run check:graph

这将显示图中的所有节点、财务记忆和关系。

检查图

对于更详细的图模式和内容检查:

npm run inspect:graph

常用RedisGraph命令

这里是一些在redis-cli中运行的有用命令:

  1. 列出所有图:

    GRAPH.LIST
    
  2. 统计所有节点:

    GRAPH.QUERY memory "MATCH (n) RETURN count(n)"
    
  3. 查看财务记忆:

    GRAPH.QUERY memory "MATCH (n:Finance) RETURN n.id, n.title, n.content"
    
  4. 搜索特定内容:

    GRAPH.QUERY memory "MATCH (n) WHERE n.content CONTAINS '借记卡' RETURN n.id, n.type, n.content"
    
  5. 查看关系:

    GRAPH.QUERY memory "MATCH (a)-[r]->(b) RETURN a.id, type(r), b.id"
    

在Docker中运行

要在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