@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.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
複数の LLM プロバイダーをサポートし、MCP サーバーとしても、直接ライブラリ統合としても使用できる AI アプリケーション向けの柔軟なメモリ システムで、明示的なコマンドなしで自律的なメモリ管理を可能にします。
Related Resources
Related MCP Servers
- -securityFlicense-qualityAn MCP server that allows Claude and other LLMs to manage persistent memories across conversations through text file storage, enabling commands to add, search, delete and list memory entries.Last updated -2TypeScript
- -securityAlicense-qualityAn MCP server that provides persistent memory capabilities for Claude, offering tiered memory architecture with semantic search, memory consolidation, and integration with the Claude desktop application.Last updated -5PythonMIT License
- -securityAlicense-qualityAn MCP-native server that enables intelligent task delegation from advanced AI agents like Claude to more cost-effective LLMs, optimizing for cost while maintaining output quality.Last updated -80PythonMIT License
- -securityAlicense-qualityA Model Context Protocol server that provides AI agents with persistent memory capabilities through Mem0, allowing them to store, retrieve, and semantically search memories.Last updated -2PythonMIT License