ClaudeとMem0を連携する方法 — 外部の永続メモリを持たせる
Mem0のコネクタでClaudeに外部の永続メモリを持たせる手順です。11個のツール、claude.aiとClaude Codeへの接続、Mem0が呼ばれないときの原因、削除系の止め方を扱います。
Mem0コネクタとは — Claudeに外部の記憶を足す仕組み
Mem0コネクタは、Mem0が運営するホスト型のMCPサーバーにClaudeをつなぎ、会話をまたいで残るメモリを持たせる連携です。ディレクトリ上のカテゴリは「Developer tools」で、「Anthropic verified」の表示が付いています。接続先のURLは https://mcp.mem0.ai/mcp です。
サーバーはMem0側で動き、ローカルには何も常駐しません。保存した記憶はパソコンではなくMem0のアカウントに置かれ、サインインは必須です。APIキー式のnpxサーバーで動く別製品は、Mnemoverse MCP memoryの導入手順にあります。
コネクタページの説明では、記憶の範囲をユーザー・エージェント・セッションの単位で区切れます。使い道の例は、コードベースの規約を覚えるコーディング支援、顧客の履歴を思い出すサポート、数週間かけて文脈を積む調査です。
11個のツールと役割
Mem0のドキュメントとコネクタページは、同じ11個のツールを挙げています。役割で分けると、次の4系統です。
| 系統 | ツール | 役割 |
|---|---|---|
| 書き込み | ツールadd_memory | 役割テキストや会話履歴をユーザーまたはエージェント向けに保存 |
| 読み出し | ツールsearch_memories | 役割フィルタ付きの意味検索 |
| 読み出し | ツールget_memories | 役割構造化フィルタとページ送りで一覧 |
| 読み出し | ツールget_memory | 役割memory_id で1件取得 |
| 更新・削除 | ツールupdate_memory | 役割記憶の本文やメタデータを上書き(ID確認後) |
| 更新・削除 | ツールdelete_memory | 役割memory_id で1件削除 |
| 更新・削除 | ツールdelete_all_memories | 役割対象範囲の記憶をまとめて削除 |
| 管理 | ツールlist_entities | 役割保存されているユーザー・エージェント・アプリ・実行の一覧 |
| 管理 | ツールdelete_entities | 役割エンティティとその記憶を削除 |
| 状態確認 | ツールlist_events | 役割記憶操作のイベントを一覧 |
| 状態確認 | ツールget_event_status | 役割非同期の記憶操作を event_id で確認 |
中心になるのは add_memory と search_memories の2つです。いつ保存し、いつ検索し、いつ更新するかは、エージェント自身が判断します。
前提 — 必要なアカウントと環境
最低限必要なのは、Mem0 Platformのアカウントです。ブラウザーでサインインできるクライアントなら、APIキーは要りません。
- Mem0 Platformのアカウント
- ブラウザー認証が使えないクライアントやCIで使うAPIキー
npxを使う場合はNode.js 18以上- MCP対応のクライアント(Mem0の表ではClaude、Claude Code、Codex、Cursor、Windsurf、VS Code、OpenCode)
Mem0のページ同士で、前提の書き方に食い違いがあります。MCPのページは前提条件の箇条書きにAPIキーを挙げる一方、サインインの節ではブラウザー認証が既定の経路だと説明しています。Claude.ai向けのページは、APIキーを先に用意する必要はないと明記しています。通常の接続では、キーは必要になったときに取れば足ります。
claude.aiにMem0を接続する手順
ディレクトリから追加する手順は、他のコネクタと同じです。
claude.aiでMem0をつなぐ流れ
- 1
ディレクトリを開く
claude.aiで「Customize」→「Connectors」を開き、「+」からディレクトリを表示してMem0を選びます。
- 2
接続する
内容を確認して「Connect」を押すと、Mem0のサインイン画面が開きます。アカウントを認可すれば接続は完了です。
- 3
会話でオンにする
チャット左下の「+」メニューの「Connectors」で、Mem0をオンにした会話から使えます。
Team・Enterpriseプランでは、OwnerまたはPrimary Ownerが先に組織でコネクタを有効化します。有効化しただけでは誰にもアクセスは付与されず、メンバーは各自で認証します。
Claude Desktopでカスタムコネクタとして足す場合
Mem0のドキュメントは、Claude Desktopが mcp-add コマンドを「有効なMCPサーバーではない」と拒否すると明記しています。設定画面から入れる手順は次のとおりです。
- 「Settings」→「Connectors」を開く
- 「Add custom connector」を押す
- 名前(例
mem0-mcp)とURLhttps://mcp.mem0.ai/mcpを入力する - 保存し、Claude Desktopを再起動する
初回のツール利用時にブラウザーが開き、サインインを求められます。カスタムコネクタはAnthropicのクラウドから接続する仕組みなので、サーバーがインターネットから届く場所にある必要があります。Mem0はホスト型なので、この条件を満たします。
Claude Codeに接続する手順
Claude Codeなら、リモートHTTPサーバーの追加コマンドが使えます。
claude mcp add --transport http mem0 https://mcp.mem0.ai/mcp--transport を省くと、既定の stdio として扱われます。v2.1.289の claude mcp add --help は、次のように表示します。
claude mcp add --helpUsage: claude mcp add [options] <name> <commandOrUrl> [args...]
Add an MCP server to Claude Code.
Examples:
# Add HTTP server:
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
# Add HTTP server with headers:
claude mcp add --transport http corridor https://app.corridor.dev/api/mcp
--header "Authorization: Bearer ..."
Options:
-H, --header <header...> Set headers for HTTP/SSE servers (e.g. -H
"X-Api-Key: abc123" -H "X-Custom: value")
-s, --scope <scope> Configuration scope (local, user, or project)
(default: "local")
-t, --transport <transport> Transport type (stdio, sse, http). Defaults to
stdio if not specified.Mem0の公式手順には、複数のクライアントへまとめて書き込む mcp-add もあります。
npx mcp-add \
--name mem0-mcp \
--type http \
--url "https://mcp.mem0.ai/mcp" \
--clients "claude code"mcp-add で追加した場合は、追加後にクライアントを再起動します。Claude Code側の認証は、セッション内で /mcp を開いて進めます。OAuthのトークンが期限切れなどで拒否されたときは、/mcp でサーバーを選んで「Re-authenticate」を押します。
claude.aiにログインしたClaude Codeでは、claude.ai側で追加したコネクタが自動で使えます。/mcp の一覧に、claude.ai由来であることを示す表示が付きます。すでにclaude.aiへ接続済みなら、Claude Codeで二重に追加する必要はありません。
APIキーで送る場合のスコープ
ブラウザー認証が使えない環境では、APIキーをBearerトークンとして送ります。書式はクライアントごとに違います。Codexなら、環境変数 MEM0_API_KEY を bearer_token_env_var で渡します。Claude Codeでは、上のヘルプにある --header "Authorization: Bearer ..." の形が使えます。
ここで効くのが --scope です。既定の local は ~/.claude.json に保存され、自分だけに見えます。project で追加すると、チームでの共有を前提にした .mcp.json に書かれます。キーを直書きしたまま --scope project で追加すると、コミットの対象になるファイルにキーが残ります。
Claude Codeには2つの経路がある — コネクタとMem0プラグイン
Mem0は、MCPコネクタとは別に、Claude Code専用のプラグイン(ドキュメント上のバージョンは0.3.1)も配っています。同じ「Mem0で記憶する」でも、動き方が違います。
MCPコネクタとMem0プラグイン
MCPコネクタ
11個のツールをClaudeが必要に応じて呼びます。保存も検索もClaudeの判断で動きます。前提はMem0のアカウントとブラウザーでのサインインだけです。
Mem0プラグイン
Claude Codeのフックが作業中の内容をローカルに記録し、バックグラウンドのワーカーがMem0で記憶へ変換します。新しいセッションの最初のプロンプトが20字以上なら、関連する記憶を最大5件、自動で差し込みます。APIキー、Python 3.10以上、Gitが必要で、ツールは読み取り専用の search_memories 1つです。
プラグインの導入は、Mem0のドキュメントでは次の3コマンドです。
export MEM0_API_KEY='your-mem0-api-key'
claude plugin marketplace add mem0ai/mem0
claude plugin install mem0@mem0-plugins --scope user --config api_key="$MEM0_API_KEY"導入後は /mem0:search(検索)、/mem0:status(動作確認)、/mem0:forget(このリポジトリの記憶を削除)、/mem0:pause と /mem0:resume(取り込みの一時停止と再開)、/mem0:remember(特定の内容を記録させる)が使えます。claude.aiやDesktopでも同じ記憶を引きたいならコネクタ、Claude Codeの作業履歴を意識せずに貯めたいならプラグインという分け方です。
動作確認 — 保存と検索の往復テスト
Mem0の公式ドキュメントが勧める確認は、保存を頼んだあと、別のメッセージで読み戻す方法です。
私は新規プロジェクトでJavaScriptよりTypeScriptを好みます。覚えておいてください。
(別のメッセージで)新規プロジェクトで私が好む言語は何ですか。2つ目の答えは、記憶が実際に保存されていないと返せません。確認点は2つです。
- クライアントのツール一覧に、Mem0のツールが並んでいること
- 最初のツール呼び出しで、ブラウザーのサインインが起動すること
会話の外から確かめるなら、Mem0のダッシュボードを開きます。エージェントが保存した内容がそこに出ます。
つないだのにMem0が呼ばれないとき
コネクタが「接続済み」と表示されているのに、Claudeがツールを呼ばないことがあります。Mem0のClaude.ai向けページは、原因を2つ挙げています。
1つ目は、会話ごとのオンオフです。コネクタはチャットごとのオプトインなので、「+」→「Connectors」でMem0をオンにしていない会話ではツールが出ません。
2つ目は、Claude標準のメモリとの競合です。claude.aiには標準でメモリ機能(Settings > Capabilities > Memory、既定でオン)があり、会話履歴から要約を自動で作ります。Mem0のページの説明では、両方が有効だとClaudeは内蔵メモリを優先しやすく、外部のメモリツールを自分から呼ぶことは少なくなります。
対処は2通りです。「Mem0のメモリを検索して」「これをMem0に保存して」と明示的に頼めば、ツール呼び出しになります。Mem0を主役にしたいアカウントでは、標準メモリを一時停止(Settings > Capabilities > Memory > Pause)する選択肢があります。
カスタムコネクタには、もう1つ制限があります。同じページによると、無料プランは追加できるカスタムコネクタが1つまでで、Pro・Max・Team・Enterpriseは複数追加できます。
Claude標準のメモリとどう違うか
Claudeには、もともとメモリの仕組みがあります。claude.aiのメモリ機能については、仕組みの全体像をClaudeの記憶の仕組みにまとめています。Claude Codeには、CLAUDE.mdと自動メモリがあります。層の使い分けはClaude Code memoryの三層構造を参照してください。
Mem0コネクタは、これらとは別の外部の置き場です。違いは保存先と操作の主体にあります。
| 観点 | Claude標準のメモリ | Mem0コネクタ |
|---|---|---|
| 保存先 | Claude標準のメモリClaude(claude.ai)またはローカルのファイル(Claude Code) | Mem0コネクタMem0のクラウドのアカウント |
| 記憶の操作 | Claude標準のメモリ主に画面の設定・ファイル編集 | Mem0コネクタClaudeがツールで検索・更新・削除 |
| 別のクライアントから読めるか | Claude標準のメモリそのアプリの範囲内 | Mem0コネクタ同じMem0アカウントにつないだクライアント |
最後の行が、外部メモリの実用上の利点です。Mem0の対応クライアント一覧にはClaudeのほかCursorやCodexも載っており、同じMem0アカウントにつなげば、道具をまたいで同じ記憶を検索できます。ただし、どこまで共有されるかは、保存時にどの範囲を指定したかで変わります。
標準メモリだけで足りる場合もあります。1つのアプリの中で好みを覚えさせたいだけなら、追加の連携は要りません。別のアプリからも同じ記憶を引きたいとき、または記憶をAPIで扱いたいときに、外部メモリの出番があります。
記憶の範囲を決める4つの識別子
「ユーザー・エージェント・セッションで区切れる」の中身は、Mem0 Platformの4つの識別子です。
記憶を仕分ける4つのID
user_id
人に紐づく好みやプロフィール、過去の行動を、どこでも追いかけるように保存します。
agent_id
エージェントごとの人格や運用モードを、1か所にまとめます。
app_id
パートナーのアプリや展開先ごとに、書き込みを仕切ります。
run_id
サポートチケットやチャットセッションのように、単独で期限を迎える流れを分けます。
読み出しでつまずきやすい仕様が2つあります。1つ目は、書き込み時に user_id と agent_id を両方渡しても、両方が付いた記録にはならない点です。既定の抽出では、各事実が発言した側に結びつきます。ユーザーの発言は user_id だけ、アシスタントの発言は agent_id だけが付きます。
2つ目は、その結果として、user_id と agent_id を両方ANDで指定した検索が空になりうる点です。IDを指定しなかった項目は絞り込みの対象外なので、user_id だけで検索すれば、他のIDが付いた記録も返ります。使う識別子は最初に決めておくと、後から検索が空振りする原因を追わずに済みます。
Claudeに記憶の使い方を教える — CLAUDE.mdの断片
Mem0では、いつ保存するかはエージェントの判断です。任せきりだと、保存の粒度がぶれます。Claude Codeでは、CLAUDE.mdに運用ルールを書いておくと、保存と検索のタイミングがそろいます。次は例として書いた断片です。
## メモリ(Mem0)の使い方
- 作業を始める前に search_memories で、このリポジトリの規約と過去の決定を検索する
- 新しい規約や、ユーザーが訂正した内容だけを add_memory で保存する
- 一時的なデバッグの経過や、秘密情報(キー・トークン)は保存しない
- update_memory と delete_memory は、対象のIDを示してから実行する
- delete_all_memories と delete_entities は、私が明示的に頼んだときだけ使うClaude Code内の自動メモリと役割が重なる場合は、どちらに書くかを1行で決めておくと二重管理を避けられます。自動メモリの保存先やオフ設定は自動メモリの保存先変更とオフ設定で扱っています。
削除系ツールは権限で止める
11個のうち、delete_memory、delete_all_memories、delete_entities は記憶を消します。ツール表に、削除を元に戻す操作は載っていません。取り消せない前提で扱うのが安全です。
delete_all_memories に当たるMem0のREST APIには、参考になる仕様があります。フィルターを1つも渡さない呼び出しは、以前は全件削除になっていましたが、現在はバリデーションエラーを返します。ユーザーIDなどには *(全件)を渡せます。削除はバックグラウンドで実行され、応答は「Delete in progress. This may take some time.」です。MCPツールの引数まで同じとは限りませんが、範囲指定を伴う削除で、即時には終わらない設計だと分かります。
Claude Codeの権限ルールで止める
Claude Codeでは、MCPツールを mcp__<サーバー名>__<ツール名> の形で権限ルールに書けます。サーバー名は追加時に付けた mem0 です。.claude/settings.json に次のように書くと、この2つのツールはClaudeのコンテキストから外れ、呼ばれなくなります。
{
"permissions": {
"deny": [
"mcp__mem0__delete_all_memories",
"mcp__mem0__delete_entities"
]
}
}ツール名に括弧でパラメーターを付けたMCPルールは、設定ファイルの読み込み時に読み飛ばされます。名前だけで書いてください。claude.ai経由のコネクタをClaude Codeが自前で取得した場合は、ツール名が mcp__claude_ai_<サーバー名>__<ツール名> の形になります。その場合は、/mcp で実際の名前を見てから書き写します。
すべてを禁止せず、毎回の確認だけ挟む方法もあります。deny の代わりに ask に同じ名前を入れれば、実行のたびに許可を求められます。
claude.aiではツール権限で絞る
claude.ai側では、コネクタごとにツールの権限を「Always allow」「Needs approval」「Blocked」から選べます。ツールは読み取り系と書き込み・削除系に分類されて表示されます。削除系を「Blocked」か「Needs approval」にしておけば、Claudeが自分の判断で消すことはありません。
Team・Enterpriseプランでは、Ownerが組織全体でアクションを制限できます。個々のユーザーはこれを上書きできません。
つまずきやすい点
Mem0のドキュメントにあるトラブルシューティングは、次の5つです。
| 症状 | 意味 | 対処 |
|---|---|---|
401 や「Authentication required」 | 意味接続はできたがサインインしていない | 対処ブラウザー認証を完了する。またはAPIキーをBearerトークンで渡す |
| 「Connection refused」「failed to connect」 | 意味サーバーに届いていない | 対処通信環境を確認し、URLが https://mcp.mem0.ai/mcp と一字一句同じか見る |
| Mem0のツールが見えない | 意味設定は書けたがクライアントが再読み込みしていない | 対処クライアントを再起動する。それでも出ないなら、mcp-add が書いた設定ファイルをクライアントが読んでいるか見る |
npx: command not found | 意味Node.jsが未導入 | 対処Node.jsをインストールする |
| 「Invalid API key」 | 意味キーが誤り、失効、または別アカウントのもの | 対処ダッシュボードで新しいキーを取る |
URLの書き方は、Mem0のページ同士で少し違います。MCPのページは https://mcp.mem0.ai/mcp と一字一句同じであることを求め、ディレクトリのコネクタページもこの形です。Claude.ai向けのページは、カスタムコネクタの入力例を末尾スラッシュ付きの https://mcp.mem0.ai/mcp/ で示しています。
ツール数も、ページで違います。MCPのページとコネクタページは11個、Claude.ai向けのページは list_events と get_event_status を除いた9個を挙げています。update_memory の説明も、MCPのページは「本文やメタデータ」、Claude.ai向けのページは「本文」だけです。
Codexだけは、サーバー名が mem0 です。ほかのクライアントの例は mem0-mcp で、権限ルールに書く名前もこの名前に合わせます。上の権限ルールの例は、claude mcp add で mem0 と付けた場合の書き方です。mcp-add で mem0-mcp と付けた場合は、mcp__mem0-mcp__delete_all_memories になります。
使うときの注意 — コネクタ全般のリスク
コネクタページには、信頼できる開発者のものだけを使うようにという注意が書かれています。Anthropicは、開発者が公開するツールの中身を管理しておらず、想定どおり動く保証も変わらないことの保証もできない、という趣旨です。
外部のクラウドに置く記憶には、次の点が伴います。
- 保存内容はMem0のアカウントに残る。個人情報や資格情報は保存させない
- 記憶はClaudeが検索して会話に取り込む。誤った記憶が残ると、以後の応答に影響する
- 接続を外したいときは、claude.aiの「Customize」→「Connectors」から切断できる
まとめ
使い始める前に、記憶を分ける識別子とサーバー名を決めておくと、検索の空振りや権限ルールの書き違いを後から追わずに済みます。たとえば user_id だけで検索する運用にして、Claude Codeには mem0 と名付ければ、権限ルールも mcp__mem0__ で始まる名前にそろいます。
claude.aiの一般的な使い方はClaudeの会話検索とメモリ、他のAIからの移行はClaude import memoryで扱っています。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。
- claude.com/marketplace/connectors/mem0
- docs.mem0.ai/platform/mem0-mcp
- docs.mem0.ai/integrations/claude-ai
- docs.mem0.ai/integrations/claude-code
- docs.mem0.ai/platform/features/entity-scoped-memory
- docs.mem0.ai/api-reference/memory/delete-memories
- support.claude.com/en/articles/11176164-use-connectors-to-extend-claude-s-cap…
- code.claude.com/docs/en/mcp
- code.claude.com/docs/en/permissions