Memlord について
Memlord は、個人およびチーム向けのセルフホスト可能な MCP メモリサーバーです。PostgreSQL と pgvector を用い、BM25 による全文検索とベクトル検索を組み合わせています。ユーザーごとの分離、共有ワークスペース、OAuth 2.1 認可、Web UI を備えます。ライセンスは AGPL-3.0 と商用ライセンスの二本立てです。
主な機能
- 01BM25 とベクトル検索を組み合わせたハイブリッド検索
- 02ユーザーごとの分離と共有ワークスペース
- 03OAuth 2.1 認可サーバーの内蔵
- 04閲覧・編集・JSON エクスポートができる Web UI
- 05LLM を用いた dream による整理ワークフロー
- 06保存前の近似重複検出
活用シーン
- 01個人やチームで共有するメモリストアの運用
- 02複数の MCP クライアント間での好みや決定事項の保存と検索
- 03類似または矛盾するメモリの定期的な整理
MCP 対応
本プロジェクトは MCP サーバーであり、store_memory、retrieve_memory、dream_report などのメモリ関連ツール 11 件と dream プロンプトを MCP クライアントに提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://app.memlord.com/mcpclaude mcp add --transport http memlord https://app.memlord.com/mcp{"mcpServers":{"memlord":{"type":"http","url":"https://app.memlord.com/mcp"}}}Cursor で開く{"servers":{"memlord":{"type":"http","url":"https://app.memlord.com/mcp"}}}VS Code で開く{"mcpServers":{"memlord":{"type":"http","url":"https://app.memlord.com/mcp"}}}{"mcpServers":{"memlord":{"serverUrl":"https://app.memlord.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
個人利用とチーム向けのセルフホスト可能な MCP メモリサーバー
クイックスタート • 仕組み • MCP ツール • 設定 • 要件 • ライセンス
✨ 機能
- 🔍 ハイブリッド検索 — BM25 (全文検索) + ベクトル KNN (pgvector) を Reciprocal Rank Fusion で統合
- 📂 マルチユーザー — 各ユーザーは自分のメモリのみを閲覧できます。チームの共有ナレッジベース用のワークスペースも利用可能
- 🛠️ 11 個の MCP ツール — 保存、取得、呼び出し、一覧表示、タグ検索、取得、更新、削除、移動、ワークスペース一覧表示、dream レポート
- 💤 Dreaming — ガイド付きの統合パス (
dreamMCP プロンプト +dream_reportツール): ほぼ重複したメモリや競合するメモリを検出し、クライアント LLM によって非破壊的にインサイトへマージします - 🌐 Web UI — ブラウザでメモリを閲覧、検索、編集、削除できます。JSON のエクスポート/インポートにも対応
- 🔒 OAuth 2.1 — 完全なインプロセス認可サーバーを常時有効化
- 🐘 PostgreSQL — 埋め込みには pgvector、全文検索には tsvector を使用
- 📊 段階的な開示 — 検索はデフォルトでコンパクトなスニペットを返します。必要なものだけに対して
get_memory(name)を呼び出すことで、 トークン使用量を削減できます - 🔁 重複排除 — 保存前にほぼ同一のメモリを自動検出し、ノイズの蓄積を防ぎます
🆚 Memlord の比較
| Memlord | OpenMemory | mcp-memory-service | basic-memory | |
|---|---|---|---|---|
| 検索 | BM25 + ベクトル + RRF | ベクトルのみ(Qdrant) | BM25 + ベクトル + RRF | BM25 + ベクトル |
| 埋め込み | ローカル ONNX、設定不要 | デフォルトは OpenAI、Ollama は任意 | ローカル ONNX、設定不要 | ローカル FastEmbed |
| ストレージ | PostgreSQL + pgvector | PostgreSQL + Qdrant | SQLite-vec / Cloudflare Vectorize | SQLite + Markdown ファイル |
| マルチユーザー | ✅ | ❌ 実質シングルユーザー | ⚠️ エージェント ID によるスコープ分け、分離なし | ❌ |
| ワークスペース | ✅ 共有 + 個人、招待リンク | ⚠️ 「Apps」名前空間 | ⚠️ タグ + conversation_id | ✅ プロジェクト単位のフラグ |
| 認証 | ✅ OAuth 2.1 | ❌ なし(セルフホスト) | ✅ OAuth 2.0 + PKCE | ❌ |
| Web UI | ✅ 閲覧、編集、エクスポート | ✅ Next.js ダッシュボード | ✅ リッチ UI、グラフ可視化、品質スコア | ❌ ローカルのみ、クラウド非対応 |
| MCP ツール | 11 | 5 | 15+ | ~20 |
| セルフホスト可能 | ✅ 単一プロセス | ✅ Docker(3 コンテナ) | ✅ | ✅ |
| メモリ入力 | 手動(明示的な保存) | LLM による自動抽出 | 手動 | 手動(Markdown ノート) |
| メモリの種類 | fact / preference / instruction / feedback / decision / insight | 自動抽出されたファクト | — | オブザベーション + wiki リンク |
| 時間を考慮した検索 | ✅ 自然言語の日付 | ⚠️ REST のみ、MCP ツールでは未対応 | — | ✅ recent_activity |
| トークン効率 | ✅ 段階的な開示 | ❌ | — | ✅ build_context トラバーサル |
| インポート / エクスポート | ✅ JSON | ✅ ZIP(JSON + JSONL) | — | ✅ Markdown(人間が読める形式) |
| ライセンス | AGPL-3.0 / Commercial | Apache 2.0 | Apache 2.0 | AGPL-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 を並列で実行し、Reciprocal Rank Fusion を介して結果をマージします:
flowchart TD
Q([query]) --> BM25["BM25\nsearch_vector @@ websearch_to_tsquery"]
Q --> EMB["ONNX embed\nparaphrase-multilingual-MiniLM-L12-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_URL | postgresql+asyncpg://postgres:postgres@localhost/memlord | PostgreSQL 接続 URL |
MEMLORD_PORT | 8000 | サーバーポート |
MEMLORD_BASE_URL | http://localhost:8000 | OAuth 用の公開 URL(HTTP モード) |
MEMLORD_OAUTH_JWT_SECRET | memlord-dev-secret-please-change | JWT 署名シークレット(HTTP モード) |
デプロイ前に MEMLORD_BASE_URL を公開 URL に設定し、MEMLORD_OAUTH_JWT_SECRET を変更してください。
🛠️ MCP ツール
| ツール | 説明 |
|---|---|
store_memory | メモリを保存します(内容に対して冪等)。ほぼ重複する場合はエラーを発生させます。任意で expires_at を指定できます |
retrieve_memory | ハイブリッドなセマンティック検索 + 全文検索。デフォルトではスニペットを返します |
recall_memory | 自然言語の時間表現で検索します。デフォルトではスニペットを返します |
list_memories | 型/タグフィルター付きのページネーションされた一覧 |
search_by_tag | AND/OR タグ検索 |
get_memory | 名前で単一のメモリを完全な内容とともに取得します(期限切れも含む) |
update_memory | 名前で内容、型、タグ、メタデータ、または有効期限を更新します(任意で名前変更も可能) |
delete_memory | 名前で削除します |
move_memory | メモリを別のワークスペースに移動します |
list_workspaces | 自分がメンバーであるワークスペース(個人用を含む)を一覧表示します |
dream_report | 読み取り専用の統合候補:類似するメモリのペア、期限切れおよびまもなく期限切れになるメモリ |
dream MCP プロンプトは、クライアント LLM を dream_report の出力に対する完全な統合パスへと導きます:類似するペアを分類し(重複 / 補完 / 競合)、insight メモリへマージし、expires_at によって置き換えられたものを退役させます — 決して破壊的にではなく。
ワークスペースの管理(作成、招待、参加、脱退)は 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 — オープンソースでの使用は無料です。改変したバージョンをネットワークサービスとして実行する場合、ソースコードを公開する必要があります。
- 商用ライセンス — プロプライエタリまたはクローズドソースのデプロイ向けです。購入については [email protected] または [email protected] までお問い合わせください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。