@pinkpixel/mem0-mcp MCP サーバー ✨
Mem0.aiと統合し、LLMに永続メモリ機能を提供するモデルコンテキストプロトコル(MCP)サーバー。AIエージェントがセッションをまたいで情報を保存・取得できるようにします。
このサーバーは、コア機能としてmem0ai Node.js SDK を使用します。
機能🧠
ツール
add_memory: テキスト コンテンツを特定のuserIdに関連付けられたメモリとして保存します。入力:
content(文字列、必須)、userId(文字列、必須)、sessionId(文字列、オプション)、agentId(文字列、オプション)、metadata(オブジェクト、オプション)提供されたテキストを保存し、将来のやり取りで呼び出すことができるようにします。
search_memory: 特定のuserIdに対する自然言語クエリに基づいて、保存されたメモリを検索します。入力:
query(文字列、必須)、userId(文字列、必須)、sessionId(文字列、オプション)、agentId(文字列、オプション)、filters(オブジェクト、オプション)、threshold(数値、オプション)意味的類似性に基づいて関連するメモリを検索します。
delete_memory: ID によって特定のメモリをストレージから削除します。入力:
memoryId(文字列、必須)、userId(文字列、必須)、sessionId(文字列、オプション)、agentId(文字列、オプション)指定されたメモリを完全に削除します。
意味的類似性に基づいて関連するメモリを検索します。
Related MCP server: MCP Titan
前提条件🔑
このサーバーは、次の 2 つのストレージ モードをサポートしています。
クラウド ストレージ モード☁️ (推奨)
Mem0 APIキーが必要です(
MEM0_API_KEY環境変数として提供されます)記憶はMem0のクラウドサーバーに永続的に保存されます
ローカルデータベースは不要
ローカルストレージモード💾
OpenAI API キーが必要です (
OPENAI_API_KEY環境変数として提供されます)メモリはメモリ内のベクトルデータベースに保存されます(デフォルトでは非永続的)
永続ストレージが設定されていない限り、サーバーを再起動するとデータが失われます
インストールと設定 ⚙️
このサーバーは主に 2 つの方法で実行できます。
1. npxを使用する(手軽に使う場合におすすめ)
npm を使用してパッケージをグローバルにインストールします。
npxを使用してサーバーを実行するように MCP クライアント (Claude Desktop、Cursor、Cline、Roo Code など) を構成します。
クラウド ストレージ構成 (推奨)
注: "YOUR_MEM0_API_KEY_HERE"実際の Mem0 API キーに置き換えます。
ローカルストレージ構成(代替)
注: "YOUR_OPENAI_API_KEY_HERE"実際の OpenAI API キーに置き換えます。
2. クローンリポジトリから実行
注意: この方法では、最初にリポジトリを git clone する必要があります。
リポジトリをクローンし、依存関係をインストールして、サーバーを構築します。
次に、 nodeを使用してビルドされたスクリプトを直接実行するように MCP クライアントを構成します。
重要な注意事項:
/absolute/path/to/mem0-mcp/をクローンしたリポジトリへの実際の絶対パスに置き換えます。src/index.tsファイルではなく、build/index.jsファイルを使用してください。MCP サーバーはプロトコル通信のためにクリーンな stdout を必要とします。stdout に書き込むライブラリやコードはプロトコルに干渉する可能性があります。
デフォルトのユーザー ID (オプションのフォールバック)
add_memoryとsearch_memoryツールの両方で、メモリを特定のユーザーに関連付けるにはuserId引数が必要です。
テスト中やシングルユーザーシナリオでの利便性のため、サーバー起動時にDEFAULT_USER_ID環境変数を設定することができます。この変数が設定されており、 search_memoryツールの呼び出し時にuserId引数が省略されている場合、サーバーは検索にDEFAULT_USER_IDの値を使用します。
**注:**このフォールバックが存在する場合、あいまいさを避けるために、呼び出しエージェント (LLM) がメモリの追加と検索の両方に対して正しいuserId明示的に提供することが一般的に推奨されます。
DEFAULT_USER_IDを使用した構成例:
または、 nodeで直接実行する場合:
クラウド vs. ローカルストレージ 🔄
クラウドストレージ(Mem0 API)
デフォルトで永続的- セッションやサーバーの再起動後も記憶は利用可能
ローカルデータベースは不要- すべてのデータはMem0のサーバーに保存されます
より高い検索品質- Mem0の最適化された検索アルゴリズムを使用
追加フィールド-
agent_idとthresholdパラメータをサポート必要なもの- Mem0 APIキー
ローカルストレージ(OpenAI API)
デフォルトでメモリ内- データはRAMにのみ保存され、長期保存されません。キャッシュが行われる場合もありますが、永続的な保存には利用しないでください。
データ損失のリスク- サーバーの再起動、システムの再起動、またはプロセスが終了した場合、メモリデータが失われます。
推奨用途- 開発、テスト、または一時的な使用のみ
永続的なストレージの場合- 信頼性の高い長期メモリが必要な場合は、Mem0 API でクラウド ストレージ オプションを使用します。
OpenAI埋め込みを使用- ベクトル検索機能用
自己完結型- すべてのデータはマシン上に残ります
必要なもの- OpenAI APIキー
開発💻
リポジトリをクローンし、依存関係をインストールします。
サーバーを構築します。
ファイルの変更時に自動再構築する開発の場合:
デバッグ🐞
MCPサーバーはstdio経由で通信するため、デバッグが困難になる場合があります。以下にいくつかのアプローチを示します。
MCP インスペクターを使用する: このツールは、MCP プロトコル通信を監視できます。
コンソールログ: コンソールログを追加するときは、MCPプロトコルに干渉しないように、常に
console.error()``console.log()を使用してください。環境ファイル: ローカル開発では
.envファイルを使用して、API キーやその他の構成オプションの設定を簡素化します。
技術実装ノート 🔧
高度なMem0 APIパラメータ
Mem0 APIでCloud Storageモードを使用する場合、追加のパラメータを利用してより高度なメモリ管理を行うことができます。ツールスキーマでは明示的に公開されていませんが、メモリを追加する際にはmetadataオブジェクトに含めることができます。
add_memoryの高度なパラメータ:
パラメータ | タイプ | 説明 |
| 物体 | メモリに関する追加のコンテキスト(例:場所、時間、識別子)を保存します。これは、検索時のフィルタリングに使用できます。 |
| 弦 | メモリに含める特定の設定。 |
| 弦 | メモリから除外する特定の設定。 |
| ブール値 | メモリを推測するか、メッセージを直接保存するか (デフォルト: true)。 |
| 弦 | フォーマットのバージョン。v1.0 (デフォルト、非推奨) または v1.1 (推奨) のいずれか。 |
| 物体 | 名前と説明が付いたカテゴリのリスト。 |
| 弦 | メモリの処理と整理に関するプロジェクト固有のガイドライン。 |
| ブール値 | メモリが不変かどうか (デフォルト: false)。 |
| 弦 | メモリの有効期限 (形式: YYYY-MM-DD)。 |
| 弦 | このメモリに関連付けられた組織 ID。 |
| 弦 | このメモリに関連付けられたプロジェクト ID。 |
| 弦 | メモリ バージョン (v1 は非推奨、新しいアプリケーションには v2 が推奨されます)。 |
MCPサーバーでこれらのパラメータを使用するには、 add_memoryツールを呼び出す際にメタデータオブジェクトにパラメータを含めます。例:
search_memoryの高度なパラメータ:
Mem0 v2 検索 API は、 filtersパラメータを通じて利用できる強力なフィルタリング機能を提供します。
パラメータ | タイプ | 説明 |
| 物体 | 論理演算子と比較条件を使用した複雑なフィルター |
| 整数 | 返される上位結果の数(デフォルト: 10) |
| 弦[] | 応答に含める特定のフィールド |
| ブール値 | メモリを再ランク付けするかどうか(デフォルト:false) |
| ブール値 | キーワードに基づいて検索するかどうか(デフォルト:false) |
| ブール値 | 思い出をフィルタリングするかどうか(デフォルト:false) |
| 番号 | 結果の最小類似度しきい値(デフォルト: 0.3) |
| 弦 | 記憶をフィルタリングするための組織ID |
| 弦 | 記憶をフィルタリングするためのプロジェクトID |
filtersパラメータは、複雑な論理演算 (AND、OR) とさまざまな比較演算子をサポートします。
オペレーター | 説明 |
| 指定された値のいずれかに一致する |
| より大きいか等しい |
| 以下 |
| より大きい |
| 未満 |
| 等しくない |
| 大文字と小文字を区別しない包含チェック |
search_memoryツールで複雑なフィルターを使用する例:
これは、user_id が「alice」であり、agent_id が「travel-agent」または「sports-agent」のいずれかである Alice の趣味に関連する思い出を検索し、類似度スコアが少なくとも 0.5 である結果が最大 5 件返されます。
これらのパラメータの詳細については、 Mem0 API ドキュメントを参照してください。
セーフロガー
MCP サーバーは、MCP プロトコルを中断することなく、mem0ai ライブラリからの console.log 呼び出しを stderr に選択的にリダイレクトするSafeLoggerクラスを実装します。
console.log の呼び出しを傍受し、スタックトレースを調べてソースを特定します。
mem0ai ライブラリまたは独自のコードからのログ呼び出しのみをリダイレクトします
MCPプロトコル通信用のクリーンな標準出力を保持します
プロセス終了時にリソースを自動的にクリーンアップします
これにより、有用なデバッグ情報を維持しながら、MCP クライアント内で適切に機能できるようになります。
環境変数
サーバーは、その動作を制御するいくつかの環境変数を認識します。
MEM0_API_KEY: クラウドストレージモードのAPIキーOPENAI_API_KEY: ローカルストレージモード(埋め込み)のAPIキーDEFAULT_USER_ID: メモリ操作のデフォルトのユーザーID
Pink Pixel が ❤️ を込めて作りました