Memlord

公式

個人利用およびチーム向けのセルフホスト型MCPメモリサーバー

Memlord MCPで何ができますか?

  • 種類とタグを指定して記憶を保存store_memory を使用して、事実、設定、指示、フィードバックを保存します。自動で重複に近い内容を検出します。
  • ハイブリッド検索で記憶を検索retrieve_memory を使用して、BM25全文検索とセマンティックベクトル検索を組み合わせて記憶を見つけます。
  • 時間表現で記憶を呼び出すrecall_memory を使用して、「先週」や「昨日」のような自然言語の時間クエリで記憶を見つけます。
  • 記憶を一覧表示・フィルタリングlist_memories で種類やタグごとに記憶を閲覧したり、search_by_tag でAND/OR論理を使ってタグを組み合わせます。
  • 必要に応じて記憶の全内容を取得 — 検索スニペット以上の詳細が必要な場合、get_memory で名前を指定して完全な記憶を取得します。
  • 記憶の更新、削除、移動update_memory で内容、タグ、有効期限を変更し、delete_memory で削除、move_memory でワークスペース間を移動します。

ドキュメント

セルフホスト型MCPメモリサーバー、BM25 + セマンティック検索のハイブリッド、PostgreSQL + pgvector対応

個人およびチーム向けセルフホスト型MCPメモリサーバー

License Python Version MCP Ruff MCP score

クイックスタート仕組みMCPツール設定要件ライセンス


✨ 機能

  • 🔍 ハイブリッド検索 — BM25(全文検索)+ ベクトルKNN(pgvector)を相互ランク融合で統合
  • 📂 マルチユーザー — 各ユーザーは自分のメモリのみ参照可能。共有チーム知識用のワークスペース
  • 🛠️ 10個のMCPツール — 保存、取得、呼び出し、一覧表示、タグ検索、取得、更新、削除、移動、ワークスペース一覧
  • 🌐 Web UI — ブラウザでメモリの閲覧、検索、編集、削除が可能。JSONのエクスポート/インポート
  • 🔒 OAuth 2.1 — 完全なインプロセス認可サーバー、常時有効
  • 🐘 PostgreSQL — 埋め込みにpgvector、全文検索にtsvectorを使用
  • 📊 段階的開示 — 検索はデフォルトでコンパクトなスニペットを返します。必要な場合のみ get_memory(name) を呼び出し、トークン使用量を削減
  • 🔁 重複排除 — 保存前にほぼ同一のメモリを自動検出し、ノイズの蓄積を防止

🆚 Memlordの比較

MemlordOpenMemorymcp-memory-servicebasic-memory
検索BM25 + ベクトル + RRFベクトルのみ (Qdrant)BM25 + ベクトル + RRFBM25 + ベクトル
埋め込みローカルONNX、ゼロ設定OpenAIデフォルト; OllamaオプションローカルONNX、ゼロ設定ローカルFastEmbed
ストレージPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + Markdownファイル
マルチユーザー❌ 実質シングルユーザー⚠️ エージェントIDスコープ、分離なし
ワークスペース✅ 共有 + 個人、招待リンク⚠️ 「アプリ」名前空間⚠️ タグ + conversation_id✅ プロジェクト単位フラグ
認証✅ OAuth 2.1❌ なし (セルフホスト)✅ OAuth 2.0 + PKCE
Web UI✅ 閲覧、編集、エクスポート✅ Next.jsダッシュボード✅ リッチUI、グラフ可視化、品質スコア❌ ローカル; クラウドのみ
MCPツール10515+~20
セルフホスト✅ 単一プロセス✅ Docker (3コンテナ)
メモリ入力手動 (明示的保存)LLMによる自動抽出手動手動 (Markdownノート)
メモリタイプ事実 / 好み / 指示 / フィードバック自動抽出された事実観測 + wikiリンク
時間認識検索✅ 自然言語の日付⚠️ RESTのみ、MCPツールでは非対応✅ recent_activity
トークン効率✅ 段階的開示✅ build_contextトラバーサル
インポート / エクスポート✅ JSON✅ ZIP (JSON + JSONL)✅ Markdown (人間可読)
ライセンスAGPL-3.0 / 商用Apache 2.0Apache 2.0AGPL-3.0

競合製品が真に優れている点:

  • OpenMemory — 生の会話テキストからメモリを自動抽出。手動で保存内容を決める必要なし。優れたインポート/エクスポート
  • mcp-memory-service — よりリッチなWeb UI(グラフ可視化、品質スコアリング、8タブ)。より寛容なライセンス(Apache 2.0)。複数のトランスポートオプション(stdio、SSE、HTTP)
  • basic-memory — メモリは人間が読めるMarkdownファイルで、サーバーなしで編集、バージョン管理、閲覧が可能。Wikiスタイルのエンティティリンクがローカルナレッジグラフを形成。約20のMCPツール

Memlordを選ぶべきケース:

  • ゼロ設定のローカル埋め込みが必要 — ONNXモデルがサーバーに同梱され、Ollamaや外部API不要
  • 適切なOAuth 2.1認証と招待ベースのワークスペースを備えたマルチユーザーチームサーバーを運用
  • 単一マシンのSQLiteを超えてスケールする本番グレードのデータベース(PostgreSQL)が必要
  • メモリを明示的に管理 — LLMが抽出するもの全てではなく、重要なものを型付け・タグ付けして正確に保存
  • クラウドサブスクリプションなしで、完全なCRUDとJSONエクスポートを備えたセルフホストWeb UIが必要

🚀 クイックスタート

🐳 Docker

cp .env.example .env
docker compose up

HTTPサーバー (マルチユーザー、Web UI、OAuth)

# Install dependencies
uv sync --dev

# Download ONNX model (~23 MB)
uv run python scripts/download_model.py

# Run migrations
alembic upgrade head

# Start the server
memlord

Web UIは http://localhost:8000 を開いてください。MCPエンドポイントは /mcp です。


🔍 仕組み

各検索リクエストはBM25とベクトルKNNを並列実行し、相互ランク融合で結果を統合します:

flowchart TD
    Q([query]) --> BM25["BM25\nsearch_vector @@ websearch_to_tsquery"]
    Q --> EMB["ONNX embed\nall-MiniLM-L6-v2 · 384d · local"]
    EMB --> KNN["KNN\nembedding <=> query_vector\ncosine distance"]
    BM25 --> RRF["RRF fusion\nscore = 1/(k+rank_bm25) + 1/(k+rank_vec)\nk=60"]
    KNN --> RRF
    RRF --> R([top-N results])

⚙️ 設定

すべての設定は MEMLORD_ プレフィックスを使用します。完全なリストは.env.exampleを参照してください。

変数デフォルト説明
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordPostgreSQL接続URL
MEMLORD_PORT8000サーバーポート
MEMLORD_BASE_URLhttp://localhost:8000OAuth用公開URL (HTTPモード)
MEMLORD_OAUTH_JWT_SECRETmemlord-dev-secret-please-changeJWT署名シークレット (HTTPモード)

デプロイ前に MEMLORD_BASE_URL を公開URLに設定し、MEMLORD_OAUTH_JWT_SECRET を変更してください。


🛠️ MCPツール

ツール説明
store_memoryメモリを保存(内容による冪等性)。ほぼ重複する場合は例外発生。オプションの expires_at
retrieve_memoryハイブリッドセマンティック + 全文検索。デフォルトでスニペットを返します
recall_memory自然言語の時間表現で検索。デフォルトでスニペットを返します
list_memoriesタイプ/タグフィルター付きページネーション一覧
search_by_tagAND/ORタグ検索
get_memory名前で単一メモリを取得(全内容)
update_memory名前で内容、タイプ、タグ、メタデータ、有効期限を更新(およびオプションで名前変更)
delete_memory名前で削除
move_memoryメモリを別のワークスペースに移動
list_workspaces所属するワークスペースを一覧表示(個人用を含む)

ワークスペース管理(作成、招待、参加、退出)はWeb UIで処理されます。


💻 システム要件

  • Python 3.12
  • PostgreSQL ≥ 15、pgvector拡張機能付き
  • uv — Pythonパッケージマネージャー

👨‍💻 開発

pyright src/           # type check
ruff format .          # format
pytest                 # run tests
alembic-autogen-check  # verify migrations are up to date

📄 ライセンス

Memlordはデュアルライセンスです:

  • AGPL-3.0 — オープンソース利用は無料。修正版をネットワークサービスとして実行する場合、ソースコードの公開が必要です。
  • 商用ライセンス — プロプライエタリまたはクローズドソースのデプロイメント向け。購入は sergey@memlord.com または dmitry@memlord.com までご連絡ください。