Knowledge Graph Memory Server について
Knowledge Graph Memory Server は、エンティティ・リレーション・オブザベーションからなるローカルのナレッジグラフで情報を永続化する MCP サーバーです。エラーとその解決策を記録する lesson 機能も備えており、後から検索して再利用できます。公式の memory サーバーを拡張したプロジェクトです。
主な機能
- 01ローカルのナレッジグラフによるエンティティと関係の管理
- 02エンティティに紐づく原子的なオブザベーション
- 03エラーパターンと解決手順を記録する lesson
- 04成功率順に並ぶ類似エラーの検索
- 05memory と lesson を分けた保存ファイル
活用シーン
- 01チャットセッションをまたいだユーザー設定の記憶
- 02過去の類似エラーと解決策の検索
- 03開発中に記録済みのトラブルシューティング手順を再利用
MCP 対応
create_entities、search_nodes、find_similar_errors などのツールを MCP サーバーとして提供し、MCP クライアントからナレッジグラフと lesson データを読み書きできるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
知識グラフメモリサーバー
ローカルの知識グラフを使用した、永続メモリの基本的な実装です。これにより、Claude はチャットをまたいでユーザーに関する情報を記憶し、レッスンシステムを通じて過去のエラーから学習できます。
基本概念
エンティティ
エンティティは、知識グラフの主要なノードです。各エンティティには以下があります。
- 一意の名前(識別子)
- エンティティの種類(例:「person」、「organization」、「event」)
- 観察事項のリスト
例:
{
"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
ツール
-
create_entities
- 知識グラフに複数の新しいエンティティを作成します
- 入力:
entities(オブジェクトの配列)- 各オブジェクトには以下が含まれます。
name(文字列):エンティティ識別子entityType(文字列):種類の分類observations(string[]):関連する観察事項
- 各オブジェクトには以下が含まれます。
- 既存の名前を持つエンティティは無視します
-
create_relations
- エンティティ間に複数の新しい関係を作成します
- 入力:
relations(オブジェクトの配列)- 各オブジェクトには以下が含まれます。
from(文字列):ソースエンティティ名to(文字列):ターゲットエンティティ名relationType(文字列):能動態で表した関係の種類
- 各オブジェクトには以下が含まれます。
- 重複する関係はスキップします
-
add_observations
- 既存のエンティティに新しい観察事項を追加します
- 入力:
observations(オブジェクトの配列)- 各オブジェクトには以下が含まれます。
entityName(文字列):対象エンティティcontents(string[]):追加する新しい観察事項
- 各オブジェクトには以下が含まれます。
- エンティティごとに追加された観察事項を返します
- エンティティが存在しない場合は失敗します
-
delete_entities
- エンティティとその関係を削除します
- 入力:
entityNames(string[]) - 関連する関係も連鎖的に削除します
- エンティティが存在しない場合は何もせず終了します
-
delete_observations
- エンティティから特定の観察事項を削除します
- 入力:
deletions(オブジェクトの配列)- 各オブジェクトには以下が含まれます。
entityName(文字列):対象エンティティobservations(string[]):削除する観察事項
- 各オブジェクトには以下が含まれます。
- 観察事項が存在しない場合は何もせず終了します
-
delete_relations
- グラフから特定の関係を削除します
- 入力:
relations(オブジェクトの配列)- 各オブジェクトには以下が含まれます。
from(文字列):ソースエンティティ名to(文字列):ターゲットエンティティ名relationType(文字列):関係の種類
- 各オブジェクトには以下が含まれます。
- 関係が存在しない場合は何もせず終了します
-
read_graph
- 知識グラフ全体を読み取ります
- 入力は不要です
- すべてのエンティティと関係を含む、グラフ全体の構造を返します
-
search_nodes
- クエリに基づいてノードを検索します
- 入力:
query(文字列) - 以下を対象に検索します。
- エンティティ名
- エンティティの種類
- 観察事項の内容
- 一致するエンティティとその関係を返します
-
open_nodes
- 名前を指定して特定のノードを取得します
- 入力:
names(string[]) - 以下を返します。
- 要求されたエンティティ
- 要求されたエンティティ間の関係
- 存在しないノードは何も通知せずスキップします
レッスン管理ツール
-
create_lesson
- エラーとその解決策から新しいレッスンを作成します
- 入力:
lesson(object)- 内容:
name(string):一意の識別子entityType(string):「lesson」である必要がありますobservations(string[]):エラーと解決策に関するメモerrorPattern(object):エラーの詳細type(string):エラーのカテゴリmessage(string):エラーメッセージcontext(string):エラーが発生した場所stackTrace(string、optional):スタックトレース
metadata(object):追加情報severity("low" | "medium" | "high" | "critical")environment(object):システムの詳細frequency(number):遭遇した回数successRate(number):解決策の成功率
verificationSteps(array):解決策の検証- 各ステップの内容:
command(string):実行するアクションexpectedOutput(string):期待される結果successIndicators(string[]):成功を示すマーカー
- 各ステップの内容:
- 内容:
- メタデータのタイムスタンプを自動的に初期化します
- 必須フィールドをすべて検証します
-
find_similar_errors
- 類似するエラーとその解決策を検索します
- 入力:
errorPattern(object)- 内容:
type(string):エラーのカテゴリmessage(string):エラーメッセージcontext(string):エラーのコンテキスト
- 内容:
- 一致するレッスンを成功率の高い順に返します
- エラーメッセージにはあいまい検索を使用します
-
update_lesson_success
- レッスンの成功状況の記録を更新します
- 入力:
lessonName(string):更新するレッスンsuccess(boolean):解決策が機能したかどうか
- 次の項目を更新します:
- 成功率(加重平均)
- 頻度カウンター
- 最終更新日時
-
get_lesson_recommendations
- 現在のコンテキストに関連するレッスンを取得します
- 入力:
context(string) - 次の項目を対象に検索します:
- エラーの種類
- エラーメッセージ
- エラーのコンテキスト
- レッスンの所見
- 次の基準でレッスンを並べ替えて返します:
- コンテキストとの関連性
- 成功率
- 解決策の詳細をすべて含みます
ファイル管理
サーバーは、次の2種類のファイルを処理するようになりました:
memory.json:基本的なエンティティと関係を保存しますlesson.json:エラーパターンを含むレッスンエンティティを保存します
パフォーマンスを維持するため、ファイルが1000行を超えると自動的に分割されます。
Cursor MCP クライアントのセットアップ
このメモリーサーバーを Cursor MCP クライアントと統合するには、次の手順に従います:
- リポジトリをクローンします:
git clone [repository-url]
cd [repository-name]
- 依存関係をインストールします:
pnpm install
- プロジェクトをビルドします:
pnpm build
- サーバーを設定します:
- ビルド済みサーバーファイルのフルパスを確認します:
/path/to/the/dist/index.js - Node.js を使用してサーバーを起動します:
node /path/to/the/dist/index.js
- Cursor で有効にします:
- キーボードショートカット
Ctrl+Shift+Pを使用します - 「reload window」と入力して選択します
- MCP サーバーが有効になるまで数秒待ちます
- プロンプトが表示されたら stdio タイプを選択します
これでメモリーサーバーが Cursor MCP クライアントに統合され、使用できる状態になります。
Claude Desktop での使用方法
セットアップ
これを claude_desktop_config.json に追加します:
Docker
{
"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 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
ビルド
Docker:
docker build -t mcp/memory -f src/memory/Dockerfile .
ライセンス
この MCP サーバーは MIT ライセンスのもとでライセンスされています。MIT ライセンスの利用規約に従う限り、ソフトウェアを自由に使用、変更、配布できます。詳しくは、プロジェクトリポジトリの LICENSE ファイルをご覧ください。
新しいツール
-
create_lesson
- エラーとその解決策から新しいレッスンを作成します
- 入力:
lesson(object)- エラーパターン、解決手順、メタデータが含まれます
- 作成時刻と更新を自動的に記録します
- 解決手順が完全であることを確認します
-
find_similar_errors
- 類似するエラーとその解決策を検索します
- 入力:
errorPattern(object)- エラーの種類、メッセージ、コンテキストが含まれます
- 成功率の高い順に、一致するレッスンを返します
- 関連する解決策と確認手順も含まれます
-
update_lesson_success
- レッスンの成功状況を更新します
- 入力:
lessonName(string):更新するレッスンsuccess(boolean):解決策が機能したかどうか
- 成功率と頻度の指標を更新します
-
get_lesson_recommendations
- 現在のコンテキストに関連するレッスンを取得します
- 入力:
context(string) - 関連度と成功率の高い順にレッスンを返します
- 解決策の詳細と確認手順もすべて含まれます
ベースコードを提供してくださったこのリポジトリのオーナーに大感謝です。レッスンとファイル管理機能を追加しました
心から感謝します! https://github.com/modelcontextprotocol/servers jerome3o-anthropic https://github.com/modelcontextprotocol/servers/tree/main/src/memory
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。