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 — Simpan fakta, preferensi, instruksi, atau umpan balik menggunakan store_memory, dengan deteksi duplikat mendekati otomatis.
  • Mencari memori dengan pengambilan hibrida — Gunakan retrieve_memory untuk menemukan memori melalui pencarian teks lengkap BM25 dan vektor semantik secara gabungan.
  • Mengingat memori berdasarkan ekspresi waktu — Temukan memori menggunakan kueri waktu bahasa alami seperti "minggu lalu" atau "kemarin" dengan recall_memory.
  • Mendaftar dan memfilter memori — Jelajahi memori berdasarkan tipe atau tag dengan list_memories, atau gabungkan tag dengan logika AND/OR melalui search_by_tag.
  • Mendapatkan konten memori lengkap sesuai permintaan — Ambil memori lengkap berdasarkan nama dengan get_memory saat Anda memerlukan detail di luar cuplikan pencarian.
  • Memperbarui, menghapus, atau memindahkan memori — Ubah konten, tag, atau masa berlaku dengan update_memory, hapus dengan delete_memory, atau pindahkan antar ruang kerja dengan move_memory.

Dokumentasi

Server memori MCP self-hosted dengan pencarian hibrida 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 hibrida — 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
  • 🛠️ 10 alat MCP — simpan, ambil, ingat kembali, daftar, cari berdasarkan tag, dapatkan, perbarui, hapus, pindahkan, daftar ruang kerja
  • 🌐 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 embedding, 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
EmbeddingONNX lokal, tanpa konfigurasiDefault OpenAI; Ollama opsionalONNX lokal, tanpa konfigurasiFastEmbed lokal
PenyimpananPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + file Markdown
Multi-pengguna❌ pengguna tunggal dalam praktik⚠️ cakupan ID agen, tanpa isolasi
Ruang Kerja✅ bersama + pribadi, tautan undangan⚠️ Namespace "Aplikasi"⚠️ 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 MCP10515+~20
Self-hosted✅ proses tunggal✅ Docker (3 kontainer)
Input MemoriManual (penyimpanan eksplisit)Otomatis diekstrak oleh LLMManualManual (catatan Markdown)
Tipe Memorifakta / preferensi / instruksi / umpan balikfakta yang diekstrak otomatisobservasi + tautan wiki
Pencarian sadar waktu✅ tanggal bahasa alami⚠️ Hanya REST, tidak dalam alat MCP✅ recent_activity
Efisiensi Token✅ pengungkapan progresif✅ penelusuran build_context
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 bergaya wiki membentuk graf pengetahuan lokal; ~20 alat MCP

Kapan memilih Memlord:

  • Anda menginginkan embedding 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 berada 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\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])

⚙️ Konfigurasi

Semua pengaturan menggunakan prefiks 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; opsional expires_at
retrieve_memoryPencarian hibrida semantik + teks lengkap; mengembalikan cuplikan secara default
recall_memoryCari berdasarkan ekspresi waktu bahasa alami; mengembalikan cuplikan secara default
list_memoriesDaftar dengan halaman dengan filter tipe/tag
search_by_tagPencarian tag DAN/ATAU
get_memoryAmbil satu memori berdasarkan nama dengan konten penuh
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)

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.