Memlord

resmi

Server memori MCP yang dihosting sendiri untuk penggunaan pribadi dan tim

Apa yang bisa Anda lakukan dengan Memlord MCP?

  • Menyimpan memori dengan tipe dan tag — Gunakan store_memory untuk menyimpan fakta, preferensi, instruksi, umpan balik, keputusan, atau wawasan, dengan opsi menetapkan masa berlaku.
  • Mencari memori dengan pengambilan hibrida — Minta retrieve_memory untuk menemukan memori yang relevan menggunakan gabungan pencarian teks lengkap BM25 dan semantik vektor, yang mengembalikan cuplikan ringkas.
  • Mengingat memori berdasarkan ekspresi waktu — Gunakan recall_memory untuk menemukan memori yang cocok dengan kueri waktu bahasa alami seperti "minggu lalu" atau "kemarin."
  • Menelusuri dan memfilter semua memori — Panggil list_memories dengan filter tipe dan tag untuk menelusuri memori yang tersimpan secara bertahap.
  • Mengonsolidasikan memori melalui mimpi — Jalankan perintah dream agar asisten meninjau kandidat dream_report, menggabungkan duplikat yang hampir sama menjadi wawasan, dan menonaktifkan memori yang sudah digantikan tanpa merusak data.

Dokumentasi

Server memori MCP self-hosted dengan pencarian hybrid BM25 + semantik, didukung PostgreSQL +
pgvector

Server memori MCP self-hosted untuk penggunaan pribadi dan tim

License Python Version MCP Ruff MCP score

Mulai CepatCara KerjaAlat MCPKonfigurasiPersyaratanLisensi


✨ Fitur

  • 🔍 Pencarian hybrid — BM25 (teks lengkap) + vektor KNN (pgvector) digabungkan melalui Reciprocal Rank Fusion
  • 📂 Multi-pengguna — setiap pengguna hanya melihat memorinya sendiri; ruang kerja untuk pengetahuan tim bersama
  • 🛠️ 11 alat MCP — simpan, ambil, ingat, daftar, cari berdasarkan tag, dapatkan, perbarui, hapus, pindahkan, daftar ruang kerja, laporan dream
  • 💤 Dreaming — proses konsolidasi terpandu (dream prompt MCP + dream_report alat): menemukan memori yang hampir duplikat dan bertentangan, menggabungkannya menjadi wawasan secara non-destruktif, didorong oleh LLM klien
  • 🌐 UI Web — jelajahi, cari, edit, dan hapus memori di peramban; ekspor/impor JSON
  • 🔒 OAuth 2.1 — server otorisasi dalam proses penuh, selalu diaktifkan
  • 🐘 PostgreSQL — pgvector untuk embeddings, tsvector untuk pencarian teks lengkap
  • 📊 Pengungkapan progresif — pencarian mengembalikan cuplikan ringkas secara default; panggil get_memory(name) hanya untuk yang Anda butuhkan, mengurangi penggunaan token
  • 🔁 Deduplikasi — secara otomatis mendeteksi memori yang hampir identik sebelum menyimpan, mencegah akumulasi noise

🆚 Perbandingan Memlord

MemlordOpenMemorymcp-memory-servicebasic-memory
PencarianBM25 + vektor + RRFHanya vektor (Qdrant)BM25 + vektor + RRFBM25 + vektor
EmbeddingsONNX lokal, tanpa konfigurasiOpenAI default; Ollama opsionalONNX lokal, tanpa konfigurasiFastEmbed lokal
PenyimpananPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + file Markdown
Multi-pengguna❌ pengguna tunggal dalam praktik⚠️ cakupan agent-ID, tanpa isolasi
Ruang Kerja✅ bersama + pribadi, tautan undangan⚠️ Namespace "Apps"⚠️ tag + conversation_id✅ flag per-proyek
Autentikasi✅ OAuth 2.1❌ tidak ada (self-hosted)✅ OAuth 2.0 + PKCE
UI Web✅ jelajahi, edit, ekspor✅ Dasbor Next.js✅ UI kaya, visualisasi graf, skor kualitas❌ lokal; hanya cloud
Alat MCP11515+~20
Self-hosted✅ proses tunggal✅ Docker (3 kontainer)
Input MemoriManual (penyimpanan eksplisit)Diekstrak otomatis oleh LLMManualManual (catatan Markdown)
Tipe Memorifakta / preferensi / instruksi / umpan balik / keputusan / wawasanfakta yang diekstrak otomatisobservasi + tautan wiki
Pencarian sadar waktu✅ tanggal bahasa alami⚠️ Hanya REST, tidak di alat MCP✅ recent_activity
Efisiensi Token✅ pengungkapan progresif✅ build_context traversal
Impor / Ekspor✅ JSON✅ ZIP (JSON + JSONL)✅ Markdown (dapat dibaca manusia)
LisensiAGPL-3.0 / KomersialApache 2.0Apache 2.0AGPL-3.0

Keunggulan nyata pesaing:

  • OpenMemory — mengekstrak memori secara otomatis dari teks percakapan mentah; tidak perlu memutuskan apa yang disimpan secara manual; impor/ekspor baik
  • mcp-memory-service — UI web lebih kaya (visualisasi graf, penilaian kualitas, 8 tab); lisensi lebih permisif (Apache 2.0); beberapa opsi transport (stdio, SSE, HTTP)
  • basic-memory — memori adalah file Markdown yang dapat dibaca manusia, dapat diedit, dikontrol versi, dan dibaca tanpa server apa pun; tautan entitas gaya wiki membentuk graf pengetahuan lokal; ~20 alat MCP

Kapan memilih Memlord:

  • Anda menginginkan embeddings lokal tanpa konfigurasi — model ONNX disertakan dengan server, tidak perlu Ollama atau API eksternal
  • Anda menjalankan server tim multi-pengguna dengan autentikasi OAuth 2.1 yang tepat dan ruang kerja berbasis undangan
  • Anda menginginkan basis data kelas produksi (PostgreSQL) yang dapat diskalakan melampaui SQLite mesin tunggal
  • Anda mengelola memori secara eksplisit — simpan tepat apa yang penting, diketik dan ditandai, bukan semua yang diputuskan LLM untuk diekstrak
  • Anda menginginkan UI Web self-hosted dengan CRUD penuh dan ekspor JSON, tanpa langganan cloud

🚀 Mulai Cepat

🐳 Docker

cp .env.example .env
docker compose up

Server HTTP (multi-pengguna, UI Web, 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

Buka http://localhost:8000 untuk UI Web. Endpoint MCP ada di /mcp.


🔍 Cara Kerja

Setiap permintaan pencarian menjalankan BM25 dan vektor KNN secara paralel, lalu menggabungkan hasil melalui 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])

⚙️ Konfigurasi

Semua pengaturan menggunakan awalan MEMLORD_. Lihat .env.example untuk daftar lengkapnya.

VariabelDefaultDeskripsi
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordURL koneksi PostgreSQL
MEMLORD_PORT8000Port server
MEMLORD_BASE_URLhttp://localhost:8000URL publik untuk OAuth (mode HTTP)
MEMLORD_OAUTH_JWT_SECRETmemlord-dev-secret-please-changeRahasia penandatanganan JWT (mode HTTP)

Atur MEMLORD_BASE_URL ke URL publik Anda dan ubah MEMLORD_OAUTH_JWT_SECRET sebelum menerapkan.


🛠️ Alat MCP

AlatDeskripsi
store_memorySimpan memori (idempoten berdasarkan konten); memunculkan peringatan jika hampir duplikat; expires_at opsional
retrieve_memoryPencarian hybrid semantik + teks lengkap; mengembalikan cuplikan secara default
recall_memoryCari berdasarkan ekspresi waktu bahasa alami; mengembalikan cuplikan secara default
list_memoriesDaftar dengan halaman dan filter tipe/tag
search_by_tagPencarian tag AND/OR
get_memoryAmbil satu memori berdasarkan nama dengan konten lengkap (termasuk yang kedaluwarsa)
update_memoryPerbarui konten, tipe, tag, metadata, atau kedaluwarsa berdasarkan nama (dan opsional ganti nama)
delete_memoryHapus berdasarkan nama
move_memoryPindahkan memori ke ruang kerja berbeda
list_workspacesDaftar ruang kerja di mana Anda menjadi anggota (termasuk pribadi)
dream_reportKandidat konsolidasi hanya-baca: pasangan memori serupa, memori kedaluwarsa dan yang akan segera kedaluwarsa

Prompt MCP dream memandu LLM klien melalui proses konsolidasi penuh atas output dream_report: klasifikasikan pasangan serupa (duplikat / komplementer / konflik), gabungkan menjadi memori insight, pensiunkan yang digantikan melalui expires_at — tidak pernah secara destruktif.

Manajemen ruang kerja (buat, undang, gabung, keluar) ditangani melalui UI Web.


💻 Persyaratan Sistem

  • Python 3.12
  • PostgreSQL ≥ 15 dengan ekstensi pgvector
  • uv — manajer paket Python

👨‍💻 Pengembangan

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

📄 Lisensi

Memlord dilisensikan ganda:

  • AGPL-3.0 — gratis untuk penggunaan sumber terbuka. Jika Anda menjalankan versi yang dimodifikasi sebagai layanan jaringan, Anda harus mempublikasikan kode sumber Anda.
  • Lisensi Komersial — untuk penerapan proprietary atau sumber tertutup. Hubungi sergey@memlord.com atau dmitry@memlord.com untuk membeli.