MCP Memory with Redis Graph について
LLMとの会話の記憶をRedis Graphにナレッジグラフとして保存するMCPサーバーです。複数の記憶タイプ、検索、記憶間の関連付けに対応します。
主な機能
- 01複数タイプの記憶を保存
- 02タイプやキーワードで記憶を検索
- 03記憶間の関連を作成・取得
- 04記憶の更新と削除
活用シーン
- 01会話の長期的なコンテキスト保持
- 02プロジェクト情報や問題の記録
- 03関連するタスクや記憶の連結
MCP 対応
MCPサーバーは、記憶グラフ項目の保存、取得、検索、更新、削除のほか、記憶間の関連を作成・取得するツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Redis Graph を使用した MCP メモリー
このプロジェクトは、長期メモリーの保存に Redis Graph を使用する、LLM との会話向けメモリーシステムを実装します。
セットアップ
前提条件
- Docker と Docker Compose
- Node.js(v16 以降)
RedisGraph を使用して Redis を実行する
- RedisGraph モジュールを含む Redis コンテナを起動します。
docker-compose up -d
- RedisGraph モジュールを含む Redis が実行中であることを確認します。
docker exec -it mcp-memory-redis-1 redis-cli
Redis CLI を開いたら、RedisGraph モジュールが読み込まれているか確認できます。
127.0.0.1:6379> MODULE LIST
読み込まれたモジュールの一覧に RedisGraph が表示されます。
アプリケーションから Redis に接続する
アプリケーションは src/index.ts の設定を使用して Redis に接続します。デフォルトでは、次の設定で接続します。
- ホスト:localhost
- ポート:6379
これらの設定を変更する必要がある場合は、src/index.ts の Redis クライアント設定を更新してください。
使用方法
- 依存関係をインストールします。
npm install
- アプリケーションを起動します。
npm start
メモリーツール
アプリケーションには、メモリーを管理するためのツールが用意されています。
create_memory:新しいメモリーを作成しますretrieve_memory:ID を指定してメモリーを取得しますsearch_memories:種類またはキーワードでメモリーを検索しますupdate_memory:既存のメモリーを更新しますdelete_memory:メモリーを削除しますcreate_relation:メモリー間の関係を作成しますget_related_memories:特定のメモリーに関連するメモリーを取得します
使用例
// Create a memory
const memory = await memoryService.createMemory({
type: MemoryNodeType.CONVERSATION,
content: 'This is a conversation about Redis Graph',
title: 'Redis Graph Discussion',
});
// Search for memories
const memories = await memoryService.searchMemories(
{ keyword: 'Redis' },
{ limit: 10, orderBy: 'created', direction: 'DESC' },
);
概要
MCP Memory は、LLM との会話からメモリーを保存および取得するためのツールを提供するサーバーです。バックエンドとして Redis Graph を使用してメモリーのナレッジグラフを作成し、情報間の複雑な関係を扱えるようにします。
機能
- さまざまな種類のメモリーを保存します(会話、プロジェクト、タスク、課題、設定、財務、やること)
- メモリー間の関係を作成します
- さまざまな条件に基づいてメモリーを検索および取得します
- メモリーを更新および削除します
メモリーの種類
このシステムは、さまざまな状況に対応できるよう、複数の種類のメモリーをサポートしています。
- 会話:一般的な会話のメモリー
- トピック:話し合った特定のトピック
- プロジェクト:プロジェクトの詳細(例:法定通貨ベンダーを無効化するスクリプト)
- タスク:実行する具体的なタスク
- 課題:バグやインシデント
- 設定:設定の詳細(例:手数料に関する製品設定)
- 財務:金融に関するアドバイスや情報
- やること:やること項目
使用例
1. プロジェクトの詳細
プロジェクト、設定、システムに関する情報を保存します。
create_memory(
type: "Project",
name: "Fiat Vendor Disable Script",
description: "Script to disable fiat vendors in the system",
content: "The script is located at /scripts/disable-vendor.js and takes vendor ID as parameter"
)
2. 課題への対応
バグやインシデントを記録します。
create_memory(
type: "Issue",
title: "Payment Processing Timeout",
severity: "high",
status: "open",
content: "Payments are timing out when processing large transactions over $10,000"
)
3. 個人向けの金融アドバイス
金融に関するアドバイスを保存します。
create_memory(
type: "Finance",
category: "Investment",
content: "Recommendation to allocate 60% to index funds, 30% to bonds, and 10% to speculative investments",
metadata: {
riskProfile: "moderate",
timeHorizon: "long-term"
}
)
4. 仕事関連のやること項目
実行するタスクを保存します。
create_memory(
type: "Todo",
title: "Update payment network documentation",
priority: "medium",
completed: false,
content: "Update the documentation to include the new payment networks: Visa Direct and MasterCard Send"
)
メモリー間の関係
メモリー間の関係を作成して、ナレッジグラフを構築できます。
create_relation(
fromId: "issue-123",
toId: "project-456",
type: "PART_OF"
)
メモリーの検索
さまざまな条件に基づいてメモリーを検索します。
search_memories(
type: "Project",
keyword: "payment",
limit: 10
)
アーキテクチャ
このシステムは Redis Graph を使用して、グラフデータベースのノードとしてメモリーを保存します。各メモリーはプロパティを持つノードであり、メモリー間の関係はグラフ内のエッジです。
MCP サーバーはメモリーグラフを操作するためのツールを提供し、LLM が必要に応じて情報を保存および取得できるようにします。
ライセンス
ISC
Redis Graph の操作
Redis CLI ヘルパーの使用
Redis に接続し、一般的な RedisGraph コマンドを表示するヘルパースクリプトを用意しています。
npm run redis:cli
メモリーグラフを操作する際に便利なコマンドの一覧を含む Redis CLI セッションが開きます。
グラフの確認
メモリーグラフの現在の状態を確認するには、次を実行します。
npm run check:graph
グラフ内のすべてのノード、財務メモリー、関係が表示されます。
グラフの詳細な確認
グラフのスキーマと内容をさらに詳しく確認するには、次を実行します。
npm run inspect:graph
よく使用する RedisGraph コマンド
redis-cli で実行できる便利なコマンドを以下に示します。
-
すべてのグラフを一覧表示します。
GRAPH.LIST -
すべてのノード数を数えます。
GRAPH.QUERY memory "MATCH (n) RETURN count(n)" -
財務メモリーを表示します。
GRAPH.QUERY memory "MATCH (n:Finance) RETURN n.id, n.title, n.content" -
特定の内容を検索します。
GRAPH.QUERY memory "MATCH (n) WHERE n.content CONTAINS 'debit card' RETURN n.id, n.type, n.content" -
関係を表示します。
GRAPH.QUERY memory "MATCH (a)-[r]->(b) RETURN a.id, type(r), b.id"
Docker で実行する
MCP Memory サーバーを Docker で実行するには、次のコマンドを実行します。
# Build the Docker image
docker build -t mcp/memory .
# Run the container on the same network as Redis
docker run --rm -i --network=mcp-memory_default -e REDIS_URL=redis://redis:6379 mcp/memory
テスト
いくつかのテストスクリプトを用意しています。
# Test Redis connection
npm run test:redis
# Test memory operations
npm run test:memory
# Test memory service
npm run test:service
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。