内存网格

@CheMiguel23/MemoryMesh
0 Stars 407 次浏览 CheMiguel23 更新于 2026-08-23

该项目基于MCP服务器仓库中的知识图谱内存服务器,并保留其核心功能。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

MemoryMesh

Release
smithery badge
TypeScript

GitHub Stars

MemoryMesh 是一个为 AI 模型设计的知识图谱服务器,特别关注基于文本的 RPG 和交互式故事讲述。它帮助 AI 在对话中保持一致且结构化的记忆,从而实现更丰富和动态的互动。

该项目基于 MCP 服务器仓库中的 知识图谱记忆服务器,并保留了其核心功能。

重要事项

v0.2.7 版本起,模式的默认位置已更改为 dist/data/schemas
预计未来此位置不会发生变化,但如果您是从以前的版本进行更新,请确保将您的模式文件移动到新位置。

快速链接

概览

MemoryMesh 是一个本地知识图谱服务器,使您能够构建和管理用于 AI 模型的结构化信息。虽然特别适合于基于文本的 RPG 游戏,但其灵活的设计使其在各种应用中都很有用,包括社交网络模拟、组织规划或任何涉及结构化数据的场景。

主要特性

  • 动态基于模式的工具: 使用模式定义数据结构,MemoryMesh 会自动生成用于添加、更新和删除数据的工具。
  • 直观的模式设计: 创建模式以指导 AI 生成和连接节点,使用必填字段、枚举类型和关系定义。
  • 用于 AI 指导的元数据: 使用元数据提供上下文和结构,帮助 AI 理解数据中的含义和关系。
  • 关系处理: 在模式中定义关系,鼓励 AI 在相关数据点(节点)之间创建连接(边)。
  • 信息反馈: 向 AI 提供错误反馈,使其能够从错误中学习并改进与知识图谱的交互。
  • 事件支持: 事件系统跟踪操作,提供关于知识图谱如何被修改的见解。

节点

节点代表知识图谱中的实体或概念。每个节点具有:

...

(此处省略了具体节点属性的描述,因为原文档中没有提供详细信息。如果需要进一步翻译,请提供具体的节点属性描述。)

  • name: 唯一标识符。
  • nodeType: 节点的类型(例如,npcartifactlocation),由你的模式定义。
  • metadata: 一个字符串数组,提供关于节点的描述性细节。
  • weight: (可选)一个介于0和1之间的数值,表示关系的强度,默认为1。

示例节点:

    {
      "name": "Aragorn",
      "nodeType": "player_character",
      "metadata": [
        "Race: Human",
        "Class: Ranger",
        "Skills: Tracking, Swordsmanship",
        "Affiliation: Fellowship of the Ring"
      ]
    }

边代表节点之间的关系。每个边包含:

  • from: 源节点的名称。
  • to: 目标节点的名称。
  • edgeType: 关系的类型(例如,ownslocated_in)。
{
  "from": "Aragorn",
  "to": "Andúril",
  "edgeType": "owns"
}

模式

模式是MemoryMesh的核心。它们定义了数据的结构,并驱动工具的自动生成。

模式文件位置

将你的模式文件(.schema.json)放置在已构建的MemoryMesh项目的dist/data/schemas目录中。MemoryMesh将在启动时自动检测并处理这些文件。

模式结构

文件名: [name].schema.json。例如,对于定义一个npc的模式,文件名应为add_npc.schema.json

  • name - 在内存中的模式和节点类型的标识符。重要: 模式的名称必须add_开头才能被识别。
  • description - 用作add_<name>工具的描述,为AI提供上下文。(deleteupdate工具有通用描述)
  • properties - 每个属性包括其类型、描述和其他约束。
    • property
      • type - 支持的值为stringarray
      • description - 帮助指导AI了解实体的目的。
      • required - 布尔值。如果为true,则AI必须在创建节点时提供此属性。
      • enum - 字符串数组。如果存在,则AI必须选择给定选项之一。
      • relationship - 定义与另一个节点的连接。如果属性是必需的并且有关系,则AI总是会创建该节点及其相应的边。
        • edgeType - 要创建的关系类型。
        • description - 帮助指导AI了解关系的目的。
  • additionalProperties - 布尔值。如果为true,允许AI添加超出所需或可选定义之外的额外属性。
示例模式 (add_npc.schema.json):
{
  "name": "add_npc",
  "description": "Schema for adding an NPC to the memory" ,
  "properties": {
    "name": {
      "type": "string",
      "description": "A unique identifier for the NPC",
      "required": true
    },
    "race": {
      "type": "string",
      "description": "The species or race of the NPC",
      "required": true,
      "enum": [
        "Human",
        "Elf",
        "Dwarf",
        "Orc",
        "Goblin"
      ]
    },
    "currentLocation": {
      "type": "string",
      "description": "The current location of the NPC",
      "required": true,
      "relationship": {
        "edgeType": "located_in",
        "description": "The current location of the NPC"
      }
    }
  },
  "additionalProperties": true
}

基于这个模式,MemoryMesh会自动创建:

  • add_npc: 用于添加新的NPC节点。
  • update_npc: 用于修改现有的NPC节点。
  • delete_npc: 用于删除NPC节点。

MemoryMesh包含了11个预建模式,专为基于文本的RPG游戏设计,提供了游戏开发即用的基础。

SchemaManager 工具

MemoryMesh包括一个SchemaManager工具,简化了模式的创建和编辑过程。它提供了一个可视化界面,使你可以轻松地定义数据结构而无需直接编写JSON。

动态工具

MemoryMesh 通过动态工具简化了与知识图谱的交互。这些工具不是手动编码的,而是直接从您的模式定义自动生成的。这意味着,当您使用模式定义数据结构时,MemoryMesh 会智能地创建一套针对该特定数据结构定制的工具。

可以这样理解: 您提供了一个蓝图(即模式),而 MemoryMesh 会根据这个蓝图自动构建必要的工具来创建、修改和删除元素。

背后的原理是什么?

MemoryMesh 有一个智能系统,能够读取您的模式定义。它分析您定义的结构,包括实体的属性及其关系。基于这一分析,它为每种实体类型自动生成一组工具:

  • add_<entity> 用于创建新的实体实例。
  • update_<entity> 用于修改现有实体。
  • delete_<entity> 用于删除实体。

然后,这些工具通过 MemoryMesh 中的一个中心枢纽提供,确保任何连接的客户端或 AI 都能轻松访问和使用它们。

本质上,MemoryMesh 的动态工具系统提供了一种强大且高效的方式来管理您的知识图谱,让您能够专注于应用程序的内容和逻辑,而不必关心底层的数据操作机制。

记忆文件

默认情况下,数据存储在 dist/data/memory.json 文件中的 JSON 格式。

记忆查看器

记忆查看器是一个单独的工具,旨在帮助您可视化和检查由 MemoryMesh 管理的知识图谱的内容。它提供了一个用户友好的界面,用于探索节点、边及其属性。

主要功能:
  • 图形可视化:以交互式的节点-链接图形式查看知识图谱。
  • 节点检查:选择节点以查看其节点类型、元数据和连接的边。
  • 边缘探索:检查节点之间的关系,包括边类型和方向。
  • 搜索和过滤:快速查找特定节点或按类型过滤它们。
  • 表格视图:允许您轻松找到并检查特定的节点和边,或一次性查看所有内容。
  • 原始 JSON 视图:允许您查看来自内存文件的原始 JSON 数据。
  • 统计面板:提供关于知识图谱的关键指标和信息:总节点数、总边数、节点类型和边类型。
  • 搜索和过滤:允许您按节点类型或边类型进行过滤,并选择是否显示节点、边或同时显示两者。
访问记忆查看器

记忆查看器是一个独立的网络应用程序。记忆查看器讨论

使用记忆查看器
  • 选择内存文件:在内存查看器中,点击“选择内存文件”按钮。
  • 选择文件:导航到您的 MemoryMesh 项目目录并选择 memory.json 文件(默认位于 dist/data/memory.json)。
  • 探索:内存查看器将加载并显示您的知识图谱内容。

内存流

image

提示

为了获得最佳效果,请使用 Claude 的“Projects”功能配合自定义指令。这里有一个您可以开始使用的提示示例:

You are a helpful AI assistant managing a knowledge graph for a text-based RPG. You have access to the following tools: add_npc, update_npc, delete_npc, add_location, update_location, delete_location, and other tools for managing the game world.

When the user provides input, first process it using your available tools to update the knowledge graph. Then, respond in a way that is appropriate for a text-based RPG.

您还可以直接在聊天中指示 AI 执行特定操作。

尝试不同的提示以找到最适合您用例的方式!

示例

  1. 一个带有自定义指令的简单示例
  2. 一个仅为示例目的的例子,附带可视化 (并非功能的一部分)

添加几个城市、一些NPC、城市周围的几个探索地点,并在某处隐藏一两个神器

image

安装

通过 Smithery 安装

要通过 Smithery 自动为 Claude Desktop 安装 MemoryMesh:

npx -y @smithery/cli install memorymesh --client claude

先决条件

  • Node.js: 版本 18 或更高版本。您可以从 nodejs.org 下载。
  • npm: 通常随 Node.js 一起提供。
  • Claude for Desktop: 确保已从 claude.ai/download 安装最新版本。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/CheMiguel23/memorymesh.git
    cd memorymesh
    
  2. 安装依赖:

    npm install
    
  3. 构建项目:

    npm run build
    

    该命令会将 TypeScript 代码编译为 JavaScript 并存放在 dist 目录中,同时也会将示例模式和数据文件复制到该目录。

  4. 验证文件复制(可选):

    • 构建过程应自动将 data 文件夹复制到 dist
    • 检查 dist/data 是否存在并包含 .json 文件。同时验证 dist/data/schemas 是否存在并包含 .schema.json 文件。
  5. 配置 Claude Desktop:

    打开您的 Claude Desktop 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • mcpServers 部分添加一个 memorymesh 的条目。您可以选择以下配置选项中的 一个
    "mcpServers": {
      "memorymesh": {
        "command": "node", 
        "args": ["/ABSOLUTE/PATH/TO/YOUR/PROJECT/memorymesh/dist/index.js"]
      }
    }
    
    • /ABSOLUTE/PATH/TO/YOUR/PROJECT/ 替换为您 memorymesh 项目目录的 实际绝对路径
    • 示例(macOS):
      "command": "node",
      "args": ["/Users/yourusername/Projects/memorymesh/dist/index.js"]
      
    • 示例(Windows):
      "command": "node",
      "args": ["C:\\Projects\\memorymesh\\dist\\index.js"]
      
  6. 重启 Claude Desktop: 完全重启 Claude Desktop 以使更改生效。

验证安装

  1. 启动 Claude Desktop。
  2. 打开一个新的聊天。
  3. 查看右上角是否有 MCP 插件图标 。如果存在,则您的配置可能是正确的。
  4. 点击 图标。您应该能在已连接服务器列表中看到 "memorymesh"。
  5. 点击 图标。如果您能看到工具列表(例如 add_npcupdate_npc 等),则说明您的服务器工作正常,并且正确暴露了工具。

更新

在更新之前,请确保备份 dist/data 目录以避免丢失内存数据。

故障排除

  • 服务器未在 Claude 中显示:

    • 仔细检查 claude_desktop_config.json 中的路径。确保它们是绝对路径且正确无误。
    • 确认 dist 目录存在,并包含已编译的 JavaScript 文件,包括 index.js
    • 检查 Claude Desktop 的日志以查找错误:
      • macOS: ~/Library/Logs/Claude/mcp-server-memorymesh.log(以及 mcp.log
      • Windows: (可能位于 %AppData%\Claude 下的 Logs 文件夹中)
  • 工具未显示:

    • 确保你的 npm run build 命令没有报错并成功完成。
    • 确认你的 schema 文件正确放置在 dist/data/schemas 目录下,并遵循正确的命名约定(例如 add_[entity].schema.json)。
    • 检查服务器控制台输出或日志中是否有初始化期间出现的任何错误。

高级配置

MemoryMesh 提供了多种方式来自定义其行为,超越基本设置:

变量

你可以在 /config/config.ts 中覆盖默认设置

  • MEMORY_FILE: 指定用于存储知识图谱数据的 JSON 文件路径。(默认值:dist/data/memory.json
  • SCHEMAS_DIR: schema 文件目录的路径。(默认值:dist/data/schemas/memory.json

限制

  1. 节点删除: AI 可能会犹豫是否从知识图谱中删除节点。如果需要,可以通过提示来鼓励它进行删除。

贡献

欢迎贡献、反馈和想法!
这个项目是一个个人探索,旨在将结构化数据与 AI 推理能力相结合。欢迎贡献、反馈和想法来进一步推动该项目或启发新项目。

相关 MCP 服务