mcpField
M
MCP-Mem0: Long-Term Memory for AI Agents

MCP-Mem0: Long-Term Memory for AI Agents

ローカル
github.com/gustavoserafimメモリ・ナレッジ173 週間前に更新

MCP-Mem0: Long-Term Memory for AI Agents について

MCP-Mem0 は、Mem0 を統合した永続メモリー用の MCP サーバーテンプレートです。MCP サーバーを開発する人や、記憶の保存・取得・セマンティック検索が必要なエージェント向けです。

主な機能

  1. 01セマンティック索引付き長期メモリーの保存
  2. 02保存済みメモリーの一括取得
  3. 03関連メモリーのセマンティック検索
  4. 04独自 MCP サーバー向けテンプレート

活用シーン

  1. 01エージェントに情報を長期保存
  2. 02会話に関連するメモリーの取得
  3. 03テンプレートを基に独自 MCP サーバーを構築

MCP 対応

この MCP サーバーは、互換クライアントにメモリーの保存・取得・検索ツールを公開し、stdio と SSE のトランスポートに対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP-Mem0:AI エージェント向けの長期メモリ

Mem0 と MCP の統合

AI エージェントに永続的なメモリ機能を提供するため、Mem0 と統合した Model Context Protocol (MCP) サーバーのテンプレート実装です。

これを参考にして独自の MCP サーバーを構築するか、AI コーディングアシスタントに例として渡し、構造とコードの正確性についてこの例に従うよう指示してください!

概要

このプロジェクトでは、AI エージェントがセマンティック検索を使用してメモリを保存、取得、検索できる MCP サーバーの構築方法を紹介します。Mem0 のみを使用した実用的な例を通じて、独自の MCP サーバーを作成するための実践的なテンプレートを提供します。

この実装は、MCP サーバー構築に関して Anthropic が定めたベストプラクティスに従っており、あらゆる MCP 対応クライアントとシームレスに統合できます。

機能

サーバーは、次の3つの基本的なメモリ管理ツールを提供します。

  1. save_memory:セマンティックインデックスを使用して、あらゆる情報を長期メモリに保存します
  2. get_all_memories:保存されているすべてのメモリを取得し、包括的なコンテキストを提供します
  3. search_memories:セマンティック検索を使用して、関連するメモリを見つけます

前提条件

  • Python 3.12+
  • Supabase または任意の PostgreSQL データベース(メモリのベクトルストレージ用)
  • 選択した LLM プロバイダー(OpenAI、OpenRouter、Ollama)の API キー
  • MCP サーバーをコンテナとして実行する場合は Docker(推奨)

インストール

uv を使用する場合
  1. uv がインストールされていない場合は、インストールします:

    pip install uv
    
  2. このリポジトリをクローンします:

    git clone https://github.com/coleam00/mcp-mem0.git
    cd mcp-mem0
    
  3. 依存関係をインストールします:

    uv pip install -e .
    
  4. .env.example を基に .env ファイルを作成します:

    cp .env.example .env
    
  5. .env ファイルで環境変数を設定します(「設定」セクションを参照)

Docker を使用する場合(推奨)
  1. Docker イメージをビルドします:

    docker build -t mcp/mem0 --build-arg PORT=8050 .
    
  2. .env.example を基に .env ファイルを作成し、環境変数を設定します

設定

.env ファイルでは、次の環境変数を設定できます。

変数説明例
TRANSPORTトランスポートプロトコル(sse または stdio)sse
HOSTSSE トランスポートを使用する際にバインドするホスト0.0.0.0
PORTSSE トランスポートを使用する際にリッスンするポート8050
LLM_PROVIDERLLM プロバイダー(openai、openrouter、または ollama)openai
LLM_BASE_URLLLM API のベース URLhttps://api.openai.com/v1
LLM_API_KEYLLM プロバイダーの API キーsk-...
LLM_CHOICE使用する LLM モデルgpt-4o-mini
EMBEDDING_MODEL_CHOICE使用する埋め込みモデルtext-embedding-3-small
DATABASE_URLPostgreSQL 接続文字列postgresql://user:pass@host:port/db

サーバーの実行

uv を使用する場合
SSE トランスポート
# Set TRANSPORT=sse in .env then:
uv run src/main.py

MCP サーバーは基本的に API エンドポイントとして実行されます。以下に示す設定を使用して接続できます。

Stdio トランスポート

stdio の場合、MCP クライアント自体が MCP サーバーを起動できるため、この時点で実行するものはありません。

Docker を使用する場合
SSE トランスポート
docker run --env-file .env -p:8050:8050 mcp/mem0

MCP サーバーは基本的にコンテナ内で API エンドポイントとして実行されます。以下に示す設定を使用して接続できます。

Stdio トランスポート

stdio の場合、MCP クライアント自体が MCP サーバーのコンテナを起動できるため、この時点で実行するものはありません。

MCP クライアントとの統合

SSE の設定

SSE トランスポートでサーバーを起動したら、次の設定を使用して接続できます。

{
  "mcpServers": {
    "mem0": {
      "transport": "sse",
      "url": "http://localhost:8050/sse"
    }
  }
}

Windsurf ユーザーへの注意:設定では url の代わりに serverUrl を使用してください。

{
  "mcpServers": {
    "mem0": {
      "transport": "sse",
      "serverUrl": "http://localhost:8050/sse"
    }
  }
}

n8n ユーザーへの注意:n8n は自身のコンテナーの外にあるホストマシンへアクセスする必要があるため、localhost の代わりに host.docker.internal を使用してください。

そのため、MCP ノードで使用する完全な URL は次のとおりです: http://host.docker.internal:8050/sse

デフォルトの 8050 以外の値を使用する場合は、ポートを忘れずに更新してください。

Stdio を使用する Python の設定

このサーバーを、Claude Desktop、Windsurf、その他の MCP クライアントの MCP 設定に追加してください。

{
  "mcpServers": {
    "mem0": {
      "command": "your/path/to/mcp-mem0/.venv/Scripts/python.exe",
      "args": ["your/path/to/mcp-mem0/src/main.py"],
      "env": {
        "TRANSPORT": "stdio",
        "LLM_PROVIDER": "openai",
        "LLM_BASE_URL": "https://api.openai.com/v1",
        "LLM_API_KEY": "YOUR-API-KEY",
        "LLM_CHOICE": "gpt-4o-mini",
        "EMBEDDING_MODEL_CHOICE": "text-embedding-3-small",
        "DATABASE_URL": "YOUR-DATABASE-URL"
      }
    }
  }
}
Stdio を使用する Docker の設定
{
  "mcpServers": {
    "mem0": {
      "command": "docker",
      "args": ["run", "--rm", "-i", 
               "-e", "TRANSPORT", 
               "-e", "LLM_PROVIDER", 
               "-e", "LLM_BASE_URL", 
               "-e", "LLM_API_KEY", 
               "-e", "LLM_CHOICE", 
               "-e", "EMBEDDING_MODEL_CHOICE", 
               "-e", "DATABASE_URL", 
               "mcp/mem0"],
      "env": {
        "TRANSPORT": "stdio",
        "LLM_PROVIDER": "openai",
        "LLM_BASE_URL": "https://api.openai.com/v1",
        "LLM_API_KEY": "YOUR-API-KEY",
        "LLM_CHOICE": "gpt-4o-mini",
        "EMBEDDING_MODEL_CHOICE": "text-embedding-3-small",
        "DATABASE_URL": "YOUR-DATABASE-URL"
      }
    }
  }
}

独自のサーバーを構築する

このテンプレートは、より複雑な MCP サーバーを構築するための土台となります。独自のサーバーを構築するには、次の手順を実行してください。

  1. @mcp.tool() デコレーターを使ったメソッドを作成して、独自のツールを追加します
  2. クライアント、データベース接続などの独自の依存関係を追加するために、独自のライフスパン関数を作成します
  3. MCP サーバーに必要なヘルパー関数があれば、utils.py ファイルを変更します
  4. @mcp.resource() と @mcp.prompt() を使って、プロンプトやリソースを追加することもできます

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。