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 記憶伺服器
快速入門 • 運作方式 • MCP 工具 • 設定 • 需求 • 授權條款
✨ 功能特色
- 🔍 混合搜尋 — 透過倒數排名融合 (Reciprocal Rank Fusion) 結合 BM25(全文檢索)與向量 KNN(pgvector)
- 📂 多使用者 — 每位使用者僅能看見自己的記憶;工作區則用於共享團隊知識
- 🛠️ 10 個 MCP 工具 — 儲存、檢索、回想、列出、依標籤搜尋、取得、更新、刪除、移動、列出工作區
- 🌐 網頁介面 — 在瀏覽器中瀏覽、搜尋、編輯和刪除記憶;匯出/匯入 JSON
- 🔒 OAuth 2.1 — 完整的內建授權伺服器,始終啟用
- 🐘 PostgreSQL — 使用 pgvector 處理嵌入向量,tsvector 進行全文檢索
- 📊 漸進式揭露 — 搜尋預設回傳精簡摘要;僅在需要時呼叫
get_memory(name),以減少 token 用量 - 🔁 去重複 — 儲存前自動偵測近乎相同的記憶,防止雜訊累積
🆚 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 檔案 |
| 多使用者 | ✅ | ❌ 實務上為單一使用者 | ⚠️ agent-ID 範圍劃分,無隔離 | ❌ |
| 工作區 | ✅ 共享 + 個人,邀請連結 | ⚠️ "Apps" 命名空間 | ⚠️ 標籤 + conversation_id | ✅ 每個專案旗標 |
| 驗證 | ✅ OAuth 2.1 | ❌ 無 (自託管) | ✅ OAuth 2.0 + PKCE | ❌ |
| 網頁介面 | ✅ 瀏覽、編輯、匯出 | ✅ Next.js 儀表板 | ✅ 豐富的 UI、圖形視覺化、品質分數 | ❌ 本機;僅雲端 |
| MCP 工具 | 10 | 5 | 15+ | ~20 |
| 自託管 | ✅ 單一處理程序 | ✅ Docker (3 個容器) | ✅ | ✅ |
| 記憶輸入 | 手動(明確儲存) | 由 LLM 自動擷取 | 手動 | 手動 (Markdown 筆記) |
| 記憶類型 | 事實 / 偏好 / 指示 / 回饋 | 自動擷取的事實 | — | 觀察 + wiki 連結 |
| 時間感知搜尋 | ✅ 自然語言日期 | ⚠️ 僅 REST,不在 MCP 工具中 | — | ✅ recent_activity |
| Token 效率 | ✅ 漸進式揭露 | ❌ | — | ✅ build_context 遍歷 |
| 匯入 / 匯出 | ✅ JSON | ✅ ZIP (JSON + JSONL) | — | ✅ Markdown (人類可讀) |
| 授權條款 | AGPL-3.0 / 商業 | Apache 2.0 | Apache 2.0 | AGPL-3.0 |
競爭對手的真正優勢:
- OpenMemory — 從原始對話文字自動擷取記憶;無需手動決定儲存內容;良好的匯入/匯出功能
- mcp-memory-service — 更豐富的網頁介面(圖形視覺化、品質評分、8 個分頁);更寬鬆的授權條款 (Apache 2.0);多種傳輸選項 (stdio、SSE、HTTP)
- basic-memory — 記憶為人類可讀的 Markdown 檔案,無需伺服器即可編輯、版本控制和閱讀;wiki 風格的實體連結形成本機知識圖譜;約 20 個 MCP 工具
何時選擇 Memlord:
- 您需要無需設定的本機嵌入 — ONNX 模型隨伺服器提供,無需 Ollama 或外部 API
- 您運行多使用者團隊伺服器,具備適當的 OAuth 2.1 驗證和基於邀請的工作區
- 您需要一個生產級資料庫 (PostgreSQL),其擴展性超越單機 SQLite
- 您明確地管理記憶 — 僅儲存重要的內容,並加以分類和標記,而非 LLM 決定擷取的所有內容
- 您需要一個自託管的網頁介面,具備完整的 CRUD 和 JSON 匯出功能,無需雲端訂閱
🚀 快速入門
🐳 Docker
cp .env.example .env
docker compose up
HTTP 伺服器(多使用者、網頁介面、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
開啟 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\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_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 | 列出您所屬的工作區(包含個人工作區) |
工作區管理(建立、邀請、加入、離開)透過網頁介面處理。
💻 系統需求
- 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 購買。