Memlord

offiziell

Selbstgehosteter 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 über search_by_tag.
  • Vollständigen Erinnerungsinhalt bei Bedarf abrufen — Rufen Sie eine vollständige Erinnerung mit get_memory ab, 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 mit delete_memory oder verschieben Sie zwischen Arbeitsbereichen mit move_memory.

Dokumentation

Selbst gehosteter MCP-Speicherserver mit hybrider BM25 + semantischer Suche, unterstützt durch PostgreSQL +
pgvector

Selbst gehosteter MCP-Speicherserver für den persönlichen Gebrauch und Teams

License Python Version MCP Ruff MCP score

SchnellstartFunktionsweiseMCP-ToolsKonfigurationAnforderungenLizenz


✨ 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

MemlordOpenMemorymcp-memory-servicebasic-memory
SucheBM25 + Vektor + RRFNur Vektor (Qdrant)BM25 + Vektor + RRFBM25 + Vektor
EinbettungenLokales ONNX, keine KonfigurationOpenAI Standard; Ollama optionalLokales ONNX, keine KonfigurationLokales FastEmbed
SpeicherPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + 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-Tools10515+~20
Selbst gehostet✅ einzelner Prozess✅ Docker (3 Container)
ErinnerungseingabeManuell (explizites Speichern)Automatisch durch LLM extrahiertManuellManuell (Markdown-Notizen)
ErinnerungstypenFakt / Präferenz / Anweisung / Feedbackautomatisch extrahierte FaktenBeobachtungen + 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)
LizenzAGPL-3.0 / KommerziellApache 2.0Apache 2.0AGPL-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.

VariableStandardBeschreibung
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordPostgreSQL-Verbindungs-URL
MEMLORD_PORT8000Server-Port
MEMLORD_BASE_URLhttp://localhost:8000Öffentliche URL für OAuth (HTTP-Modus)
MEMLORD_OAUTH_JWT_SECRETmemlord-dev-secret-please-changeJWT-Signaturgeheimnis (HTTP-Modus)

Setze MEMLORD_BASE_URL auf deine öffentliche URL und ändere MEMLORD_OAUTH_JWT_SECRET vor der Bereitstellung.


🛠️ MCP-Tools

ToolBeschreibung
store_memorySpeichere eine Erinnerung (idempotent nach Inhalt); löst bei Fast-Duplikaten aus; optional expires_at
retrieve_memoryHybride semantische + Volltextsuche; gibt standardmäßig Ausschnitte zurück
recall_memorySuche nach natürlichsprachlichem Zeitausdruck; gibt standardmäßig Ausschnitte zurück
list_memoriesSeitenweise Liste mit Typ-/Tag-Filtern
search_by_tagUND/ODER-Tag-Suche
get_memoryRufe eine einzelne Erinnerung nach Namen mit vollständigem Inhalt ab
update_memoryAktualisiere Inhalt, Typ, Tags, Metadaten oder Ablaufdatum nach Namen (und optional umbenennen)
delete_memoryNach Namen löschen
move_memoryVerschiebe eine Erinnerung in einen anderen Arbeitsbereich
list_workspacesListe 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: