Memlord
offiziellSelbstgehosteter MCP-Speicherserver für den persönlichen Gebrauch und Teams
Was kann man mit Memlord MCP machen?
- Speichern Sie eine Erinnerung mit Typ und Tags — Verwenden Sie
store_memory, um eine Tatsache, Präferenz, Anweisung, Rückmeldung, Entscheidung oder Einsicht zu speichern, optional mit Ablaufdatum. - Suchen Sie Erinnerungen mit hybrider Abfrage — Fragen Sie
retrieve_memory, um relevante Erinnerungen mittels kombinierter BM25-Volltext- und Vektor-Semantiksuche zu finden, die kompakte Ausschnitte zurückgibt. - Rufen Sie Erinnerungen nach Zeitausdruck ab — Verwenden Sie
recall_memory, um Erinnerungen zu finden, die natürlichen Sprachzeitabfragen wie „letzte Woche“ oder „gestern“ entsprechen. - Durchsuchen und filtern Sie alle Erinnerungen — Rufen Sie
list_memoriesmit Typ- und Tag-Filtern auf, um durch gespeicherte Erinnerungen zu blättern. - Konsolidieren Sie Erinnerungen durch Träumen — Führen Sie den
dream-Prompt aus, damit der Assistentdream_report-Kandidaten überprüft, nahe Duplikate zu Einsichten zusammenführt und überholte Erinnerungen nicht-destruktiv zurückzieht.
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 gemeinsames Teamwissen
- 🛠️ 11 MCP-Tools — speichern, abrufen, erinnern, auflisten, nach Tag suchen, abrufen, aktualisieren, löschen, verschieben, Arbeitsbereiche auflisten, Traumbericht
- 💤 Träumen — ein geführter Konsolidierungsdurchlauf (
dreamMCP-Prompt +dream_reportTool): findet nahezu doppelte und widersprüchliche Erinnerungen, führt sie zerstörungsfrei zu Erkenntnissen zusammen, gesteuert durch das Client-LLM - 🌐 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, Null-Konfiguration | OpenAI Standard; Ollama optional | Lokales ONNX, Null-Konfiguration | Lokales FastEmbed |
| Speicherung | 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 | 11 | 5 | 15+ | ~20 |
| Selbst gehostet | ✅ einzelner Prozess | ✅ Docker (3 Container) | ✅ | ✅ |
| Speichereingabe | Manuell (explizites Speichern) | Automatisch durch LLM extrahiert | Manuell | Manuell (Markdown-Notizen) |
| Speichertypen | Fakt / Präferenz / Anweisung / Feedback / Entscheidung / Erkenntnis | automatisch extrahierte Fakten | — | Beobachtungen + Wiki-Links |
| Zeitbewusste Suche | ✅ natürliche Sprachdaten | ⚠️ nur REST, nicht in MCP-Tools | — | ✅ recent_activity |
| Token-Effizienz | ✅ progressive Offenlegung | ❌ | — | ✅ build_context Traversierung |
| 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 Entscheidung nötig, was manuell 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 bearbeiten, versionieren und ohne Server lesen kannst; Wiki-artige Entitätslinks bilden einen lokalen Wissensgraphen; ~20 MCP-Tools
Wann du Memlord wählen solltest:
- Du möchtest Null-Konfigurations-lokale-Einbettungen — ONNX-Modell wird mit dem Server ausgeliefert, kein Ollama oder externe API nötig
- 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 einer einzelnen Maschine hinaus skaliert
- Du verwaltest Erinnerungen explizit — speichere genau das, was zählt, 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 dann die Ergebnisse über Reciprocal Rank Fusion zusammen:
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])
⚙️ 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-Signatur-Geheimnis (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); warnt bei nahen Duplikaten; 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 (abgelaufene eingeschlossen) |
update_memory | Aktualisiere Inhalt, Typ, Tags, Metadaten oder Ablauf nach Namen (und optional umbenennen) |
delete_memory | Lösche nach Namen |
move_memory | Verschiebe eine Erinnerung in einen anderen Arbeitsbereich |
list_workspaces | Liste Arbeitsbereiche auf, in denen du Mitglied bist (einschließlich persönlicher) |
dream_report | Schreibgeschützte Konsolidierungskandidaten: ähnliche Erinnerungspaare, abgelaufene und bald ablaufende Erinnerungen |
Der dream MCP-Prompt führt das Client-LLM durch einen vollständigen Konsolidierungsdurchlauf über die
dream_report Ausgabe: klassifiziere ähnliche Paare (Duplikat / komplementär / Konflikt), führe sie
zu insight Erinnerungen zusammen, ziehe überholte über expires_at zurück — niemals zerstörerisch.
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.