optimized-memory-mcp-server について
optimized-memory-mcp-serverは、SQLiteを使ってローカルの知識グラフに記憶を保存するPython製MCPサーバーです。チャットをまたいで情報を保持・検索したいClaudeなどのMCPクライアント向けです。
主な機能
- 01ローカル知識グラフへの永続保存
- 02タイプと観察記録を持つエンティティ
- 03エンティティ間の有向関係
- 04グラフノードの検索と取得
- 05グラフデータの作成と削除
活用シーン
- 01チャットをまたいだユーザー情報の保持
- 02エンティティに関する観察記録の検索
- 03人物と組織の関係の記録
MCP 対応
知識グラフ内のエンティティ、観察記録、関係を作成・読み取り・検索・削除するツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
optimized-memory-mcp-server
これは、Claude AI のコーディング能力に加え、優れた AI ワークフローとプロンプト設計をテストし、実演するためのものです。 SQLite をバックエンドとして使用する Python Memory MCP Server(公式のものは Java で実装されていると思います)をフォークしたものです。
Knowledge Graph Memory Server
ローカルのナレッジグラフを使用した、永続メモリの基本的な実装です。これにより、Claude はチャットをまたいでユーザーに関する情報を記憶できます。
コアコンセプト
エンティティ
エンティティはナレッジグラフの主要なノードです。各エンティティには以下が含まれます。
- 一意の名前(識別子)
- エンティティタイプ(例:「人物」、「組織」、「イベント」)
- 観察事項のリスト
例:
{
"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 に追加します。
Docker
{
"mcpServers": {
"memory": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/memory"]
}
}
}
NPX
{
"mcpServers": {
"memory": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-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
b) Store facts about them as observations
ビルド
Docker:
docker build -t mcp/memory -f src/memory/Dockerfile .
ライセンス
この MCP サーバーは MIT ライセンスの下でライセンスされています。これは、MIT ライセンスの利用規約に従うことを条件に、このソフトウェアを自由に使用、変更、配布できることを意味します。詳細については、プロジェクトリポジトリの LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。