Memlord

官方

自託管MCP記憶伺服器,適用於個人使用與團隊協作

你可以用 Memlord MCP 做什麼?

  • 儲存帶有類型和標籤的記憶 — 使用 store_memory 儲存事實、偏好、指示、回饋、決策或見解,並可選擇設定到期時間。
  • 使用混合檢索搜尋記憶 — 呼叫 retrieve_memory 透過結合 BM25 全文檢索與向量語意搜尋來尋找相關記憶,並回傳簡潔的片段。
  • 依時間表達式回憶記憶 — 使用 recall_memory 尋找符合自然語言時間查詢(例如 "last week" 或 "yesterday")的記憶。
  • 瀏覽與篩選所有記憶 — 呼叫 list_memories 並搭配類型和標籤篩選條件,以分頁方式瀏覽已儲存的記憶。
  • 透過夢境整合記憶 — 執行 dream 提示,讓助手審查 dream_report 候選項目,將近似重複的內容合併為見解,並以非破壞性方式淘汰已被取代的記憶。

文件

自託管的 MCP 記憶伺服器,採用混合 BM25 + 語義搜尋,並以 PostgreSQL + pgvector 為後端

適用於個人和團隊的自託管 MCP 記憶伺服器

License Python Version MCP Ruff MCP score

快速入門運作方式MCP 工具設定系統需求授權條款


✨ 功能特色

  • 🔍 混合搜尋 — 透過倒數排名融合 (Reciprocal Rank Fusion) 結合 BM25(全文檢索)與向量 KNN(pgvector)
  • 📂 多使用者 — 每位使用者僅能看到自己的記憶;工作區則用於共享團隊知識
  • 🛠️ 11 個 MCP 工具 — 儲存、擷取、回想、列出、依標籤搜尋、取得、更新、刪除、移動、列出工作區、夢境報告
  • 💤 夢境 — 一個引導式的整合流程(dream MCP 提示詞與 dream_report 工具):找出近乎重複和衝突的記憶,並在客戶端 LLM 的驅動下,以非破壞性方式將其合併為洞察
  • 🌐 網頁介面 — 在瀏覽器中瀏覽、搜尋、編輯和刪除記憶;匯出/匯入 JSON
  • 🔒 OAuth 2.1 — 完整的內建授權伺服器,始終啟用
  • 🐘 PostgreSQL — 使用 pgvector 處理嵌入向量,使用 tsvector 進行全文檢索
  • 📊 漸進式揭露 — 搜尋預設回傳精簡摘要;僅在需要時呼叫 get_memory(name),以減少 token 用量
  • 🔁 去重 — 儲存前自動偵測近乎相同的記憶,防止雜訊累積

🆚 Memlord 與其他方案的比較

MemlordOpenMemorymcp-memory-servicebasic-memory
搜尋BM25 + 向量 + RRF僅向量 (Qdrant)BM25 + 向量 + RRFBM25 + 向量
嵌入模型本機 ONNX,無需設定預設 OpenAI;可選用 Ollama本機 ONNX,無需設定本機 FastEmbed
儲存PostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + Markdown 檔案
多使用者❌ 實務上為單一使用者⚠️ agent-ID 範圍劃分,無隔離機制
工作區✅ 共享 + 個人,邀請連結⚠️ "Apps" 命名空間⚠️ 標籤 + conversation_id✅ 每個專案旗標
身份驗證✅ OAuth 2.1❌ 無 (自託管)✅ OAuth 2.0 + PKCE
網頁介面✅ 瀏覽、編輯、匯出✅ Next.js 儀表板✅ 豐富的 UI、圖形視覺化、品質分數❌ 本機;僅限雲端
MCP 工具11515+~20
自託管✅ 單一處理程序✅ Docker (3 個容器)
記憶輸入手動 (明確儲存)由 LLM 自動擷取手動手動 (Markdown 筆記)
記憶類型事實 / 偏好 / 指示 / 回饋 / 決策 / 洞察自動擷取的事實觀察 + wiki 連結
時間感知搜尋✅ 自然語言日期⚠️ 僅限 REST,不在 MCP 工具中✅ recent_activity
Token 效率✅ 漸進式揭露✅ build_context 遍歷
匯入 / 匯出✅ JSON✅ ZIP (JSON + JSONL)✅ Markdown (人類可讀)
授權條款AGPL-3.0 / 商業Apache 2.0Apache 2.0AGPL-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\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_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列出您所屬的工作區(包含個人工作區)
dream_report唯讀的整合候選項目:相似的記憶對、已過期和即將過期的記憶

dream MCP 提示詞會引導客戶端 LLM 對 dream_report 的輸出進行完整的整合流程:分類相似的記憶對(重複 / 互補 / 衝突),合併為 insight 記憶,並透過 expires_at 淘汰被取代的記憶 — 全程為非破壞性操作。

工作區管理(建立、邀請、加入、離開)則透過網頁介面處理。


💻 系統需求

  • 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 採用雙重授權: