mcpField
D
DeepMem

DeepMem

リモート
deepmem.devメモリ・ナレッジ11410 週間前に更新
リポジトリ公式サイト

DeepMem について

DeepMem は、Mem0 互換 API を備えた AI エージェント向けの永続メモリレイヤーで、事実を保存しセマンティックに呼び出します。オープンモードでセルフホストするか、マネージドクラウドとして利用でき、データとコストを管理したい開発者を対象としています。

主な機能

  1. 01Mem0 互換の MemoryClient インターフェース
  2. 02ベクトル・BM25・時間減衰を組み合わせたハイブリッド検索
  3. 03バッチ処理による事実抽出と LLM 呼び出しの削減
  4. 04セマンティックキャッシュと user_id 単位の分離
  5. 05GDPR に関連する削除・リセット・エクスポート
  6. 06書き込みと検索のツールを提供する内蔵 MCP サーバー

活用シーン

  1. 01エージェント向けにユーザーの好みやプロジェクト背景を保存
  2. 02インポート行の変更のみによる Mem0 からの移行
  3. 03自社インフラでのメモリサービスのセルフホスト

MCP 対応

DeepMem は deepmem_write、deepmem_search、deepmem_delete ツールを公開する MCP サーバーを内蔵しており、Claude Desktop や Cursor などのクライアントから直接メモリを読み書きできます。クラウド版もリモート MCP エンドポイントを提供しています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://deepmem.dev/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://deepmem.dev/mcp認証が必要

ツール

2
パラメーター型必須説明
inferbooleanいいえ
run_idanyいいえ
api_keystringいいえ
user_idstringいいえ
agent_idanyいいえ
messagesarrayはい

詳細

DeepMem

すぐに導入できる AI メモリレイヤー。応答速度は 2 倍、コストは 10 分の 1。
Mem0 API と完全互換。5 分で移行できます。インポート行を 1 行変更するだけです。

セルフホスト可能。認証も支払いも不要で、ロックインもありません。または、deepmem.dev のマネージドクラウドをご利用ください。

Docker イメージ DeepMem Cloud ライセンス:MIT

クラウド · セルフホスト · ベンチマーク · 再現する

DeepMem のクイックスタートデモ


Mem0 から 1 行で移行できます - MemoryClient もメソッドシグネチャも同じです。

# Before - Mem0
from mem0 import MemoryClient
client = MemoryClient(api_key="m0-...")

# After - DeepMem (only the import changes)
from deepmem import MemoryClient
client = MemoryClient(api_key="dm_live-...")   # get a key at deepmem.dev
pip install deepmem-client

会話を検索可能な長期メモリに変換します。Qdrant ベクトルストアの前段に FastAPI HTTP API を配置し、LLM による事実抽出、ハイブリッド検索(ベクトル + BM25 + エンティティブースト + 時間減衰)、セマンティックキャッシュ、非同期バッチ蒸留、GDPR 制御、組み込みの MCP サーバーを備えています。オープンモードで動作するため、API キーもユーザー登録も不要です。独自のエージェント向けに数分でデプロイできます。マルチテナントの分離は、リクエスト本文の user_id によって行われます。

セルフホストを避けたい場合は? DeepMem Cloud は、このエンジンそのものをマネージド版として提供します。deepmem.dev でご利用いただけます。API は同じで、インフラ管理は不要です。登録してキー(dm_live_...)を取得し、ベース URL を https://deepmem.dev に設定すれば完了です。クラウド版とオープンソースサーバーは同じ Mem0 互換 API を使用するため、クライアントコードは同一です。

Mem0 からの移行

すでに Mem0 をお使いですか? 1 行で DeepMem クラウドに切り替えられます。deepmem-client パッケージは mem0.MemoryClient を踏襲しており、クラス名、メソッドシグネチャ、filters={"user_id": ...} の形式が同じなので、インポート以降のコードはそのまま使えます。

pip install deepmem-client
# before (Mem0)
from mem0 import MemoryClient
client = MemoryClient(api_key="m0-...")
client.add(messages, user_id="alex")
client.search("What can Alex cook?", filters={"user_id": "alex"})

# after (DeepMem cloud) - change one import line
from deepmem import MemoryClient
client = MemoryClient(api_key="dm_live_...")        # key at https://deepmem.dev
client.add(messages, user_id="alex")                # identical calls
client.search("What can Alex cook?", filters={"user_id": "alex"})
動作に関する注意事項
  • add(infer=True)(デフォルト)は DeepMem クラウドでは非同期です - pending=True と results=[] を返し、抽出された事実は数秒後に追加されます。(Mem0 クラウドの add も非同期で、PENDING を返します。)すぐに検索可能な状態で生テキストを同期保存するには、infer=False を指定してください。
  • グラフのリレーションはありません - DeepMem はハイブリッドベクトル検索(ベクトル + BM25 + 時間減衰)を使用するため、relations は常に [] です。Mem0 のグラフ機能は再現されていません。
  • reset の動作は異なります - Mem0 ではアカウント全体が対象ですが、DeepMem では確認ガード付きで user_id ごとに実行されます。

料金

DeepMem Cloud は、有料プランのすべての段階で Mem0 より 10 倍安価です。プランの構成は同じで、価格は 10 分の 1 です。

プランDeepMemMem0 クラウド
ホビー無料無料
スターター$1.9/mo$19/mo
グロース$7.9/mo$79/mo
プロフェッショナル$24.9/mo$249/mo

セルフホストすれば $0 です。支払うのは利用する LLM/埋め込みプロバイダーの料金だけです(Mem0 がプラン料金に上乗せして請求するのと同じ LLM コストです)。メモリサービスの上乗せ料金はありません。バッチ蒸留により LLM の呼び出しも約 80%削減されるため、メッセージごとに抽出する方式より、プロバイダーへの請求額も抑えられます。

プランと上限:deepmem.dev · mem0.ai。

ベンチマーク

都合のよい結果だけを選んでいません。スクリプトとワークロードは /benchmarks に含まれています。ご自身で実行してください。測定結果と、その結果を得た正確な設定は以下のとおりです。

指標DeepMem セルフホスト¹DeepMem クラウドMem0 クラウド
検索 p5073 ms643 ms653 ms
検索 p9586 ms811 ms710 ms
検索ヒット数(40 件のクエリ)-19584
追加 p50(生ストア)899 ms ²792 ms695 ms ³

¹ GTX 1070 GPU(2016 年世代)での BGE-M3、ローカルファイルの Qdrant、infer=False、 100 オペレーション、並行数 1。² ローカルファイルの Qdrant I/O が大部分を占めています。Qdrant サーバーを使えば大幅に短縮できます。³ Mem0 には生ストアモードがありません。add は常に LLM による抽出を実行するため、この行は同条件での比較ではありません。

  • 本来のレイテンシーがわかるのはセルフホストです。インターネットの RTT がなく、使うのはご自身の 埋め込みモデルと Qdrant です。古いコンシューマー向け GPU でも、検索 p50 は 73 ms です。
  • 検索 p50 では DeepMem クラウドが Mem0 クラウドを上回ります(643 ms 対 653 ms)。また、 検索ごとに約 2.3 倍多くの候補を返します(40 件のクエリで 195 件対 84 件のヒット)。
  • クラウドのレイテンシーは RTT に左右されます。両方のクラウド列は中国本土からプロキシ経由で測定しており、 実行ごとのばらつきは約 ±10% です。ご自身の数値を確認するには、RTT の低い場所から /benchmarks を実行してください。

DeepMem を選ぶ理由

エージェントのフレームワークでは、永続的で取得可能なメモリが必要だと繰り返し認識されています。ホスト型の選択肢は呼び出しごとに課金し、データを他社のクラウドに送ります。DeepMem はセルフホスト可能な代替手段です。すぐに導入できる、Mem0 と同じ形状の API を備えていますが、ご自身のマシンで、ご自身の埋め込みモデルと LLM キー、Qdrant を使って動作し、コードもここで確認できます。

DeepMem はほかの Mem0 代替製品とどう違いますか? ほとんどはホスト型のみであるか、他社のベクトルデータベース上にメモリ機能を追加しています。DeepMem は 3 つの特長を兼ね備えています。セルフホスト可能(データはご自身のマシンに保存され、ご自身の LLM キー以外の費用はかかりません)、MCP ネイティブ(Claude Desktop / Cursor がツールとしてメモリを直接読み書きできます)、そして完全なオープンソースです。また、マネージドクラウドでもまったく同じエンジンが動作するため、クラウドとセルフホストは別々の製品ではなく、同じ API を使えます。

DeepMem がない場合DeepMem がある場合
セッションのたびに、自分が何者で何に取り組んでいるかを説明し直すエージェントがユーザーの属性、プロジェクト、好みを自動で思い出す
セッション間でデバッグや調査のコンテキストを失う過去の根本原因、行き詰まった点、発見事項を思い出せるため、作業の繰り返しを防げる
セッションのたびに好みを手動で伝え直す好みがセッション、エージェント、プロジェクトをまたいで保持される
呼び出しごとに課金され、データを預けるホスト型メモリサービスを使うご自身のインフラでセルフホストするか、クラウドを使うかを選べます。どちらも同じ API です
実際のところ
  • ナレッジグラフではなく、ハイブリッド検索です。 ベクトル類似度、 BM25 キーワード一致、エンティティによるブースト、時間減衰スコアリングを組み合わせて検索します。 時系列グラフのレイヤーはありません。それが必要なら、Zep をご検討ください。
  • コードのダンプではなく、好みを保存します。 大きなフェンス付きコードブロックは LLM による抽出の前に取り除かれるため、ストアには貼り付けた実装ではなく、 長期的に役立つユーザーやプロジェクトの情報が蓄積されます。
  • BYOK、マルチプロバイダー対応です。 ご自身の LLM(OpenAI / Anthropic / OpenAI 互換エンドポイント)と 埋め込みモデル(BGE-M3 / Google / OpenAI 互換)をお持ち込みください。
  • MCP ネイティブです。 MCP サーバーが付属しており、Claude Desktop / Cursor がメモリを直接読み書きできます。

クイックスタート

実行方法は 3 通りあります。どれも同じ Mem0 互換 API に対応しています。

1. クラウド(運用作業不要)
export DEEPMEM_API_KEY=dm_live_...      # from https://deepmem.dev
curl https://deepmem.dev/v1/memories \
  -H "Authorization: Bearer $DEEPMEM_API_KEY" -H "Content-Type: application/json" \
  -d '{"messages":[{"role":"user","content":"I am Pat, I live in Lisbon."}],"user_id":"pat","infer":false}'
curl https://deepmem.dev/v1/memories/search \
  -H "Authorization: Bearer $DEEPMEM_API_KEY" -H "Content-Type: application/json" \
  -d '{"query":"Where does Pat live?","user_id":"pat"}'
2. Docker(1 コマンド)
cp .env.example .env          # add an LLM key
docker compose up --build     # DeepMem (HTTP :8000 + MCP :8001) + Qdrant sidecar
curl http://localhost:8000/health

公開済みのイメージを取得する方法もあります。

docker pull langdeepmem/deepmem:latest
docker run -p 8000:8000 -p 8001:8001 -e DEEPSEEK_API_KEY=sk-... langdeepmem/deepmem:latest

イメージは :8000(HTTP) と :8001(MCP) を公開します。Dockerfile と docker-compose.yml には、GPU 版(CUDA torch + BGE_DEVICE=cuda)と BGE-M3 モデルの ダウンロード方法(HF ミラー、プロキシ、ローカルマウント)が記載されています。

3. ソースから
git clone https://github.com/deepmemteam/deepmem.git && cd deepmem
pip install -r requirements.txt
cp .env.example .env          # add an LLM key + embedder config
python server/start.py        # HTTP :8000 + MCP :8001

次の3行で書き込みと検索を行います。

import httpx
httpx.post("http://localhost:8000/v1/memories",
    json={"messages":[{"role":"user","content":"I'm Pat, I live in Lisbon."}],
          "user_id":"pat"})
print(httpx.post("http://localhost:8000/v1/memories/search",
    json={"query":"Where does Pat live?","user_id":"pat"}).json()["results"])

user_id は省略可能です(デフォルトは "default")。エンドユーザーを分離するには、 異なる user_id を指定してください。infer: false を指定すると、テストに適した形で 生テキストがすぐに保存されます。デフォルトの infer: true では、LLM による事実抽出のためにキューに追加されます。

主な機能

コードではなく設定で複数のプロバイダーを切り替え。 両方のレイヤーを環境変数で切り替えられます。

レイヤーオプション選択方法
LLM(事実抽出)OpenAI · Anthropic(ネイティブ SDK)· OpenAI 互換(DeepSeek / vLLM / Ollama / Groq / LM Studio)LLM_PROVIDER + LLM_API_KEY / ANTHROPIC_API_KEY / DEEPSEEK_API_KEY
EmbeddingsBGE-M3(ローカル、GPU/CPU)· Google Gemini · OpenAI 互換EMBEDDING_PROVIDER + BGE_M3_PATH / GOOGLE_API_KEY / OPENAI_API_KEY

BGE_DEVICE=auto|cpu|cuda は、GPU が利用可能な場合は GPU を、そうでない場合は CPU を選択します(複数プロセスの競合を避けるため、VRAM の少ないカードでは cpu を指定してください)。BYOK を指定すると、リクエストごとに LLM が上書きされます。

ハイブリッド検索。 ベクトル類似度、BM25 キーワード、エンティティブースト、時間減衰を統合スコアにまとめます。候補を多めに取得して再ランク付けし、結果を返します。

非同期バッチ蒸留。 書き込みは無処理期間の後にキューへ追加され、まとめて抽出されます。メッセージごとに抽出する場合と比べて、LLM の呼び出しを約80%削減します。

セマンティックキャッシュ。 繰り返しの追加や検索では、類似度ゲート付きのキャッシュを使用し、Qdrant での再埋め込みや再クエリを行わずにキャッシュ済みの事実を返します。

コードではなく好みを保存。 extraction_filter は、LLM による抽出前に大きなコードブロックを取り除くため、ストアには貼り付けられた実装ではなく、長期的に有用な事実が蓄積されます。

MCP サーバー。 Claude Desktop、Cursor、あらゆる MCP クライアント向けに、deepmem_write / deepmem_search / deepmem_delete ツールを提供します。

GDPR。 保持期間付きの論理削除、reset による完全削除、ログ内の SHA-256 による ID マスキング、移行用のエクスポート/インポートに対応しています。

API

メソッドパス説明
POST/v1/memoriesメッセージを書き込みます。LLM が事実を抽出します(infer=false の場合は生データを保存します)。
POST/v1/memories/searchセマンティック検索(ベクトル + BM25 + エンティティ + 時間減衰)
GET/v1/memoriesuser_id に属するすべての項目を一覧表示します(ページネーション対応)。
GET/v1/memories/{id}ID を指定して1件を取得します。
PUT/v1/memories/{id}1件のメモリーのテキストを更新します。
DELETE/v1/memories/{id}1件を論理削除します。
DELETE/v1/memoriesuser_id に属するすべての項目を論理削除します(GDPR)。
GET/v1/memories/{id}/history追加/更新/削除の監査ログ
POST/v1/resetすべての項目と履歴を完全削除します(confirm_user_id が必要です)。
GET/v1/export · POST /v1/import移行可能な JSON のエクスポート/インポート
GET/health · /ready稼働状態/準備状態のプローブ

agent_id / run_id を指定すると、書き込み/読み取りの範囲を絞り込めます(Mem0 の3段階の分離を踏襲しています:ユーザー -> エージェント -> 実行)。インタラクティブなドキュメントは /docs で確認できます。

MCP 統合

クラウドでは、リモート MCP エンドポイント(ストリーミング可能な HTTP)を公開しています。

URL:    https://deepmem.dev/mcp
Auth:   Authorization: Bearer dm_live_...   (your deepmem.dev API key)
Tools:  deepmem_write / deepmem_search

Claude Code、Claude Desktop、Cursor、および MCP 互換の任意のクライアントで動作します。

Claude Code - 1 つのコマンドで設定できます。

claude mcp add --transport http deepmem https://deepmem.dev/mcp \
  --header "Authorization: Bearer dm_live_..."

または、プラグインをインストールします(API キーの設定を案内する /deepmem:setup コマンドが含まれています)。

/plugin marketplace add deepmemteam/deepmem-claude-plugin
/plugin install deepmem@deepmem

Cursor → Settings → MCP → Add new MCP server を選択するか、~/.cursor/mcp.json(グローバル)/.cursor/mcp.json(プロジェクトごと)を編集します。Cursor は url と headers 内の ${env:NAME} 変数を解決するため、設定ファイルではなく環境変数にキーを保存できます。

{
  "mcpServers": {
    "deepmem": {
      "url": "https://deepmem.dev/mcp",
      "headers": { "Authorization": "Bearer ${env:DEEPMEM_API_KEY}" }
    }
  }
}

(シェルで DEEPMEM_API_KEY=dm_live_... をエクスポートするか、必要に応じてキーを直接貼り付けてください)。ワンクリックで「Add to Cursor」を実行できるコミュニティの MCP リストは cursor.directory にあり、公式プラグインは Cursor Marketplace で提供されています。

DeepSeek Harness(dsh) - オーバーレイファイル 1 つで設定できます。dsh プラグインは不要です(dsh は汎用の dsh-mcp-client ブリッジを介して、任意の MCP サーバーに接続します)。

export DEEPMEM_API_KEY=dm_live_...
dsh web --patch "$PWD/examples/dsh/deepmem.cordis.yml"

詳細とセルフホスト版については、examples/dsh を参照してください。

セルフホスト版(stdio、バンドル済みサーバー、オープンモードではキー不要):

{
  "mcpServers": {
    "deepmem": {
      "command": "python",
      "args": ["server/mcp_server.py"],
      "env": { "DEEPMEMORY_BASE_URL": "http://localhost:8000" }
    }
  }
}

このリポジトリには、セルフホストサーバー用に事前設定された .cursor/mcp.json が含まれています。Cursor でリポジトリを開き、Settings → MCP から有効にしてください。

アーキテクチャ

client (HTTP / MCP)
  -> FastAPI (:8000)
       -> rate-limit middleware (per-IP token bucket on add/search)
       -> SemanticCache.check            (return cached facts on similarity hit)
       -> AsyncBatchDistiller.enqueue    (POST /v1/memories, infer=true)
            ↳ silence-window or max_batch triggers on_batch_ready
                ↳ VectorStore.process_batch  (LLM extraction -> Qdrant upsert)
       -> VectorStore.search             (vector + BM25 + entity + time-decay)
  -> LLM: OpenAI / Anthropic / OpenAI-compatible (fact extraction)
  -> BGE-M3 / Gemini / OpenAI-compatible (embeddings)
  -> Qdrant (vectors)  +  SQLite (audit history)
  -> MCP server (:8001)  deepmem_write / deepmem_search / deepmem_delete

Qdrant コレクション(memories)は 1 つだけで、user_id ペイロードによって厳密にフィルタリングされます。TenantValidator は NFC 正規化を行い、user_id が [A-Za-z0-9._:-]{1,256} の文字セットに準拠することを強制します。リクエストの生の値を決して信頼しないでください。

設定

設定は環境変数(.env、自動読み込み)> config.json > デフォルトの優先順位で一度だけ読み込まれます。 主な変数:

変数必須説明
DEEPSEEK_API_KEY / LLM_API_KEY / ANTHROPIC_API_KEYLLM キーを 1 つ事実抽出用の LLM
LLM_PROVIDERいいえauto / openai / anthropic / openai_compatible(デフォルトは auto)
EMBEDDING_PROVIDERいいえbge-m3 / google / openai(デフォルトは bge-m3)
BGE_M3_PATHいいえローカルの BGE-M3 ディレクトリまたは HF モデル ID(デフォルトは BAAI/bge-m3)
BGE_DEVICEいいえauto / cpu / cuda(デフォルトは auto)
QDRANT_URL / QDRANT_API_KEYいいえリモート Qdrant。ローカルのファイルストアを使う場合は省略します
CORS_ORIGINSはい許可するオリジンをカンマ区切りで指定します(本番環境では * を使用しないでください)
RATE_LIMIT_ADD / RATE_LIMIT_SEARCHいいえ1 分あたりの制限(デフォルトは 30 / 60)

バックエンドは環境変数に応じて自動的に切り替わるため、コードの変更は不要です。

  • QDRANT_URL が設定されている場合はリモート Qdrant、設定されていない場合は ./data/qdrant 配下のローカルファイル Qdrant を使用します。
  • 起動時に CORS_ORIGINS=* が設定されていると、DEEPMEMORY_DEBUG=1 でない限り拒否されます。
本番環境(systemd)
systemctl restart deepmem.service     # scripts/start.sh -> uvicorn :8000
journalctl -u deepmem -f

HTTPS を使用するには、Caddy または Nginx を前段に配置してください。scripts/start.sh は systemd または任意のプロセスマネージャーで実行できます。

ベンチマーク

再現可能なスクリプトが /benchmarks に 2 つあります。

  • クラウド同士の比較 - DeepMem クラウドと Mem0 クラウドを比較します。deepmem.dev と mem0.ai でキーを登録し、python benchmarks/benchmark_cloud.py を実行してください。
  • セルフホスト版 - お使いの DeepMem とハードウェアで実行します(キー不要、外部サービス不要):python benchmarks/run_benchmark.py。

どちらのスクリプトにも自己完結型のワークロードが含まれており、P50/P95/P99 とスループットをレポートします。この README 冒頭の数値はこれらのスクリプトで取得したものです。再実行して、ご自身のパーセンタイルを確認してください。

FAQ

クラウドは必要ですか? いいえ。オープンソースのサーバーは単独で完全に機能します。クラウド(deepmem.dev)は運用不要の選択肢で、API は同じです。

オフラインで動作しますか? 検索と raw-store(infer=false)はネットワーク接続なしで動作します。LLM による事実抽出(infer=true)には LLM キーが必要です。または、ローカルの OpenAI 互換モデル(Ollama / vLLM / LM Studio)を実行し、LLM_BASE_URL をそのモデルに設定してください。

データはどこに保存されますか? お使いの Qdrant(ローカルファイルまたはサーバー)と SQLite の監査ログに保存されます。設定した LLM/埋め込みの呼び出し以外で、データがマシンの外部に送信されることはありません。

マルチテナントに対応していますか? はい。単一の Qdrant コレクションを user_id で厳密にフィルタリングします。agent_id / run_id を追加すると、エージェントとセッションのスコープを設定できます。

本番環境で使用できますか? リモート Qdrant を使用し、systemd のもとで本番環境で利用されています。ローカルファイルの Qdrant は開発環境やシングルワーカー構成には適していますが、マルチワーカー構成や高スループットの場合は Qdrant サーバーを使用してください。

開発

pip install -r requirements.txt
DEEPMEMORY_DEBUG=1 python -m uvicorn server.main:app --reload --host 0.0.0.0 --port 8000
pytest tests/ -x -v

ライセンス

MIT。

コメント

MCP は初めてですか?

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

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