使用说明
记忆图谱 MCP 服务器是一个强大的后端服务,旨在为大型语言模型(LLM)客户端提供持久化的记忆能力。它通过构建和管理一个本地知识图谱来存储、连接和检索信息,帮助LLM在不同会话中维持上下文和信息。
项目简介
本项目实现了一个符合 Model Context Protocol (MCP) 标准的服务器,将一个本地知识图谱引擎暴露给兼容MCP的LLM客户端(如 Claude)。LLM 可以通过 MCP 协议调用服务器提供的工具(Tools)来操作记忆图谱,并通过读取资源(Resources)获取图谱的概览信息。
主要功能点
- 领域管理: 支持创建和切换不同的记忆领域,实现上下文隔离。
- 记忆存储: 以节点形式存储文本内容,可附带路径、标签和元数据。
- 关系追踪: 建立记忆节点之间的关联关系(边),形成知识图谱结构。
- 记忆检索: 提供多种检索策略,包括按时间、按路径、按标签、按关系以及内容搜索。
- 内容搜索: 支持高级搜索功能,如模糊匹配和正则表达式(SQLite 后端)。
- 记忆编辑与遗忘: 允许修改现有记忆的内容或关系,以及删除记忆。
- 图谱可视化: 生成 Mermaid 格式的图谱代码,用于可视化记忆之间的关系。
- 跨领域引用: 支持记忆节点引用其他领域的记忆。
- 持久化存储: 支持 JSON 文件或 SQLite 数据库作为存储后端。
- 会话持久化: 自动保存并恢复服务器的当前状态(如当前领域)。
安装步骤
本项目需要 Node.js 环境。
- 克隆仓库: 获取项目代码。
- 安装依赖: 在项目根目录下运行 npm install 命令安装所需依赖。
- 构建项目: 运行 npm run build 命令编译 TypeScript 代码。
或者,您也可以使用 Docker 镜像进行部署,无需安装 Node.js:
- 拉取镜像: 使用 'docker pull ghcr.io/[owner]/memory-graph:latest' 命令拉取最新镜像(将 '[owner]' 替换为实际的 GitHub 用户名或组织)。
服务器配置 (适用于 MCP 客户端)
MCP 客户端需要知道如何启动和连接到这个服务器。通常通过一个 JSON 配置文件来完成。您需要在 MCP 客户端的配置中添加一个服务器条目,指定如何启动 Memory Graph MCP 服务器。
以下是一个示例配置结构及其关键参数说明:
- 'mcpServers': 这是一个对象,包含一个或多个 MCP 服务器的配置。
- 'memory-graph': 这是您为此服务器指定的名称,可以在 MCP 客户端中使用。
- 'command': 启动服务器的可执行文件或命令。
- 本地安装时,通常是 'node'。
- 使用 Docker 时,这是 'docker' 命令。
- 'args': 一个字符串数组,包含传递给 'command' 的参数。
- 本地安装时,通常是服务器构建后的入口文件路径,例如 '/path/to/memory-graph/build/index.js'。
- 使用 Docker 时,包含 'run', 'rm', '-i', '-v' (挂载数据目录), '-e' (设置环境变量), 镜像名称等参数。
- 'env': 一个对象,用于设置传递给服务器进程的环境变量。
- 'MEMORY_DIR': 指定记忆数据存储的目录路径。服务器将在此目录创建或查找数据文件/数据库。
- 'STORAGE_TYPE': 指定使用的存储后端,可以是 'json' 或 'sqlite'。默认为 'json'。
- 'STRICT_MODE': 设置为 'true' 时,服务器的非关键日志会输出到标准错误(stderr),避免干扰 MCP 标准输出(stdout)。
- 其他配置项如 'LOAD_ALL_FILES', 'DEFAULT_PATH' 等,可根据需要设置。
- 'disabled': 设置为 'true' 可以临时禁用此服务器。
- 'autoApprove': 一个字符串数组,列出可以自动批准调用而无需用户确认的工具名称。
- 'command': 启动服务器的可执行文件或命令。
例如,本地安装后的 MCP 配置概念:
{ "mcpServers": { "memory-graph": { // 启动服务器的命令,例如 node "command": "node", // 传递给命令的参数,例如服务器脚本路径 "args": [ "/path/to/your/memory-graph/build/index.js" ], // 服务器运行所需的环境变量 "env": { // 记忆数据将存储在此目录 "MEMORY_DIR": "/path/to/your/memory/storage", // 使用 SQLite 数据库存储 "STORAGE_TYPE": "sqlite", // 启用严格模式,日志到 stderr "STRICT_MODE": "true" // ... 其他可选环境变量 }, // 是否禁用此服务器 (默认为 false) "disabled": false, // 可以自动批准调用的工具列表 "autoApprove": [] } // ... 其他 MCP 服务器配置 } }
基本使用方法 (LLM 客户端视角)
一旦 Memory Graph MCP 服务器通过 MCP 客户端启动并连接成功,兼容的 LLM 就可以通过 MCP 协议与之交互,主要方式是调用工具和读取资源。
- 调用工具 (Tools): LLM 可以使用 'CallTool' 请求来执行服务器提供的功能。
- 例如,调用 'store_memory' 工具并提供 'content' 参数来保存一条记忆。
- 调用 'recall_memories' 工具并提供 'maxNodes' 和 'strategy' 参数来检索记忆。
- 调用 'list_domains' 来查看所有可用领域。
- 调用 'select_domain' 并提供领域 ID 来切换工作领域。
- 调用 'generate_mermaid_graph' 并提供 'startNodeId' 来生成图谱的可视化代码。
- 读取资源 (Resources): LLM 可以使用 'ReadResource' 请求来获取服务器提供的特定信息。
- 例如,读取 URI 为 'memory://domains/statistics' 的资源来获取所有领域的统计信息。
- 读取 URI 为 'memory://tags/popular' 的资源来获取常用标签列表。
具体的工具参数和资源 URI 请参考 MCP 客户端或相关文档中对 Memory Graph 服务器能力的描述。
信息
分类
数据库与文件