mcpField
M
mem0

mem0

github.com/mem0ai開発68.0k2.3k 回インストール2 日前に更新
リポジトリ

mem0 について

mem0は、AIアプリケーションにMem0のマネージドメモリレイヤーを組み込むためのスキルです。PythonとTypeScriptのクライアントSDKを使ったメモリ操作や、ホスト版とセルフホスト版の違いを説明します。

主な機能

  1. 01APIによるユーザーメモリの管理
  2. 02PythonとTypeScriptのクライアントSDK案内
  3. 03メモリの追加、検索、取得、更新、削除
  4. 04非同期Pythonクライアント対応
  5. 05ホスト版とOSSの利用案内

活用シーン

  1. 01応答生成前にユーザーメモリを検索
  2. 02会話内容をユーザーメモリとして保存
  3. 03ユーザー単位でメモリを絞り込み、更新、削除
  4. 04ホスト版またはセルフホスト版の導入

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mem0ai/mem0 --skill mem0

インストール後、Claude Code で/mem0を入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

LICENSE
README.md
client/
differences.md
node.md
python.md
references/
api-reference.md
architecture.md
features.md
integration-patterns.md
quickstart.md
sdk-guide.md
use-cases.md
scripts/
mem0_doc_search.py

詳細

Mem0 プラットフォーム連携

スキルグラフ: このスキルは Mem0 スキルグラフの一部です。

  • mem0(このスキル)-- プラットフォームクライアント SDK + OSS(Python + TypeScript)
  • mem0-cli(GitHub)-- コマンドラインインターフェイス
  • mem0-vercel-ai-sdk(GitHub)-- Vercel AI SDK プロバイダー

Mem0 は、AI アプリケーション向けのマネージドメモリレイヤーです。デプロイするインフラストラクチャは不要で、API を通じてユーザーのメモリを保存、取得、管理します。セルフホストでの利用については、以下のクライアントリファレンスの OSS セクションをご覧ください。

ステップ 1:インストールと認証

Python:

pip install mem0ai
export MEM0_API_KEY="m0-your-api-key"

TypeScript/JavaScript:

npm install mem0ai
export MEM0_API_KEY="m0-your-api-key"

API キーはこちらで取得できます:https://app.mem0.ai/dashboard/api-keys?utm_source=oss&utm_medium=skill-mem0

MEM0_API_KEY がありませんか? mem0 init --agent --agent-caller <your-name> --json を実行します(事前に pip install mem0-cli または npm install -g @mem0/cli を実行)。<your-name> は、エージェントの識別子(例:claude-code、cursor)に置き換えてください。--agent-caller を指定し忘れた場合は、初期化後に mem0 identify <your-name> を実行します。人間のユーザーは後から mem0 init --email <your-email> で登録できます。

ステップ 2:クライアントの初期化

Python:

from mem0 import MemoryClient
client = MemoryClient(api_key="m0-xxx")

TypeScript:

import MemoryClient from 'mem0ai';
const client = new MemoryClient({ apiKey: 'm0-xxx' });

非同期 Python では、AsyncMemoryClient を使用します。

ステップ 3:基本操作

Mem0 の連携はすべて、取得 → 生成 → 保存という同じパターンに従います。

メモリの追加
messages = [
    {"role": "user", "content": "I'm a vegetarian and allergic to nuts."},
    {"role": "assistant", "content": "Got it! I'll remember that."}
]
client.add(messages, user_id="alice")
メモリの検索
results = client.search("dietary preferences", filters={"user_id": "alice"})
for mem in results.get("results", []):
    print(mem["memory"])
すべてのメモリを取得
all_memories = client.get_all(filters={"user_id": "alice"})
メモリの更新
client.update("memory-uuid", text="Updated: vegetarian, nut allergy, prefers organic")
メモリの削除
client.delete("memory-uuid")
client.delete_all(user_id="alice")  # delete all for a user

一般的な連携パターン

from mem0 import MemoryClient
from openai import OpenAI

mem0 = MemoryClient()
openai = OpenAI()

def chat(user_input: str, user_id: str) -> str:
    # 1. Retrieve relevant memories
    memories = mem0.search(user_input, filters={"user_id": user_id})
    context = "\n".join([m["memory"] for m in memories.get("results", [])])

    # 2. Generate response with memory context
    response = openai.chat.completions.create(
        model="gpt-5-mini",
        messages=[
            {"role": "system", "content": f"User context:\n{context}"},
            {"role": "user", "content": user_input},
        ]
    )
    reply = response.choices[0].message.content

    # 3. Store interaction for future context
    mem0.add(
        [{"role": "user", "content": user_input}, {"role": "assistant", "content": reply}],
        user_id=user_id
    )
    return reply

よくあるエッジケース

  • 検索結果が空になる: add() は非同期で、{"event_id": "...", "status": "PENDING"}(TS クライアントでは eventId)を返します。イベントが SUCCEEDED になるとメモリを検索できるようになります(GET /v1/event/{event_id}/ をポーリングするか、数秒待ちます)。infer=False は同期処理です。また、user_id が完全に一致していること(大文字と小文字を区別)を確認し、filters={"user_id": "..."} の構文を使用してください。
  • user_id + agent_id の AND フィルターで結果が空になる: エンティティは別々に保存されています。代わりに OR を使用するか、個別にクエリしてください。
  • メモリが重複する: 同じデータに infer=True(デフォルト)と infer=False を混在させないでください。どちらか一方のモードを使用してください。
  • インポートの誤り: ホストされたプラットフォームでは from mem0 import MemoryClient を使用します(非同期処理の場合は AsyncMemoryClient)。from mem0 import Memory はセルフホスト型 OSS クラスであり、MEM0_API_KEY は使用しません。
  • v3 のデフォルト(プラットフォーム): top_k=10、rerank=False です。threshold はスコアのブレンド前に適用されるサーバー側のしきい値であり、返される score の下限ではありません(デフォルトと 0.0 では、同一またはほぼ同じ結果が返されます)。これらの値は、指定しない限りクライアントから送信されません。OSS の Memory.search() のデフォルトは top_k=20 です。用途に応じて調整してください。

v2 との互換性

「v2」系は Python SDK 1.x と TypeScript SDK 2.x を指します。現在の SDK(Python 2.x、TypeScript 3.x)をまだ使用していない場合は、以下の相違点にご注意ください。

  • エンティティ ID: user_id/agent_id/run_id は search() と get_all() のトップレベルのキーワード引数にできました。現在は filters 内に指定します(トップレベルに指定するとエラーになります)。
  • デフォルト(プラットフォーム): threshold=0.3、rerank=False です。OSS:top_k=100、しきい値なし、rerank=True。
  • グラフメモリ: enable_graph=True と relations は廃止されました。エンティティのリンク機能は組み込み済みです(OSS については client/python.md をご覧ください)。

詳しくは、プラットフォーム移行ガイドとOSS 移行ガイドをご覧ください。

ドキュメントのライブ検索

リファレンスに記載されていない最新のドキュメントを確認するには、ドキュメント検索ツールを使用します。

python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --query "topic"
python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --page "/platform/features/graph-memory"
python ${CLAUDE_SKILL_DIR}/scripts/mem0_doc_search.py --index

API キーは不要です。docs.mem0.ai を直接検索します。

クライアント SDK リファレンス

言語別の詳細リファレンス(Platform + OSS):

言語ファイル
Python(MemoryClient + AsyncMemoryClient + Memory OSS)client/python.md
TypeScript/Node.js(MemoryClient + Memory OSS)client/node.md
Python と TypeScript の違いclient/differences.md

Platform リファレンス

詳しい情報が必要な場合は、必要に応じて以下を読み込んでください。

トピックファイル
クイックスタート(Python、TS、cURL)references/quickstart.md
SDK ガイド(両言語の全メソッド)references/sdk-guide.md
API リファレンス(エンドポイント、フィルター、オブジェクトスキーマ)references/api-reference.md
アーキテクチャ(パイプライン、ライフサイクル、スコープ設定、パフォーマンス)references/architecture.md
Platform の機能(検索、グラフ、カテゴリ、MCP など)references/features.md
フレームワーク連携(LangChain、CrewAI、OpenAI Agents など)references/integration-patterns.md
ユースケースと例(実際のコードを使ったパターン)references/use-cases.md

関連する Mem0 スキル

スキル使用する場面リンク
mem0-cliターミナルコマンド、スクリプト作成、CI/CD、エージェントのツールループlocal / GitHub
mem0-vercel-ai-sdk自動メモリ機能を備えた Vercel AI SDK プロバイダーlocal / GitHub

コメント