MCP-Mem0: Long-Term Memory for AI Agents について
MCP-Mem0 は、Mem0 を用いた MCP サーバーのテンプレートで、AI エージェントに永続的な長期記憶を提供します。Python で実装され、保存した記憶のセマンティック検索に対応します。そのまま利用することも、独自の MCP サーバーを構築する際の参考にすることもできます。
主な機能
- 01記憶の保存、全件取得、セマンティック検索の三つのツール
- 02Mem0 と PostgreSQL または Supabase によるベクトル保存
- 03SSE と stdio の二つのトランスポート方式
- 04uv または Docker での実行形態
- 05独自の Python MCP サーバーを作成するためのテンプレート
活用シーン
- 01セッションをまたいで記憶を保持する AI エージェントの構築
- 02Python による MCP サーバー開発の出発点
- 03AI コーディングアシスタントへの構成例の提示
MCP 対応
このサーバーは save_memory、get_all_memories、search_memories の三つのツールを MCP クライアントに公開し、クライアントは SSE または stdio で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-Mem0:AI エージェント向けの長期メモリ
AI エージェントに永続的なメモリ機能を提供するため、Mem0 と統合した Model Context Protocol (MCP) サーバーのテンプレート実装です。
これを参考にして独自の MCP サーバーを構築するか、AI コーディングアシスタントに例として渡し、構造とコードの正確性についてこの例に従うよう指示してください!
概要
このプロジェクトでは、AI エージェントがセマンティック検索を使用してメモリを保存、取得、検索できる MCP サーバーの構築方法を紹介します。Mem0 のみを使用した実用的な例を通じて、独自の MCP サーバーを作成するための実践的なテンプレートを提供します。
この実装は、MCP サーバー構築に関して Anthropic が定めたベストプラクティスに従っており、あらゆる MCP 対応クライアントとシームレスに統合できます。
機能
サーバーは、次の3つの基本的なメモリ管理ツールを提供します。
save_memory:セマンティックインデックスを使用して、あらゆる情報を長期メモリに保存しますget_all_memories:保存されているすべてのメモリを取得し、包括的なコンテキストを提供しますsearch_memories:セマンティック検索を使用して、関連するメモリを見つけます
前提条件
- Python 3.12+
- Supabase または任意の PostgreSQL データベース(メモリのベクトルストレージ用)
- 選択した LLM プロバイダー(OpenAI、OpenRouter、Ollama)の API キー
- MCP サーバーをコンテナとして実行する場合は Docker(推奨)
インストール
uv を使用する場合
-
uv がインストールされていない場合は、インストールします:
pip install uv -
このリポジトリをクローンします:
git clone https://github.com/coleam00/mcp-mem0.git cd mcp-mem0 -
依存関係をインストールします:
uv pip install -e . -
.env.exampleを基に.envファイルを作成します:cp .env.example .env -
.envファイルで環境変数を設定します(「設定」セクションを参照)
Docker を使用する場合(推奨)
-
Docker イメージをビルドします:
docker build -t mcp/mem0 --build-arg PORT=8050 . -
.env.exampleを基に.envファイルを作成し、環境変数を設定します
設定
.env ファイルでは、次の環境変数を設定できます。
| 変数 | 説明 | 例 |
|---|---|---|
TRANSPORT | トランスポートプロトコル(sse または stdio) | sse |
HOST | SSE トランスポートを使用する際にバインドするホスト | 0.0.0.0 |
PORT | SSE トランスポートを使用する際にリッスンするポート | 8050 |
LLM_PROVIDER | LLM プロバイダー(openai、openrouter、または ollama) | openai |
LLM_BASE_URL | LLM API のベース URL | https://api.openai.com/v1 |
LLM_API_KEY | LLM プロバイダーの API キー | sk-... |
LLM_CHOICE | 使用する LLM モデル | gpt-4o-mini |
EMBEDDING_MODEL_CHOICE | 使用する埋め込みモデル | text-embedding-3-small |
DATABASE_URL | PostgreSQL 接続文字列 | 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 サーバーを構築するための土台となります。独自のサーバーを構築するには、次の手順を実行してください。
@mcp.tool()デコレーターを使ったメソッドを作成して、独自のツールを追加します- クライアント、データベース接続などの独自の依存関係を追加するために、独自のライフスパン関数を作成します
- MCP サーバーに必要なヘルパー関数があれば、
utils.pyファイルを変更します @mcp.resource()と@mcp.prompt()を使って、プロンプトやリソースを追加することもできます
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。