Knowledge Graph Memory Server について
Knowledge Graph Memory Serverは、ローカルのナレッジグラフに情報を保存し、Claudeが会話をまたいで記憶を保持できるPython製MCPサーバーです。エンティティ、観察情報、関係の管理に加え、グラフの検索や取得ができます。
主な機能
- 01ローカルグラフへの永続メモリ保存
- 02エンティティと有向関係の作成
- 03観察情報の追加と削除
- 04グラフノードの検索と取得
- 05グラフ全体の読み取り
活用シーン
- 01Claudeの会話をまたいだユーザー情報の保持
- 02保存した事実やエンティティ関係の検索
- 03記録済みメモリの更新や削除
MCP 対応
このMCPサーバーは、ナレッジグラフの作成、編集、検索、取得を行うツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ナレッジグラフメモリーサーバー
ローカルのナレッジグラフを使用した、永続メモリーの基本的な実装です。これにより、Claude はチャットをまたいでユーザーに関する情報を記憶できます。
これは、オリジナルのリファレンスサーバー(バージョン 0.6.3)を Python に移植したものです。 Cline(および Claude Sonnet 3.5)の支援を受けて、コードをいくつかリファクタリングしました。
基本概念
エンティティ
エンティティは、ナレッジグラフの主要なノードです。各エンティティには、次の情報があります。
- 一意の名前(識別子)
- エンティティの種類(例:「person」、「organization」、「event」)
- 観察事項のリスト
例:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["Speaks fluent Spanish"]
}
リレーション
リレーションは、エンティティ間の有向接続を定義します。常に能動態で保存され、エンティティ間の相互作用や関係を表します。
例:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at"
}
観察事項
観察事項は、エンティティに関する個別の情報です。次の特徴があります。
- 文字列として保存されます
- 特定のエンティティに紐づけられます
- 個別に追加または削除できます
- アトミックである必要があります(観察事項 1 つにつき事実 1 つ)
例:
{
"entityName": "John_Smith",
"observations": [
"Speaks fluent Spanish",
"Graduated in 2019",
"Prefers morning meetings"
]
}
API
ツール
-
create_entities
- ナレッジグラフに複数の新しいエンティティを作成します
- 入力:
entities(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
name(string):エンティティの識別子entityType(string):種類の分類observations(string[]):関連する観察事項
- 各オブジェクトには、次の情報が含まれます。
- 既存の名前を持つエンティティは無視します
-
create_relations
- エンティティ間に複数の新しいリレーションを作成します
- 入力:
relations(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
from(string):ソースエンティティ名to(string):ターゲットエンティティ名relationType(string):能動態で表す関係の種類
- 各オブジェクトには、次の情報が含まれます。
- 重複するリレーションはスキップします
-
add_observations
- 既存のエンティティに新しい観察事項を追加します
- 入力:
observations(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
entityName(string):ターゲットエンティティcontents(string[]):追加する新しい観察事項
- 各オブジェクトには、次の情報が含まれます。
- エンティティごとに追加された観察事項を返します
- エンティティが存在しない場合は失敗します
-
delete_entities
- エンティティとそのリレーションを削除します
- 入力:
entityNames(string[]) - 関連するリレーションも連鎖的に削除します
- エンティティが存在しない場合は何もせずに終了します
-
delete_observations
- エンティティから特定の観察事項を削除します
- 入力:
deletions(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
entityName(string):ターゲットエンティティobservations(string[]):削除する観察事項
- 各オブジェクトには、次の情報が含まれます。
- 観察事項が存在しない場合は何もせずに終了します
-
delete_relations
- グラフから特定のリレーションを削除します
- 入力:
relations(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
from(string):ソースエンティティ名to(string):ターゲットエンティティ名relationType(string):関係の種類
- 各オブジェクトには、次の情報が含まれます。
- リレーションが存在しない場合は何もせずに終了します
-
read_graph
- ナレッジグラフ全体を読み取ります
- 入力は不要です
- すべてのエンティティとリレーションを含む、グラフの完全な構造を返します
-
search_nodes
- クエリに基づいてノードを検索します
- 入力:
query(string) - 次の項目を検索します。
- エンティティ名
- エンティティの種類
- 観察事項の内容
- 一致したエンティティとそのリレーションを返します
-
open_nodes
- 名前で指定したノードを取得します
- 入力:
names(string[]) - 次の項目を返します。
- 指定されたエンティティ
- 指定されたエンティティ間のリレーション
- 存在しないノードは黙ってスキップします
Claude Desktop での使用方法
セットアップ
これを claude_desktop_config.json に追加します。
uvx
{
"mcpServers": {
"memory-python":
{
"command": "uvx",
"args": [
"--refresh",
"--quiet",
"mcp-memory-py"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/custom/memory.json"
}
}
}
環境引数
MEMORY_FILE_PATH:メモリーを保存する JSON ファイルへのパス(デフォルト:サーバーディレクトリ内のmemory.json)DEBUG_LOGGING:サーバー呼び出しの説明を含む日次ログファイルを生成します。開発時のみ使用してください
システムプロンプト
メモリを活用するためのプロンプトは、ユースケースによって異なります。プロンプトを変更すると、作成するメモリの頻度や種類をモデルが判断しやすくなります。
チャットをパーソナライズするためのプロンプトの例を以下に示します。Claude.ai Project の「Custom Instructions」フィールドでこのプロンプトを使用できます。
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
テスト
ユニットテストを実行します:
uv run pytest
デバッグ
MCP Inspector を使用してデバッグします:
npx @modelcontextprotocol/inspector uv run --directory src -m mcp_memory_py
ライセンス
この MCP サーバーは MIT License の下でライセンスされています。MIT License の利用規約に従う限り、ソフトウェアを自由に使用、変更、配布できます。詳細については、プロジェクトリポジトリの LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。