Memory について
Memoryは、Claudeが会話をまたいで情報を保持できるよう、ローカルのナレッジグラフにデータを保存するMCPサーバーです。エンティティ、観察事項、関係の管理と検索に対応します。
主な機能
- 01エンティティと観察事項を保存
- 02有向関係を作成
- 03グラフデータを追加・削除
- 04グラフのノードを検索・取得
- 05グラフをリソースとして公開
活用シーン
- 01会話をまたいでユーザー情報を保持
- 02人物と組織の関係を記録
- 03保存済みの観察事項を検索
MCP 対応
グラフの管理・検索ツールと `knowledge-graph` リソースを公開します。変更時には購読中のクライアントへリソース更新を通知します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ナレッジグラフメモリーサーバー
ローカルのナレッジグラフを使用した、永続メモリーの基本的な実装です。これにより、Claude はチャットをまたいでユーザーに関する情報を記憶できます。
npm では @modelcontextprotocol/server-memory として公開されています。
主な概念
エンティティ
エンティティは、ナレッジグラフの主要なノードです。各エンティティには、次の情報があります。
- 一意の名前(識別子)
- エンティティの種類(例:「人物」、「組織」、「イベント」)
- 観察事項のリスト
例:
{
"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"
]
}
API
ツール
-
create_entities
- ナレッジグラフに複数の新しいエンティティを作成します
- 入力:
entities(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
name(文字列):エンティティの識別子entityType(文字列):種類の分類observations(文字列[]):関連する観察事項
- 各オブジェクトには、次の情報が含まれます。
- 名前が既存のエンティティ(または同じ呼び出し内で先に指定された名前)と重複するエンティティは無視され、観察事項も追加されません
- 作成されたエンティティを返します。スキップされたものがある場合は、構造化された結果に
skippedとして名前の一覧も含まれ、スキップされた名前を示す2つ目のテキスト項目が返されます(既存のエンティティに追加するにはadd_observationsを使用してください)
-
create_relations
- エンティティ間に複数の新しい関係を作成します
- 入力:
relations(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
from(文字列):ソースエンティティ名to(文字列):ターゲットエンティティ名relationType(文字列):能動態で記述した関係の種類
- 各オブジェクトには、次の情報が含まれます。
- 重複する関係はスキップされます
- ソースまたはターゲットのエンティティが存在しない場合は失敗します
-
add_observations
- 既存のエンティティに新しい観察事項を追加します
- 入力:
observations(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
entityName(文字列):対象のエンティティcontents(文字列[]):追加する新しい観察事項
- 各オブジェクトには、次の情報が含まれます。
- エンティティごとに追加された観察事項を返します
- エンティティが存在しない場合は失敗します
-
delete_entities
- エンティティとその関係を削除します
- 入力:
entityNames(文字列[]) - 関連する関係も連鎖的に削除されます
- エンティティが存在しなくてもエラーにはなりません。見つからなかった名前はレスポンスで報告されます
-
delete_observations
- エンティティから特定の観察事項を削除します
- 入力:
deletions(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
entityName(文字列):対象のエンティティobservations(文字列[]):削除する観察事項
- 各オブジェクトには、次の情報が含まれます。
- 観察事項が存在しなくてもエラーにはなりません。削除された件数はレスポンスで報告されます
-
delete_relations
- グラフから特定の関係を削除します
- 入力:
relations(オブジェクトの配列)- 各オブジェクトには、次の情報が含まれます。
from(文字列):ソースエンティティ名to(文字列):ターゲットエンティティ名relationType(文字列):関係の種類
- 各オブジェクトには、次の情報が含まれます。
- 関係が存在しなくてもエラーにはなりません。削除された件数はレスポンスで報告されます
-
read_graph
- ナレッジグラフ全体を読み取ります
- 入力は不要です
- すべてのエンティティと関係を含む、グラフの完全な構造を返します
-
search_nodes
- クエリに基づいてノードを検索します
- 入力:
query(文字列) - 次の項目を検索します。
- エンティティ名
- エンティティの種類
- 観察事項の内容
- 一致したエンティティとその関係を返します
-
open_nodes
- 名前を指定して特定のノードを取得します
- 入力:
names(文字列[]) - 次の情報を返します。
- 指定したエンティティ
- 指定したエンティティ間の関係
- 存在しないノードは通知せずにスキップします
リソース
- knowledge-graph (
memory://knowledge-graph)- MCP リソースとして読み取り可能な完全なナレッジグラフです
- MIME タイプ:
application/json read_graphと同じ形式(エンティティと関係)を返します- 変更ツール(
create_entities、create_relations、add_observations、delete_entities、delete_observations、delete_relations)は、この URI に対してnotifications/resources/updatedを送信するため、登録済みのクライアントは変更をリアルタイムで確認できます - クライアントの購読方法はプロトコルのバージョンによって異なります。2026-07-28 クライアントは
subscriptions/listenリクエストのresourceSubscriptionsに URI を指定し、そのストリームで更新を受け取ります。2025 年代のクライアントはresources/subscribeを呼び出します
プロトコルのバージョン
サーバーは、同じプロセスから標準入出力経由で両方のプロトコル世代に対応します。クライアントの最初のメッセージによって接続の世代が決まります。2026-07-28 クライアントは server/discover で接続を開始し、各リクエストでプロトコルのバージョン、ID、機能を送信します。2025 年代のクライアントは initialize ハンドシェイクで接続を開始します。どちらも同じツールとリソースを使用します。
要件
サーバーを npx 経由またはソースから実行する場合は、Node.js 24 以降が必要です。
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"
]
}
}
}
Windows では、npx を起動するために cmd /c を使用します:
{
"mcpServers": {
"memory": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
カスタム設定を使用する NPX
サーバーは、以下の環境変数を使用して設定できます:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/custom/memory.jsonl"
}
}
}
}
Windows では、次を使用します:
{
"mcpServers": {
"memory": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-memory"
],
"env": {
"MEMORY_FILE_PATH": "/path/to/custom/memory.jsonl"
}
}
}
}
MEMORY_FILE_PATH:メモリ保存用 JSONL ファイルのパス(デフォルト:サーバーディレクトリ内のmemory.jsonl)
クライアント間で同じメモリファイルを共有する
各 MCP クライアントはそれぞれ独自のサーバープロセスを起動するため、同じ MEMORY_FILE_PATH(または両方でデフォルト値)を使用する 2 つのクライアントは、1 つのファイルに書き込む 2 つのプロセスになります。すべての書き込みツールは、グラフの読み取り、変更、保存中、メモリファイルの隣にある排他ロックファイル <memory file>.lock を取得します。そのため、異なるプロセスからの書き込みは順番に実行され、書き込みが失われることはありません。ロックファイルは書き込み中のみ存在するため、メモリファイルを格納するディレクトリには書き込み権限が必要です(アトミック保存にも同じ権限が必要です)。
- 書き込み中にクラッシュしたサーバーが残したロックは自動的に削除されます。同じマシン上でプロセスの終了が確認できる場合は直ちに、それ以外の場合は更新されない状態が 30 秒続くと削除されます(ロックを保持しているサーバーは、処理中に 15 秒ごとにロックを更新します)。一度に古いロックを解除できる待機中のサーバーは 1 つだけです。これは、一時的な
<memory file>.lock.breakファイルで制御されます。 - 60 秒以内にロックを取得できなかった書き込みは、ファイルを上書きせず、ツールエラーになります。
- このロックは排他ファイル作成に依存しており、ローカルファイルシステムでは利用できます。この仕組みを尊重しないネットワークファイルシステムでは、安全に共有できません。
VS Code のインストール手順
すばやくインストールするには、以下のワンクリックインストールボタンのいずれかを使用してください。
手動でインストールする場合は、以下のいずれかの方法で MCP サーバーを設定できます。
方法 1:ユーザー設定(推奨)
ユーザーレベルの MCP 設定ファイルに設定を追加します。コマンドパレット(Ctrl + Shift + P)を開き、MCP: Open User Configuration を実行します。ユーザーの mcp.json ファイルが開くので、そこにサーバー設定を追加できます。
方法 2:ワークスペース設定
または、ワークスペース内の .vscode/mcp.json というファイルに設定を追加できます。これにより、設定を他のユーザーと共有できます。
VS Code での MCP 設定の詳細については、VS Code の公式 MCP ドキュメントをご覧ください。
NPX
{
"servers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
Windows では、次を使用してください。
{
"servers": {
"memory": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}
Docker
{
"servers": {
"memory": {
"command": "docker",
"args": [
"run",
"-i",
"-v",
"claude-memory:/app/dist",
"--rm",
"mcp/memory"
]
}
}
}
システムプロンプト
メモリを活用するためのプロンプトは、ユースケースによって異なります。プロンプトを変更すると、メモリを作成する頻度や種類をモデルが判断しやすくなります。
以下は、チャットをパーソナライズするためのプロンプト例です。このプロンプトは、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
c) Store facts about them as observations
ビルド
Docker:
docker build -t mcp/memory -f src/memory/Dockerfile .
注意:以前の mcp/memory ボリュームには、 新しいコンテナによって上書きされる可能性がある index.js ファイルが含まれています。ストレージに Docker ボリュームを使用している場合は、新しいコンテナを起動する前に、古い Docker ボリュームの index.js ファイルを削除してください。
ライセンス
この MCP サーバーは MIT ライセンスの下でライセンスされています。つまり、MIT ライセンスの利用規約に従うことを条件に、ソフトウェアを自由に使用、変更、配布できます。詳細については、プロジェクトリポジトリの LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。