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

MCP-Mem0: Long-Term Memory for AI Agents

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

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

MCP-Mem0 は、Mem0 を用いた MCP サーバーのテンプレートで、AI エージェントに永続的な長期記憶を提供します。Python で実装され、保存した記憶のセマンティック検索に対応します。そのまま利用することも、独自の MCP サーバーを構築する際の参考にすることもできます。

主な機能

  1. 01記憶の保存、全件取得、セマンティック検索の三つのツール
  2. 02Mem0 と PostgreSQL または Supabase によるベクトル保存
  3. 03SSE と stdio の二つのトランスポート方式
  4. 04uv または Docker での実行形態
  5. 05独自の Python MCP サーバーを作成するためのテンプレート

活用シーン

  1. 01セッションをまたいで記憶を保持する AI エージェントの構築
  2. 02Python による MCP サーバー開発の出発点
  3. 03AI コーディングアシスタントへの構成例の提示

MCP 対応

このサーバーは save_memory、get_all_memories、search_memories の三つのツールを MCP クライアントに公開し、クライアントは SSE または stdio で接続できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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 つのサーバーを複数のクライアントで再利用できます。