mem0 Memory System

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Supports Google's AI models for memory functionality and context management

  • Draws inspiration from LangChain for memory management capabilities

  • Provides integration with Ollama for local LLM support and embedding generation

@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 つのストレージ モードをサポートしています。

  1. クラウド ストレージ モード☁️ (推奨)
    • Mem0 APIキーが必要です( MEM0_API_KEY環境変数として提供されます)
    • 記憶はMem0のクラウドサーバーに永続的に保存されます
    • ローカルデータベースは不要
  2. ローカルストレージモード💾
    • OpenAI API キーが必要です ( OPENAI_API_KEY環境変数として提供されます)
    • メモリはメモリ内のベクトルデータベースに保存されます(デフォルトでは非永続的)
    • 永続ストレージが設定されていない限り、サーバーを再起動するとデータが失われます

インストールと設定 ⚙️

このサーバーは主に 2 つの方法で実行できます。

1. npxを使用する(手軽に使う場合におすすめ)

npm を使用してパッケージをグローバルにインストールします。

npm install -g @pinkpixel/mem0-mcp

npxを使用してサーバーを実行するように MCP クライアント (Claude Desktop、Cursor、Cline、Roo Code など) を構成します。

クラウド ストレージ構成 (推奨)

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

注: "YOUR_MEM0_API_KEY_HERE"実際の Mem0 API キーに置き換えます。

ローカルストレージ構成(代替)

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

注: "YOUR_OPENAI_API_KEY_HERE"実際の OpenAI API キーに置き換えます。

2. クローンリポジトリから実行

注意: この方法では、最初にリポジトリを git clone する必要があります。

リポジトリをクローンし、依存関係をインストールして、サーバーを構築します。

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install npm run build

次に、 nodeを使用してビルドされたスクリプトを直接実行するように MCP クライアントを構成します。

{ "mcpServers": { "mem0-mcp": { "command": "node", "args": [ "/absolute/path/to/mem0-mcp/build/index.js" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" // OR use "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE" for local storage }, "disabled": false, "alwaysAllow": [ "add_memory", "search_memory" ] } } }

重要な注意事項:

  1. /absolute/path/to/mem0-mcp/をクローンしたリポジトリへの実際の絶対パスに置き換えます。
  2. src/index.tsファイルではなく、 build/index.jsファイルを使用してください。
  3. MCP サーバーはプロトコル通信のためにクリーンな stdout を必要とします。stdout に書き込むライブラリやコードはプロトコルに干渉する可能性があります。

デフォルトのユーザー ID (オプションのフォールバック)

add_memorysearch_memoryツールの両方で、メモリを特定のユーザーに関連付けるにはuserId引数が必要です。

テスト中やシングルユーザーシナリオでの利便性のため、サーバー起動時にDEFAULT_USER_ID環境変数を設定することができます。この変数が設定されており、 search_memoryツールの呼び出し時にuserId引数が省略されている場合、サーバーは検索にDEFAULT_USER_IDの値を使用します。

**注:**このフォールバックが存在する場合、あいまいさを避けるために、呼び出しエージェント (LLM) がメモリの追加と検索の両方に対して正しいuserId明示的に提供することが一般的に推奨されます。

DEFAULT_USER_IDを使用した構成例:

{ "mcpServers": { "mem0-mcp": { "command": "npx", "args": [ "-y", "@pinkpixel/mem0-mcp" ], "env": { "MEM0_API_KEY": "YOUR_MEM0_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, } } }

または、 nodeで直接実行する場合:

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install npm run build
{ "mcpServers": { "mem0-mcp": { "command": "node", "args": [ "path/to/mem0-mcp/build/index.js" ], "env": { "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE", "DEFAULT_USER_ID": "user123" }, } } }

クラウド vs. ローカルストレージ 🔄

クラウドストレージ(Mem0 API)

  • デフォルトで永続的- セッションやサーバーの再起動後も記憶は利用可能
  • ローカルデータベースは不要- すべてのデータはMem0のサーバーに保存されます
  • より高い検索品質- Mem0の最適化された検索アルゴリズムを使用
  • 追加フィールド- agent_idthresholdパラメータをサポート
  • 必要なもの- Mem0 APIキー

ローカルストレージ(OpenAI API)

  • デフォルトでメモリ内- データはRAMにのみ保存され、長期保存されません。キャッシュが行われる場合もありますが、永続的な保存には利用しないでください。
  • データ損失のリスク- サーバーの再起動、システムの再起動、またはプロセスが終了した場合、メモリデータが失われます。
  • 推奨用途- 開発、テスト、または一時的な使用のみ
  • 永続的なストレージの場合- 信頼性の高い長期メモリが必要な場合は、Mem0 API でクラウド ストレージ オプションを使用します。
  • OpenAI埋め込みを使用- ベクトル検索機能用
  • 自己完結型- すべてのデータはマシン上に残ります
  • 必要なもの- OpenAI APIキー

開発💻

リポジトリをクローンし、依存関係をインストールします。

git clone https://github.com/pinkpixel-dev/mem0-mcp cd mem0-mcp npm install

サーバーを構築します。

npm run build

ファイルの変更時に自動再構築する開発の場合:

npm run watch

デバッグ🐞

MCPサーバーはstdio経由で通信するため、デバッグが困難になる場合があります。以下にいくつかのアプローチを示します。

  1. MCP インスペクターを使用する: このツールは、MCP プロトコル通信を監視できます。
npm run inspector
  1. コンソールログ: コンソールログを追加するときは、MCPプロトコルに干渉しないように、常にconsole.error()``console.log()を使用してください。
  2. 環境ファイル: ローカル開発では.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ツールを呼び出す際にメタデータオブジェクトにパラメータを含めます。例:

{ "content": "Important information to remember", "userId": "user123", "sessionId": "project-abc", "metadata": { "includes": "important context", "excludes": "sensitive data", "immutable": true, "expiration_date": "2025-12-31", "custom_instructions": "Prioritize this memory for financial questions", "version": "v2" } }

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ツールで複雑なフィルターを使用する例:

{ "query": "What are Alice's hobbies?", "userId": "user123", "filters": { "AND": [ { "user_id": "alice" }, { "agent_id": {"in": ["travel-agent", "sports-agent"]} } ] }, "threshold": 0.5, "top_k": 5 }

これは、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.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

複数の LLM プロバイダーをサポートし、MCP サーバーとしても、直接ライブラリ統合としても使用できる AI アプリケーション向けの柔軟なメモリ システムで、明示的なコマンドなしで自律的なメモリ管理を可能にします。

  1. Features 🧠
    1. Tools
  2. Prerequisites 🔑
    1. Installation & Configuration ⚙️
      1. 1. Using npx (Recommended for quick use)
      2. 2. Running from Cloned Repository
      3. Default User ID (Optional Fallback)
    2. Cloud vs. Local Storage 🔄
      1. Cloud Storage (Mem0 API)
      2. Local Storage (OpenAI API)
    3. Development 💻
      1. Debugging 🐞
        1. Technical Implementation Notes 🔧
          1. Advanced Mem0 API Parameters
          2. SafeLogger
          3. Environment Variables
        ID: fd4ya2uyoa