MemoryMesh

local-only server

The server can only run on the client’s local machine because it depends on local resources.

メモリメッシュ

MemoryMeshは、テキストベースのRPGやインタラクティブなストーリーテリングに特化したAIモデル向けに設計されたナレッジグラフサーバーです。AIが会話全体を通して一貫性のある構造化された記憶を維持し、より豊かでダイナミックなインタラクションを実現できるよう支援します。

このプロジェクトは、MCP サーバー リポジトリのKnowledge Graph Memory Serverをベースとしており、そのコア機能が保持されています。

重要

v0.2.7以降、スキーマのデフォルトの場所はdist/data/schemasに変更されました。この場所は将来変更される予定はありませんが、以前のバージョンからアップデートする場合は、スキーマファイルを新しい場所に移動してください。

クイックリンク

概要

MemoryMeshは、AIモデル向けの構造化情報の構築と管理を可能にするローカルナレッジグラフサーバーです。テキストベースのRPGに特に適していますが、その柔軟な設計により、ソーシャルネットワークシミュレーション、組織計画、構造化データを扱うあらゆるシナリオなど、様々なアプリケーションに活用できます。

主な特徴

  • **動的スキーマベースのツール:**スキーマを使用してデータ構造を定義すると、MemoryMesh はデータを追加、更新、削除するためのツールを自動的に生成します。
  • **直感的なスキーマ設計:**必須フィールド、列挙型、関係定義を使用して、AI がノードを生成および接続できるようにガイドするスキーマを作成します。
  • **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 のコンテキストを提供します。 ( deleteツールとupdateツールには一般的な説明があります)
  • properties - 各プロパティには、そのタイプ、説明、および追加の制約が含まれます。
    • property
      • type - サポートされる値はstringまたはarrayです。
      • description - エンティティの目的について AI をガイドするのに役立ちます。
      • required - ブール値。true true場合、 AIはノードを作成するときにこのプロパティを強制的に提供します。
      • enum - 文字列の配列。存在する場合、 AIは指定されたオプションのいずれかを選択する必要があります
      • relationship - 別のノードへの接続を定義します。プロパティが必須であり、関係がある場合、 AIは常にノードと対応するエッジの両方を作成します
        • edgeType - 作成する関係のタイプ。
        • description - 関係の目的について AI を導くのに役立ちます。
  • additionalProperties - ブール値。true 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 には、テキストベースの RPG 用に設計された 11 個の構築済みスキーマが含まれており、ゲーム開発にすぐに使用できる基盤を提供します。

スキーママネージャーツール

MemoryMeshには、スキーマの作成と編集を簡素化するSchemaManagerツールが含まれています。視覚的なインターフェースにより、JSONを直接記述することなく、データ構造を簡単に定義できます。

ダイナミックツール

MemoryMeshは、動的なツールを通じてナレッジグラフとのインタラクションを簡素化します。これらのツールは手動でコーディングするのではなく、スキーマ定義から直接自動生成されます。つまり、スキーマを使用してデータの構造を定義すると、MemoryMeshは特定のデータ構造に合わせてカスタマイズされたツールセットをインテリジェントに作成します。

**次のように考えてください。**ブループリント (スキーマ) を提供すると、MemoryMesh はそのブループリントに基づいて要素を構築、変更、削除するために必要なツールを自動的に構築します。

舞台裏ではどのように機能するのでしょうか?

MemoryMeshには、スキーマ定義を読み取るインテリジェントなシステムが搭載されています。このシステムは、エンティティのプロパティやそれらの関係性など、定義された構造を分析します。この分析に基づいて、各エンティティタイプに対応するツールセットを自動的に作成します。

  • **add_<entity> :**エンティティの新しいインスタンスを作成するためのツール。
  • **update_<entity> :**既存のエンティティを変更するためのツール。
  • **delete_<entity> :**エンティティを削除するためのツール。

これらのツールは、MemoryMesh 内の中央ハブを通じて利用できるようになり、接続されたクライアントや AI から簡単にアクセスして使用できるようになります。

本質的に、MemoryMesh の動的ツール システムは、ナレッジ グラフを管理するための強力かつ効率的な方法を提供し、データ操作の基本的なメカニズムではなく、アプリケーションのコンテンツとロジックに集中できるようにします。

メモリファイル

デフォルトでは、データはdist/data/memory.json内の JSON ファイルに保存されます。

メモリビューア

メモリビューアは、MemoryMeshが管理するナレッジグラフの内容を視覚化および検査するために設計された独立したツールです。ノード、エッジ、そしてそれらのプロパティを調べるためのユーザーフレンドリーなインターフェースを提供します。

主な機能:
  • グラフの視覚化: ナレッジ グラフをインタラクティブなノード リンク ダイアグラムとして表示します。
  • ノード検査: ノードを選択して、そのノードタイプ、メタデータ、接続されたエッジを表示します。
  • エッジ探索: edgeType や方向など、ノード間の関係を調べます。
  • 検索とフィルタリング: 特定のノードをすばやく見つけたり、タイプ別にフィルタリングしたりできます。
  • テーブル ビュー: 特定のノードとエッジ、またはすべてを一度に簡単に検索して検査できます。
  • 生の JSON ビュー: メモリ ファイルから生の JSON データを表示できます。
  • 統計パネル: ナレッジ グラフに関する主要なメトリックと情報 (ノードの合計数、エッジの合計数、ノード タイプ、エッジ タイプ) を提供します。
  • 検索とフィルター: ノード タイプまたはエッジ タイプでフィルターし、ノード、エッジ、またはその両方を表示するかどうかをフィルターできます。
メモリビューアへのアクセス

メモリビューアはスタンドアロンのウェブアプリケーションです。メモリビューアに関する議論

メモリビューアの使用
  • メモリ ファイルの選択: メモリ ビューアーで、[メモリ ファイルの選択] ボタンをクリックします。
  • ファイルの選択: MemoryMesh プロジェクト ディレクトリに移動し、 memory.jsonファイル (デフォルトではdist/data/memory.jsonにあります) を選択します。
  • 探索: メモリ ビューアーはナレッジ グラフの内容を読み込んで表示します。

メモリフロー

プロンプト

最適な結果を得るには、Claude の「プロジェクト」機能とカスタム指示をご利用ください。以下は、開始時に使用できるプロンプトの例です。

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、街の周りの探索できる場所をいくつか追加し、どこかに1つか2つの遺物を隠します。

インストール

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 コードをdistディレクトリ内の JavaScript にコンパイルし、サンプル スキーマとデータ ファイルもそこにコピーします。
  4. ファイルのコピーを確認する(オプション):
    • ビルド プロセスでは、 dataフォルダーがdistに自動的にコピーされます。
    • dist/dataが存在し、 .jsonファイルが含まれていることを確認してください。また、 dist/data/schemasが存在し、 .schema.jsonファイルが含まれていることも確認してください。
  5. Claude デスクトップを設定します。Claude Desktop 構成ファイルを開きます。
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • mcpServersセクションにmemorymeshのエントリを追加します。以下の設定オプションから1つ選択できます。
    "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ディレクトリが存在し、 index.jsを含むコンパイルされた JavaScript ファイルが含まれていることを確認します。
    • Claude Desktop のログでエラーを確認します。
      • macOS: ~/Library/Logs/Claude/mcp-server-memorymesh.log (およびmcp.log )
      • Windows: (おそらく%AppData%\Claude下のLogsフォルダ内)
  • ツールが表示されない:
    • npm run buildコマンドがエラーなしで完了したことを確認してください。
    • スキーマ ファイルがdist/data/schemasに正しく配置され、正しい命名規則 ( add_[entity].schema.json ) に従っていることを確認します。
    • 初期化中にエラーが発生していないか、サーバーのコンソール出力またはログを確認してください。

詳細設定

MemoryMesh では、基本的な設定以外にも動作をカスタマイズする方法がいくつか用意されています。

変数

/config/config.tsでデフォルト設定を上書きすることができます。

  • MEMORY_FILE: ナレッジグラフデータを保存するために使用されるJSONファイルへのパスを指定します。(デフォルト: dist/data/memory.json )
  • SCHEMAS_DIR: スキーマファイルディレクトリへのパス。(デフォルト: dist/data/schemas/memory.json )

制限事項

  1. ノードの削除: AIはナレッジグラフからノードを削除することに躊躇する場合があります。必要に応じてプロンプトを表示して削除を促してください。

貢献

貢献、フィードバック、そしてアイデアを歓迎します!このプロジェクトは、構造化データとAI推論機能を統合するための個人的な探求です。このプロジェクトをさらに推進したり、新しいプロジェクトのアイデアを思いついたりするために、貢献、フィードバック、そしてアイデアを歓迎します。

-
security - not tested
A
license - permissive license
-
quality - not tested

このプロジェクトは、MCP サーバー リポジトリの Knowledge Graph Memory Server に基づいており、そのコア機能を保持しています。

  1. IMPORTANT
    1. Quick Links
      1. Overview
        1. Key Features
        2. Dynamic Tools
        3. Memory file
      2. Memory Flow
        1. Prompt
          1. Example
        2. Installation
          1. Installing via Smithery
          2. Prerequisites
          3. Installation Steps
          4. Verify Installation
          5. Updating
          6. Troubleshooting
        3. Advanced Configuration
          1. Variables
        4. Limitations
          1. Contribution
            ID: kf6n6221pd