hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
@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
(文字列、オプション) - 指定されたメモリを完全に削除します。
- 意味的類似性に基づいて関連するメモリを検索します。
- 入力:
前提条件🔑
このサーバーは、次の 2 つのストレージ モードをサポートしています。
- クラウド ストレージ モード☁️ (推奨)
- Mem0 APIキーが必要です(
MEM0_API_KEY
環境変数として提供されます) - 記憶はMem0のクラウドサーバーに永続的に保存されます
- ローカルデータベースは不要
- Mem0 APIキーが必要です(
- ローカルストレージモード💾
- OpenAI API キーが必要です (
OPENAI_API_KEY
環境変数として提供されます) - メモリはメモリ内のベクトルデータベースに保存されます(デフォルトでは非永続的)
- 永続ストレージが設定されていない限り、サーバーを再起動するとデータが失われます
- OpenAI API キーが必要です (
インストールと設定 ⚙️
このサーバーは主に 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
の高度なパラメータ:
パラメータ | タイプ | 説明 |
---|---|---|
metadata | 物体 | メモリに関する追加のコンテキスト(例:場所、時間、識別子)を保存します。これは、検索時のフィルタリングに使用できます。 |
includes | 弦 | メモリに含める特定の設定。 |
excludes | 弦 | メモリから除外する特定の設定。 |
infer | ブール値 | メモリを推測するか、メッセージを直接保存するか (デフォルト: true)。 |
output_format | 弦 | フォーマットのバージョン。v1.0 (デフォルト、非推奨) または v1.1 (推奨) のいずれか。 |
custom_categories | 物体 | 名前と説明が付いたカテゴリのリスト。 |
custom_instructions | 弦 | メモリの処理と整理に関するプロジェクト固有のガイドライン。 |
immutable | ブール値 | メモリが不変かどうか (デフォルト: false)。 |
expiration_date | 弦 | メモリの有効期限 (形式: YYYY-MM-DD)。 |
org_id | 弦 | このメモリに関連付けられた組織 ID。 |
project_id | 弦 | このメモリに関連付けられたプロジェクト ID。 |
version | 弦 | メモリ バージョン (v1 は非推奨、新しいアプリケーションには v2 が推奨されます)。 |
MCPサーバーでこれらのパラメータを使用するには、 add_memory
ツールを呼び出す際にメタデータオブジェクトにパラメータを含めます。例:
search_memory
の高度なパラメータ:
Mem0 v2 検索 API は、 filters
パラメータを通じて利用できる強力なフィルタリング機能を提供します。
パラメータ | タイプ | 説明 |
---|---|---|
filters | 物体 | 論理演算子と比較条件を使用した複雑なフィルター |
top_k | 整数 | 返される上位結果の数(デフォルト: 10) |
fields | 弦[] | 応答に含める特定のフィールド |
rerank | ブール値 | メモリを再ランク付けするかどうか(デフォルト:false) |
keyword_search | ブール値 | キーワードに基づいて検索するかどうか(デフォルト:false) |
filter_memories | ブール値 | 思い出をフィルタリングするかどうか(デフォルト:false) |
threshold | 番号 | 結果の最小類似度しきい値(デフォルト: 0.3) |
org_id | 弦 | 記憶をフィルタリングするための組織ID |
project_id | 弦 | 記憶をフィルタリングするためのプロジェクトID |
filters
パラメータは、複雑な論理演算 (AND、OR) とさまざまな比較演算子をサポートします。
オペレーター | 説明 |
---|---|
in | 指定された値のいずれかに一致する |
gte | より大きいか等しい |
lte | 以下 |
gt | より大きい |
lt | 未満 |
ne | 等しくない |
icontains | 大文字と小文字を区別しない包含チェック |
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 が ❤️ を込めて作りました
You must be authenticated.
複数の LLM プロバイダーをサポートし、MCP サーバーとしても、直接ライブラリ統合としても使用できる AI アプリケーション向けの柔軟なメモリ システムで、明示的なコマンドなしで自律的なメモリ管理を可能にします。
- Features 🧠
- Prerequisites 🔑
- Installation & Configuration ⚙️
- Cloud vs. Local Storage 🔄
- Development 💻
- Debugging 🐞
- Technical Implementation Notes 🔧