Memlord
offiziellSelbstgehosteter MCP-Speicherserver für den persönlichen Gebrauch und Teams
Was kann man mit Memlord MCP machen?
- Speichern einer Erinnerung mit Typ und Tags — Speichern Sie Fakten, Präferenzen, Anweisungen oder Feedback mit
store_memory, mit automatischer Erkennung von nahezu identischen Einträgen. - Suchen von Erinnerungen mit hybridem Abruf — Verwenden Sie
retrieve_memory, um Erinnerungen über eine kombinierte BM25-Volltext- und semantische Vektorsuche zu finden. - Abrufen von Erinnerungen nach Zeitausdruck — Finden Sie Erinnerungen mithilfe von natürlichsprachlichen Zeitabfragen wie „letzte Woche“ oder „gestern“ mit
recall_memory. - Auflisten und Filtern von Erinnerungen — Durchsuchen Sie Erinnerungen nach Typ oder Tag mit
list_memories, oder kombinieren Sie Tags mit UND/ODER-Logik übersearch_by_tag. - Vollständigen Erinnerungsinhalt bei Bedarf abrufen — Rufen Sie eine vollständige Erinnerung mit
get_memoryab, wenn Sie Details über die Suchausschnitte hinaus benötigen. - Erinnerungen aktualisieren, löschen oder verschieben — Ändern Sie Inhalt, Tags oder Ablauf mit
update_memory, entfernen Sie mitdelete_memoryoder verschieben Sie zwischen Arbeitsbereichen mitmove_memory.
Dokumentation
Selbst gehosteter MCP-Speicherserver für den persönlichen Gebrauch und Teams
Schnellstart • Funktionsweise • MCP-Tools • Konfiguration • Anforderungen • Lizenz
✨ Funktionen
- 🔍 Hybride Suche — BM25 (Volltext) + Vektor-KNN (pgvector), fusioniert durch Reciprocal Rank Fusion
- 📂 Mehrbenutzerfähig — jeder Benutzer sieht nur seine eigenen Erinnerungen; Arbeitsbereiche für geteiltes Teamwissen
- 🛠️ 10 MCP-Tools — speichern, abrufen, erinnern, auflisten, nach Tag suchen, abrufen, aktualisieren, löschen, verschieben, Arbeitsbereiche auflisten
- 🌐 Web-UI — Erinnerungen im Browser durchsuchen, suchen, bearbeiten und löschen; JSON exportieren/importieren
- 🔒 OAuth 2.1 — vollständiger In-Prozess-Autorisierungsserver, immer aktiviert
- 🐘 PostgreSQL — pgvector für Einbettungen, tsvector für Volltextsuche
- 📊 Progressive Offenlegung — Suche gibt standardmäßig kompakte Ausschnitte zurück; rufe
get_memory(name)nur für das auf, was du benötigst, um Token-Verbrauch zu reduzieren - 🔁 Deduplizierung — erkennt automatisch nahezu identische Erinnerungen vor dem Speichern und verhindert so die Anhäufung von Rauschen
🆚 Wie Memlord im Vergleich abschneidet
| Memlord | OpenMemory | mcp-memory-service | basic-memory | |
|---|---|---|---|---|
| Suche | BM25 + Vektor + RRF | Nur Vektor (Qdrant) | BM25 + Vektor + RRF | BM25 + Vektor |
| Einbettungen | Lokales ONNX, keine Konfiguration | OpenAI Standard; Ollama optional | Lokales ONNX, keine Konfiguration | Lokales FastEmbed |
| Speicher | PostgreSQL + pgvector | PostgreSQL + Qdrant | SQLite-vec / Cloudflare Vectorize | SQLite + Markdown-Dateien |
| Mehrbenutzerfähig | ✅ | ❌ in der Praxis Einzelbenutzer | ⚠️ Agent-ID-Bereich, keine Isolation | ❌ |
| Arbeitsbereiche | ✅ geteilt + persönlich, Einladungslinks | ⚠️ "Apps"-Namensraum | ⚠️ Tags + conversation_id | ✅ pro Projekt-Flag |
| Authentifizierung | ✅ OAuth 2.1 | ❌ keine (selbst gehostet) | ✅ OAuth 2.0 + PKCE | ❌ |
| Web-UI | ✅ durchsuchen, bearbeiten, exportieren | ✅ Next.js Dashboard | ✅ umfangreiche UI, Diagrammansicht, Qualitätsbewertungen | ❌ lokal; nur Cloud |
| MCP-Tools | 10 | 5 | 15+ | ~20 |
| Selbst gehostet | ✅ einzelner Prozess | ✅ Docker (3 Container) | ✅ | ✅ |
| Erinnerungseingabe | Manuell (explizites Speichern) | Automatisch durch LLM extrahiert | Manuell | Manuell (Markdown-Notizen) |
| Erinnerungstypen | Fakt / Präferenz / Anweisung / Feedback | automatisch extrahierte Fakten | — | Beobachtungen + Wiki-Links |
| Zeitbewusste Suche | ✅ natürlichsprachliche Daten | ⚠️ nur REST, nicht in MCP-Tools | — | ✅ recent_activity |
| Token-Effizienz | ✅ progressive Offenlegung | ❌ | — | ✅ build_context traversal |
| Import / Export | ✅ JSON | ✅ ZIP (JSON + JSONL) | — | ✅ Markdown (menschenlesbar) |
| Lizenz | AGPL-3.0 / Kommerziell | Apache 2.0 | Apache 2.0 | AGPL-3.0 |
Wo Wettbewerber einen echten Vorteil haben:
- OpenMemory — extrahiert automatisch Erinnerungen aus rohem Gesprächstext; keine Notwendigkeit, manuell zu entscheiden, was gespeichert werden soll; guter Import/Export
- mcp-memory-service — umfangreichere Web-UI (Diagrammvisualisierung, Qualitätsbewertung, 8 Tabs); freizügigere Lizenz (Apache 2.0); mehrere Transportoptionen (stdio, SSE, HTTP)
- basic-memory — Erinnerungen sind menschenlesbare Markdown-Dateien, die du ohne Server bearbeiten, versionieren und lesen kannst; Wiki-artige Entitätslinks bilden einen lokalen Wissensgraphen; ~20 MCP-Tools
Wann du Memlord wählen solltest:
- Du möchtest konfigurationslose lokale Einbettungen — das ONNX-Modell wird mit dem Server ausgeliefert, kein Ollama oder externe API erforderlich
- Du betreibst einen Mehrbenutzer-Teamserver mit ordnungsgemäßer OAuth 2.1-Authentifizierung und einladungsbasierten Arbeitsbereichen
- Du möchtest eine produktionstaugliche Datenbank (PostgreSQL), die über SQLite auf einem einzelnen Rechner hinaus skaliert
- Du verwaltest Erinnerungen explizit — speichere genau das, was wichtig ist, typisiert und getaggt, nicht alles, was das LLM zu extrahieren beschließt
- Du möchtest eine selbst gehostete Web-UI mit vollständigem CRUD und JSON-Export, ohne Cloud-Abonnement
🚀 Schnellstart
🐳 Docker
cp .env.example .env
docker compose up
HTTP-Server (Mehrbenutzer, 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
Öffne http://localhost:8000 für die Web-UI. Der MCP-Endpunkt ist unter /mcp.
🔍 Funktionsweise
Jede Suchanfrage führt BM25 und Vektor-KNN parallel aus und führt die Ergebnisse dann über Reciprocal Rank Fusion zusammen:
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])
⚙️ Konfiguration
Alle Einstellungen verwenden das Präfix MEMLORD_. Siehe .env.example für die vollständige Liste.
| Variable | Standard | Beschreibung |
|---|---|---|
MEMLORD_DB_URL | postgresql+asyncpg://postgres:postgres@localhost/memlord | PostgreSQL-Verbindungs-URL |
MEMLORD_PORT | 8000 | Server-Port |
MEMLORD_BASE_URL | http://localhost:8000 | Öffentliche URL für OAuth (HTTP-Modus) |
MEMLORD_OAUTH_JWT_SECRET | memlord-dev-secret-please-change | JWT-Signaturgeheimnis (HTTP-Modus) |
Setze MEMLORD_BASE_URL auf deine öffentliche URL und ändere MEMLORD_OAUTH_JWT_SECRET vor der Bereitstellung.
🛠️ MCP-Tools
| Tool | Beschreibung |
|---|---|
store_memory | Speichere eine Erinnerung (idempotent nach Inhalt); löst bei Fast-Duplikaten aus; optional expires_at |
retrieve_memory | Hybride semantische + Volltextsuche; gibt standardmäßig Ausschnitte zurück |
recall_memory | Suche nach natürlichsprachlichem Zeitausdruck; gibt standardmäßig Ausschnitte zurück |
list_memories | Seitenweise Liste mit Typ-/Tag-Filtern |
search_by_tag | UND/ODER-Tag-Suche |
get_memory | Rufe eine einzelne Erinnerung nach Namen mit vollständigem Inhalt ab |
update_memory | Aktualisiere Inhalt, Typ, Tags, Metadaten oder Ablaufdatum nach Namen (und optional umbenennen) |
delete_memory | Nach Namen löschen |
move_memory | Verschiebe eine Erinnerung in einen anderen Arbeitsbereich |
list_workspaces | Liste Arbeitsbereiche auf, in denen du Mitglied bist (einschließlich persönlicher) |
Die Arbeitsbereichsverwaltung (erstellen, einladen, beitreten, verlassen) erfolgt über die Web-UI.
💻 Systemanforderungen
- Python 3.12
- PostgreSQL ≥ 15 mit pgvector-Erweiterung
- uv — Python-Paketmanager
👨💻 Entwicklung
pyright src/ # type check
ruff format . # format
pytest # run tests
alembic-autogen-check # verify migrations are up to date
📄 Lizenz
Memlord ist doppelt lizenziert:
- AGPL-3.0 — kostenlos für Open-Source-Nutzung. Wenn du eine modifizierte Version als Netzwerkdienst betreibst, musst du deinen Quellcode veröffentlichen.
- Kommerzielle Lizenz — für proprietäre oder Closed-Source-Bereitstellungen. Kontaktiere sergey@memlord.com oder dmitry@memlord.com zum Kauf.