Memlord

Memlord

Self-hosted MCP memory server for personal use and teams

Category
访问服务器

README

<p align="center"> <img src="https://raw.githubusercontent.com/MyrikLD/memlord/refs/heads/main/media/logo.svg" alt="Self-hosted MCP memory server with hybrid BM25 + semantic search, backed by PostgreSQL + pgvector" width="100%"> </p>

<h2 align="center">Self-hosted MCP memory server for personal use and teams</h4>

<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/License-AGPL%203.0-blue.svg" alt="License"></a> <a href="pyproject.toml"><img src="https://img.shields.io/badge/python-3.12-brightgreen.svg" alt="Python"></a> <a href="https://github.com/MyrikLD/memlord/releases"><img src="https://img.shields.io/github/v/tag/MyrikLD/memlord?label=version&color=green" alt="Version"></a> <a href="https://github.com/modelcontextprotocol/servers"><img src="https://img.shields.io/badge/MCP-compatible-purple.svg" alt="MCP"></a> <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black"></a> <a href="https://glama.ai/mcp/servers/MyrikLD/memlord"><img src="https://glama.ai/mcp/servers/MyrikLD/memlord/badges/score.svg" alt="MCP score"></a> </p>

<p align="center"> <a href="#-quickstart">Quickstart</a> • <a href="#-how-it-works">How It Works</a> • <a href="#️-mcp-tools">MCP Tools</a> • <a href="#️-configuration">Configuration</a> • <a href="#-system-requirements">Requirements</a> • <a href="#-license">License</a> </p>


✨ Features

  • 🔍 Hybrid search — BM25 (full-text) + vector KNN (pgvector) fused via Reciprocal Rank Fusion
  • 📂 Multi-user — each user sees only their own memories; workspaces for shared team knowledge
  • 🛠️ 10 MCP tools — store, retrieve, recall, list, search by tag, get, update, delete, move, list workspaces
  • 🌐 Web UI — browse, search, edit and delete memories in the browser; export/import JSON
  • 🔒 OAuth 2.1 — full in-process authorization server, always enabled
  • 🐘 PostgreSQL — pgvector for embeddings, tsvector for full-text search
  • 📊 Progressive disclosure — search returns compact snippets by default; call get_memory(id) only for what you need, reducing token usage
  • 🔁 Deduplication — automatically detects near-identical memories before saving, preventing noise accumulation

🆚 How Memlord compares

Memlord OpenMemory mcp-memory-service basic-memory
Search BM25 + vector + RRF Vector only (Qdrant) BM25 + vector + RRF BM25 + vector
Embeddings Local ONNX, zero config OpenAI default; Ollama optional Local ONNX, zero config Local FastEmbed
Storage PostgreSQL + pgvector PostgreSQL + Qdrant SQLite-vec / Cloudflare Vectorize SQLite + Markdown files
Multi-user ❌ single-user in practice ⚠️ agent-ID scoping, no isolation
Workspaces ✅ shared + personal, invite links ⚠️ "Apps" namespace ⚠️ tags + conversation_id ✅ per-project flag
Authentication ✅ OAuth 2.1 ❌ none (self-hosted) ✅ OAuth 2.0 + PKCE
Web UI ✅ browse, edit, export ✅ Next.js dashboard ✅ rich UI, graph viz, quality scores ❌ local; cloud only
MCP tools 10 5 15+ ~20
Self-hosted ✅ single process ✅ Docker (3 containers)
Memory input Manual (explicit store) Auto-extracted by LLM Manual Manual (Markdown notes)
Memory types fact / preference / instruction / feedback auto-extracted facts observations + wiki links
Time-aware search ✅ natural language dates ⚠️ REST only, not in MCP tools ✅ recent_activity
Token efficiency ✅ progressive disclosure ✅ build_context traversal
Import / Export ✅ JSON ✅ ZIP (JSON + JSONL) ✅ Markdown (human-readable)
License AGPL-3.0 / Commercial Apache 2.0 Apache 2.0 AGPL-3.0

Where competitors have a real edge:

  • OpenMemory — auto-extracts memories from raw conversation text; no need to decide what to store manually; good import/export
  • mcp-memory-service — richer web UI (graph visualization, quality scoring, 8 tabs); more permissive license (Apache 2.0); multiple transport options (stdio, SSE, HTTP)
  • basic-memory — memories are human-readable Markdown files you can edit, version-control, and read without any server; wiki-style entity links form a local knowledge graph; ~20 MCP tools

When to pick Memlord:

  • You want zero-config local embeddings — ONNX model ships with the server, no Ollama or external API needed
  • You run a multi-user team server with proper OAuth 2.1 auth and invite-based workspaces
  • You want a production-grade database (PostgreSQL) that scales beyond a single machine's SQLite
  • You manage memories explicitly — store exactly what matters, typed and tagged, not everything the LLM decides to extract
  • You want a self-hosted Web UI with full CRUD and JSON export, without a cloud subscription

🚀 Quickstart

# 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

Open http://localhost:8000 for the Web UI. The MCP endpoint is at /mcp.


🐳 Docker

cp .env.example .env
docker compose up

🔍 How It Works

Each search request runs BM25 and vector KNN in parallel, then merges results via 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])

⚙️ Configuration

All settings use the MEMLORD_ prefix. See .env.example for the full list.

Variable Default Description
MEMLORD_DB_URL postgresql+asyncpg://postgres:postgres@localhost/memlord PostgreSQL connection URL
MEMLORD_PORT 8000 Server port
MEMLORD_BASE_URL http://localhost:8000 Public URL for OAuth
MEMLORD_OAUTH_JWT_SECRET memlord-dev-secret-please-change JWT signing secret

OAuth is always enabled. Set MEMLORD_BASE_URL to your public URL and change MEMLORD_OAUTH_JWT_SECRET before deploying.


🛠️ MCP Tools

Tool Description
store_memory Save a memory (idempotent by content); raises on near-duplicates
retrieve_memory Hybrid semantic + full-text search; returns snippets by default
recall_memory Search by natural-language time expression; returns snippets by default
list_memories Paginated list with type/tag filters
search_by_tag AND/OR tag search
get_memory Fetch a single memory by ID with full content
update_memory Update content, type, tags, or metadata by ID
delete_memory Delete by ID
move_memory Move a memory to a different workspace
list_workspaces List workspaces you are a member of (including personal)

Workspace management (create, invite, join, leave) is handled via the Web UI.


💻 System Requirements

  • Python 3.12
  • PostgreSQL ≥ 15 with pgvector extension
  • uv — Python package manager

👨‍💻 Development

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

📄 License

Memlord is dual-licensed:

  • AGPL-3.0 — free for open-source use. If you run a modified version as a network service, you must publish your source code.
  • Commercial License — for proprietary or closed-source deployments. Contact sergey@memlord.com or dmitry@memlord.com to purchase.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选