Memlord

resmi

Kişisel kullanım ve ekipler için kendi kendine barındırılan MCP bellek sunucusu

Memlord MCP ile neler yapabilirsiniz?

  • Bir anıyı tür ve etiketlerle sakla — Bir gerçeği, tercihi, talimatı, geri bildirimi, kararı veya içgörüyü kaydetmek için store_memory kullanın, isteğe bağlı olarak bir son kullanma süresi belirleyin.
  • Anıları hibrit arama ile ara — İlgili anıları bulmak için retrieve_memory'e başvurun; BM25 tam metin ve vektör anlamsal aramasını birleştirir, kompakt parçacıklar döndürür.
  • Anıları zaman ifadesiyle hatırla — "geçen hafta" veya "dün" gibi doğal dil zaman sorgularıyla eşleşen anıları bulmak için recall_memory kullanın.
  • Tüm anıları gözden geçir ve filtrele — Saklanan anılar arasında sayfalamak için tür ve etiket filtreleriyle list_memories'i çağırın.
  • Anıları rüya yoluyla birleştir — Asistanın dream_report adaylarını incelemesi, neredeyse aynı olanları içgörülere dönüştürmesi ve geçersiz kılınan anıları yıkıcı olmayan bir şekilde emekliye ayırması için dream istemini çalıştırın.

Dokümantasyon

PostgreSQL + pgvector ile desteklenen, hibrit BM25 + anlamsal aramaya sahip, kendi sunucunuzda barındırılan MCP bellek sunucusu

Kişisel kullanım ve ekipler için kendi sunucunuzda barındırılan MCP bellek sunucusu

License Python Version MCP Ruff MCP score

Hızlı Başlangıç • Nasıl Çalışır • MCP Araçları • Yapılandırma • Gereksinimler • Lisans


✨ Özellikler

  • 🔍 Hibrit arama — Karşılıklı Sıra Füzyonu ile birleştirilmiş BM25 (tam metin) + vektör KNN (pgvector)
  • 📂 Çok kullanıcılı — her kullanıcı yalnızca kendi anılarını görür; paylaşılan ekip bilgisi için çalışma alanları
  • 🛠️ 11 MCP aracı — sakla, getir, hatırla, listele, etikete göre ara, al, güncelle, sil, taşı, çalışma alanlarını listele, rüya raporu
  • 💤 Rüya görme — rehberli bir birleştirme geçişi (dream MCP istemi + dream_report aracı): neredeyse aynı ve çakışan anıları bulur, istemci LLM tarafından yönlendirilerek yıkıcı olmayan bir şekilde içgörülere dönüştürür
  • 🌐 Web Arayüzü — tarayıcıda anılara göz atın, arayın, düzenleyin ve silin; JSON dışa/içe aktarımı
  • 🔒 OAuth 2.1 — tam süreç içi yetkilendirme sunucusu, her zaman etkin
  • 🐘 PostgreSQL — gömme vektörleri için pgvector, tam metin araması için tsvector
  • 📊 Aşamalı açıklama — arama varsayılan olarak kompakt parçacıklar döndürür; yalnızca ihtiyacınız olanı get_memory(name) ile çağırarak token kullanımını azaltır
  • 🔁 Tekilleştirme — kaydetmeden önce neredeyse aynı anıları otomatik olarak algılar, gürültü birikimini önler

🆚 Memlord nasıl karşılaştırılır

MemlordOpenMemorymcp-memory-servicebasic-memory
AramaBM25 + vektör + RRFYalnızca vektör (Qdrant)BM25 + vektör + RRFBM25 + vektör
GömmelerYerel ONNX, sıfır yapılandırmaVarsayılan OpenAI; Ollama isteğe bağlıYerel ONNX, sıfır yapılandırmaYerel FastEmbed
DepolamaPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + Markdown dosyaları
Çok kullanıcılı✅❌ pratikte tek kullanıcılı⚠️ ajan kimliği kapsamı, izolasyon yok❌
Çalışma alanları✅ paylaşımlı + kişisel, davet bağlantıları⚠️ "Uygulamalar" ad alanı⚠️ etiketler + conversation_id✅ proje başına bayrak
Kimlik doğrulama✅ OAuth 2.1❌ yok (kendi sunucunuzda)✅ OAuth 2.0 + PKCE❌
Web Arayüzü✅ göz atma, düzenleme, dışa aktarma✅ Next.js panosu✅ zengin arayüz, grafik görselleştirme, kalite puanları❌ yerel; yalnızca bulut
MCP araçları11515+~20
Kendi sunucunuzda✅ tek süreç✅ Docker (3 konteyner)✅✅
Bellek girdisiManuel (açık saklama)LLM tarafından otomatik çıkarılanManuelManuel (Markdown notları)
Bellek türleriolgu / tercih / talimat / geri bildirim / karar / içgörüotomatik çıkarılan olgular—gözlemler + wiki bağlantıları
Zaman farkında arama✅ doğal dil tarihleri⚠️ yalnızca REST, MCP araçlarında değil—✅ recent_activity
Token verimliliği✅ aşamalı açıklama❌—✅ build_context gezinmesi
İçe / Dışa Aktarma✅ JSON✅ ZIP (JSON + JSONL)—✅ Markdown (insan tarafından okunabilir)
LisansAGPL-3.0 / TicariApache 2.0Apache 2.0AGPL-3.0

Rakiplerin gerçek bir üstünlüğe sahip olduğu yerler:

  • OpenMemory — ham konuşma metninden anıları otomatik olarak çıkarır; neyin manuel olarak saklanacağına karar vermeye gerek yoktur; iyi içe/dışa aktarma
  • mcp-memory-service — daha zengin web arayüzü (grafik görselleştirme, kalite puanlaması, 8 sekme); daha izin verici lisans (Apache 2.0); birden çok aktarım seçeneği (stdio, SSE, HTTP)
  • basic-memory — anılar, herhangi bir sunucu olmadan düzenleyebileceğiniz, sürüm kontrolü yapabileceğiniz ve okuyabileceğiniz, insan tarafından okunabilir Markdown dosyalarıdır; wiki tarzı varlık bağlantıları yerel bir bilgi grafiği oluşturur; ~20 MCP aracı

Memlord ne zaman seçilmeli:

  • Sıfır yapılandırmalı yerel gömmeler istiyorsanız — ONNX modeli sunucuyla birlikte gelir, Ollama veya harici API'ye gerek yoktur
  • Uygun OAuth 2.1 kimlik doğrulaması ve davet tabanlı çalışma alanlarına sahip çok kullanıcılı bir ekip sunucusu çalıştırıyorsanız
  • Tek bir makinenin SQLite'ının ötesine ölçeklenen üretim sınıfı bir veritabanı (PostgreSQL) istiyorsanız
  • Anıları açıkça yönetiyorsanız — LLM'nin çıkarmaya karar verdiği her şeyi değil, tam olarak önemli olanı, yazılan ve etiketleneni saklayın
  • Bulut aboneliği olmadan, tam CRUD ve JSON dışa aktarma özellikli kendi sunucunuzda barındırılan bir Web Arayüzü istiyorsanız

🚀 Hızlı Başlangıç

🐳 Docker

cp .env.example .env
docker compose up

HTTP sunucusu (çok kullanıcılı, Web Arayüzü, 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

Web Arayüzü için http://localhost:8000 adresini açın. MCP uç noktası /mcp adresindedir.


🔍 Nasıl Çalışır

Her arama isteği BM25 ve vektör KNN'yi paralel olarak çalıştırır, ardından sonuçları Karşılıklı Sıra Füzyonu ile birleştirir:

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

⚙️ Yapılandırma

Tüm ayarlar MEMLORD_ önekini kullanır. Tam liste için .env.example sayfasına bakın.

DeğişkenVarsayılanAçıklama
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordPostgreSQL bağlantı URL'si
MEMLORD_PORT8000Sunucu portu
MEMLORD_BASE_URLhttp://localhost:8000OAuth için genel URL (HTTP modu)
MEMLORD_OAUTH_JWT_SECRETmemlord-dev-secret-please-changeJWT imzalama sırrı (HTTP modu)

Dağıtmadan önce MEMLORD_BASE_URL değerini genel URL'nize ayarlayın ve MEMLORD_OAUTH_JWT_SECRET değerini değiştirin.


🛠️ MCP Araçları

AraçAçıklama
store_memoryBir anıyı kaydet (içeriğe göre idempotent); neredeyse aynı olanlarda hata verir; isteğe bağlı expires_at
retrieve_memoryHibrit anlamsal + tam metin araması; varsayılan olarak parçacıklar döndürür
recall_memoryDoğal dil zaman ifadesine göre arama; varsayılan olarak parçacıklar döndürür
list_memoriesTür/etiket filtreleriyle sayfalandırılmış liste
search_by_tagVE/VEYA etiket araması
get_memoryAda göre tam içerikli tek bir anı getir (süresi dolmuş olanlar dahil)
update_memoryAda göre içeriği, türü, etiketleri, meta verileri veya son kullanma tarihini güncelle (ve isteğe bağlı olarak yeniden adlandır)
delete_memoryAda göre sil
move_memoryBir anıyı farklı bir çalışma alanına taşı
list_workspacesÜyesi olduğunuz çalışma alanlarını listele (kişisel olanlar dahil)
dream_reportSalt okunur birleştirme adayları: benzer anı çiftleri, süresi dolmuş ve yakında süresi dolacak anılar

dream MCP istemi, istemci LLM'yi dream_report çıktısı üzerinde tam bir birleştirme geçişinde yönlendirir: benzer çiftleri sınıflandır (aynı / tamamlayıcı / çakışan), insight anılarına birleştir, yerini alanları expires_at aracılığıyla kullanımdan kaldır — asla yıkıcı değildir.

Çalışma alanı yönetimi (oluşturma, davet etme, katılma, ayrılma) Web Arayüzü üzerinden yapılır.


💻 Sistem Gereksinimleri

  • Python 3.12
  • PostgreSQL ≥ 15, pgvector eklentisi ile
  • uv — Python paket yöneticisi

👨‍💻 Geliştirme

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

📄 Lisans

Memlord çift lisanslıdır:

  • AGPL-3.0 — açık kaynak kullanımı için ücretsizdir. Değiştirilmiş bir sürümü bir ağ hizmeti olarak çalıştırırsanız, kaynak kodunuzu yayınlamanız gerekir.
  • Ticari Lisans — özel mülk veya kapalı kaynak dağıtımları için. Satın almak için sergey@memlord.com veya dmitry@memlord.com adresine başvurun.