Knowledge Graph Memory Server

by T1nker-1220
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

ナレッジグラフメモリサーバー

ローカルナレッジグラフを用いた永続メモリの基本実装。これにより、Claude はチャットをまたいでユーザーに関する情報を記憶し、レッスンシステムを通じて過去のエラーから学習することができます。

コアコンセプト

エンティティ

エンティティはナレッジグラフの主要なノードです。各エンティティには以下の要素が含まれます。

  • 一意の名前(識別子)
  • エンティティの種類(例:「人」、「組織」、「イベント」)
  • 観察リスト

例:

{ "name": "John_Smith", "entityType": "person", "observations": ["Speaks fluent Spanish"] }

関係

関係は、実体間の有向的なつながりを定義します。関係は常に能動態で表現され、実体同士がどのように相互作用し、関係するかを説明します。

例:

{ "from": "John_Smith", "to": "Anthropic", "relationType": "works_at" }

観察

観察とは、ある実体に関する個別の情報です。観察対象には以下のものがあります。

  • 文字列として保存
  • 特定のエンティティに添付
  • 個別に追加または削除可能
  • アトミックである必要があります(観察ごとに1つの事実)

例:

{ "entityName": "John_Smith", "observations": [ "Speaks fluent Spanish", "Graduated in 2019", "Prefers morning meetings" ] }

教訓

レッスンは、エラーとその解決策に関する知識を蓄積する特別なエンティティです。各レッスンには以下の内容が含まれます。

  • 一意の名前(識別子)
  • エラーパターン情報(タイプ、メッセージ、コンテキスト)
  • 解決手順と検証
  • 成功率の追跡
  • 環境的背景
  • メタデータ(重大度、タイムスタンプ、頻度)

例:

{ "name": "NPM_VERSION_MISMATCH_01", "entityType": "lesson", "observations": [ "Error occurs when using incompatible package versions", "Affects Windows environments specifically", "Resolution requires version pinning" ], "errorPattern": { "type": "dependency", "message": "Cannot find package @shadcn/ui", "context": "package installation" }, "metadata": { "severity": "high", "environment": { "os": "windows", "nodeVersion": "18.x" }, "createdAt": "2025-02-13T13:21:58.523Z", "updatedAt": "2025-02-13T13:22:21.336Z", "frequency": 1, "successRate": 1.0 }, "verificationSteps": [ { "command": "pnpm add shadcn@latest", "expectedOutput": "Successfully installed shadcn", "successIndicators": ["added shadcn"] } ] }

API

ツール

  • エンティティの作成
    • ナレッジグラフに複数の新しいエンティティを作成する
    • 入力: entities (オブジェクトの配列)
      • 各オブジェクトには次のものが含まれます。
        • name (文字列): エンティティ識別子
        • entityType (文字列): 型分類
        • observations (文字列[]): 関連する観測値
    • 既存の名前を持つエンティティを無視します
  • 関係を作成する
    • エンティティ間に複数の新しい関係を作成する
    • 入力: relations (オブジェクトの配列)
      • 各オブジェクトには次のものが含まれます。
        • from (文字列): ソースエンティティ名
        • to (文字列): ターゲットエンティティ名
        • relationType (文字列): 能動態における関係の種類
    • 重複関係をスキップする
  • 観察を追加する
    • 既存のエンティティに新しい観察を追加する
    • 入力: observations (オブジェクトの配列)
      • 各オブジェクトには次のものが含まれます。
        • entityName (文字列): 対象エンティティ
        • contents (文字列[]): 追加する新しい観察
    • エンティティごとに追加された観測値を返します
    • エンティティが存在しない場合は失敗します
  • エンティティの削除
    • エンティティとその関係を削除する
    • 入力: entityNames (string[])
    • 関連関係のカスケード削除
    • エンティティが存在しない場合はサイレント操作
  • 削除観測
    • エンティティから特定の観察を削除する
    • 入力: deletions (オブジェクトの配列)
      • 各オブジェクトには次のものが含まれます。
        • entityName (文字列): 対象エンティティ
        • observations (文字列[]): 削除する観測値
    • 観測が存在しない場合はサイレント操作
  • 関係を削除する
    • グラフから特定の関係を削除する
    • 入力: relations (オブジェクトの配列)
      • 各オブジェクトには次のものが含まれます。
        • from (文字列): ソースエンティティ名
        • to (文字列): ターゲットエンティティ名
        • relationType (文字列): 関係の種類
    • 関係が存在しない場合はサイレント操作
  • グラフを読む
    • ナレッジグラフ全体を読む
    • 入力不要
    • すべてのエンティティと関係を含む完全なグラフ構造を返します
  • 検索ノード
    • クエリに基づいてノードを検索する
    • 入力: query (文字列)
    • 検索範囲:
      • エンティティ名
      • エンティティタイプ
      • 観察内容
    • 一致するエンティティとその関係を返します
  • オープンノード
    • 名前で特定のノードを取得する
    • 入力: names (文字列[])
    • 戻り値:
      • 要求されたエンティティ
      • 要求されたエンティティ間の関係
    • 存在しないノードを黙ってスキップする

レッスン管理ツール

  • レッスンを作成する
    • エラーとその解決策から新しい教訓を作成する
    • 入力: lesson (オブジェクト)
      • 内容:
        • name (文字列):一意の識別子
        • entityType (文字列): 「lesson」である必要があります
        • observations (文字列[]): エラーと解決策に関するメモ
        • errorPattern (オブジェクト): エラーの詳細
          • type (文字列): エラーのカテゴリ
          • message (文字列):エラーメッセージ
          • context (文字列):エラーが発生した場所
          • stackTrace (文字列、オプション): スタックトレース
        • metadata (オブジェクト):追加情報
          • severity (「低」 | 「中」 | 「高」 | 「重大」)
          • environment (オブジェクト):システムの詳細
          • frequency (数値):遭遇した回数
          • successRate (数値): ソリューションの成功率
        • verificationSteps (配列): ソリューションの検証
          • 各ステップには次の内容が含まれます。
            • command (文字列):実行するアクション
            • expectedOutput (文字列): 期待される結果
            • successIndicators (string[]): 成功マーカー
    • メタデータのタイムスタンプを自動的に初期化します
    • すべての必須フィールドを検証します
  • 類似エラーを見つける
    • 類似のエラーとその解決策を見つける
    • 入力: errorPattern (オブジェクト)
      • 内容:
        • type (文字列): エラーカテゴリ
        • message (文字列):エラーメッセージ
        • context (文字列):エラーコンテキスト
    • 成功率でソートされた一致するレッスンを返します
    • エラーメッセージにあいまい一致を使用します
  • レッスンの更新成功
    • レッスンの成功追跡を更新する
    • 入力:
      • lessonName (文字列): 更新するレッスン
      • success (ブール値): 解決策が機能したかどうか
    • アップデート:
      • 成功率(加重平均)
      • 周波数カウンター
      • 最終更新タイムスタンプ
  • レッスンの推奨事項を取得する
    • 現在の状況に適したレッスンを受ける
    • 入力: context (文字列)
    • 検索範囲:
      • エラーの種類
      • エラーメッセージ
      • エラーコンテキスト
      • 授業観察
    • 次の基準で並べ替えられたレッスンを返します:
      • コンテキストの関連性
      • 成功率
    • 完全なソリューションの詳細が含まれています

ファイル管理

サーバーは現在、次の 2 種類のファイルを処理します。

  • memory.json : 基本的なエンティティとリレーションを保存します
  • lesson.json : エラーパターンを含むレッスンエンティティを保存します

パフォーマンスを維持するために、ファイルは 1000 行を超えると自動的に分割されます。

カーソルMCPクライアントのセットアップ

このメモリ サーバーを Cursor MCP クライアントと統合するには、次の手順に従います。

  1. リポジトリをクローンします。
git clone [repository-url] cd [repository-name]
  1. 依存関係をインストールします:
pnpm install
  1. プロジェクトをビルドします。
pnpm build
  1. サーバーを構成します。
  • 構築されたサーバーファイルへのフルパスを見つけます: /path/to/the/dist/index.js
  • Node.jsを使用してサーバーを起動します: node /path/to/the/dist/index.js
  1. カーソル内でアクティブ化:
  • キーボードショートカットCtrl+Shift+Pを使用します
  • 「ウィンドウをリロード」と入力して選択します
  • MCPサーバーが起動するまで数秒お待ちください
  • プロンプトが表示されたらstdioタイプを選択します

これで、メモリ サーバーが Cursor MCP クライアントと統合され、使用できるようになります。

Claude Desktopでの使用

設定

claude_desktop_config.json に以下を追加します:

ドッカー

{ "mcpServers": { "memory": { "command": "docker", "args": ["run", "-i", "-v", "claude-memory:/app/dist", "--rm", "mcp/memory"] } } }

NPX

{ "mcpServers": { "memory": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-memory" ] } } }

カスタム設定のNPX

サーバーは次の環境変数を使用して構成できます。

{ "mcpServers": { "memory": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-memory" ], "env": { "MEMORY_FILE_PATH": "/path/to/custom/memory.json" } } } }
  • MEMORY_FILE_PATH : メモリストレージ JSON ファイルへのパス (デフォルト: サーバー ディレクトリ内のmemory.json )

システムプロンプト

メモリの利用に関するプロンプトはユースケースによって異なります。プロンプトを変更することで、モデルはメモリの頻度と種類を適切に判断できるようになります。

チャットのパーソナライズのためのプロンプトの例を以下に示します。このプロンプトは、 Claude.ai プロジェクトの「カスタム指示」フィールドで使用できます。

Follow these steps for each interaction: 1. User Identification: - You should assume that you are interacting with default_user - If you have not identified default_user, proactively try to do so. 2. Memory Retrieval: - Always begin your chat by saying only "Remembering..." and retrieve all relevant information from your knowledge graph - Always refer to your knowledge graph as your "memory" 3. Memory - While conversing with the user, be attentive to any new information that falls into these categories: a) Basic Identity (age, gender, location, job title, education level, etc.) b) Behaviors (interests, habits, etc.) c) Preferences (communication style, preferred language, etc.) d) Goals (goals, targets, aspirations, etc.) e) Relationships (personal and professional relationships up to 3 degrees of separation) 4. Memory Update: - If any new information was gathered during the interaction, update your memory as follows: a) Create entities for recurring organizations, people, and significant events b) Connect them to the current entities using relations b) Store facts about them as observations

建物

ドッカー:

docker build -t mcp/memory -f src/memory/Dockerfile .

ライセンス

このMCPサーバーはMITライセンスに基づいてライセンスされています。つまり、MITライセンスの条件に従って、ソフトウェアを自由に使用、改変、配布することができます。詳細については、プロジェクトリポジトリのLICENSEファイルをご覧ください。

新しいツール

  • レッスンを作成する
    • エラーとその解決策から新しい教訓を作成する
    • 入力: lesson (オブジェクト)
      • エラーパターン、解決手順、メタデータが含まれます
      • 作成時間と更新を自動的に追跡します
      • ソリューション手順が完了したことを確認します
  • 類似エラーを見つける
    • 類似のエラーとその解決策を見つける
    • 入力: errorPattern (オブジェクト)
      • エラーの種類、メッセージ、コンテキストが含まれます
      • 成功率でソートされた一致するレッスンを返します
      • 関連するソリューションと検証手順が含まれています
  • レッスンの更新成功
    • レッスンの成功追跡を更新する
    • 入力:
      • lessonName (文字列): 更新するレッスン
      • success (ブール値): 解決策が機能したかどうか
    • 成功率と頻度の指標を更新
  • レッスンの推奨事項を取得する
    • 現在の状況に適したレッスンを受ける
    • 入力: context (文字列)
    • 関連性と成功率で並べ替えられたレッスンを返します
    • 完全なソリューションの詳細と検証手順が含まれています

このリポジトリの所有者にベースコードを提供してくれたことに感謝します。私はレッスンとファイル管理でそれを拡張しました。

本当にありがとうございます! https://github.com/modelcontextprotocol/servers jerome3o-anthropic https://github.com/modelcontextprotocol/servers/tree/main/src/memory

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

チャット全体の情報を記憶し、ローカル ナレッジ グラフとレッスン管理を利用して過去のエラーから学習する永続メモリ システムを通じて、ユーザー インタラクションを強化します。

  1. Core Concepts
    1. Entities
    2. Relations
    3. Observations
    4. Lessons
  2. API
    1. Tools
    2. Lesson Management Tools
  3. File Management
    1. Cursor MCP Client Setup
      1. Usage with Claude Desktop
        1. Setup
        2. System Prompt
        3. Building
        4. License
        5. New Tools
      2. BIG CREDITS TO THE OWNER OF THIS REPO FOR THE BASE CODE I ENHANCED IT WITH LESSONS AND FILE MANAGEMENT
        ID: eoinvr1bz0