Skip to main content
Glama

✨ 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

  • 🛠️ 11 MCP tools — store, retrieve, recall, list, search by tag, get, update, delete, move, list workspaces, dream report

  • 💤 Dreaming — a guided consolidation pass (dream MCP prompt + dream_report tool): finds near-duplicate and conflicting memories, merges them into insights non-destructively, driven by the client LLM

  • 🌐 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(name) only for what you need, reducing token usage

  • 🔁 Deduplication — automatically detects near-identical memories before saving, preventing noise accumulation


Related MCP server: Memory MCP Server

🆚 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

11

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 / decision / insight

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

🐳 Docker

cp .env.example .env
docker compose up

HTTP server (multi-user, 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

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


🔍 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\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])

⚙️ 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 (HTTP mode)

MEMLORD_OAUTH_JWT_SECRET

memlord-dev-secret-please-change

JWT signing secret (HTTP mode)

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; optional expires_at

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 name with full content (expired included)

update_memory

Update content, type, tags, metadata, or expiry by name (and optionally rename)

delete_memory

Delete by name

move_memory

Move a memory to a different workspace

list_workspaces

List workspaces you are a member of (including personal)

dream_report

Read-only consolidation candidates: similar memory pairs, expired and expiring-soon memories

The dream MCP prompt walks the client LLM through a full consolidation pass over the dream_report output: classify similar pairs (duplicate / complementary / conflict), merge into insight memories, retire superseded ones via expires_at — never destructively.

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
ruff format .          # format
pytest                 # run tests
alembic-autogen-check  # verify migrations are up to date

📄 License

Memlord is dual-licensed:

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
5dResponse time
4dRelease cycle
21Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    Persistent memory and handoff intelligence layer for MCP agents. Most memory servers retrieve text — Memory Nexus compounds operational context, learning from usage and progressively synthesizing observations into higher-order intelligence across sessions and tools.
    Last updated
    MIT
  • F
    license
    -
    quality
    D
    maintenance
    Provides persistent AI agent memory using a local vector database for long-term semantic storage and short-term session scratchpads. It enables low-latency memory operations including search, storage, and bulk management without external cloud dependencies.
    Last updated

View all related MCP servers

Related MCP Connectors

  • Cloud-hosted MCP server for durable AI memory

  • Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.

  • User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MyrikLD/memlord'

If you have feedback or need assistance with the MCP directory API, please join our Discord server