Memlord

आधिकारिक

व्यक्तिगत उपयोग और टीमों के लिए स्व-होस्टेड MCP मेमोरी सर्वर

Memlord MCP के साथ आप क्या कर सकते हैं?

  • प्रकार और टैग के साथ मेमोरी स्टोर करेंstore_memory का उपयोग करके तथ्यों, प्राथमिकताओं, निर्देशों या फीडबैक को सहेजें, जिसमें स्वचालित निकट-डुप्लिकेट पहचान होती है।
  • हाइब्रिड रिट्रीवल के साथ मेमोरी खोजें — संयुक्त BM25 पूर्ण-पाठ और सिमैंटिक वेक्टर खोज के माध्यम से मेमोरी खोजने के लिए retrieve_memory का उपयोग करें।
  • समय अभिव्यक्ति द्वारा मेमोरी याद करेंrecall_memory के साथ "पिछले सप्ताह" या "कल" जैसी प्राकृतिक-भाषा समय क्वेरी का उपयोग करके मेमोरी खोजें।
  • मेमोरी सूचीबद्ध करें और फ़िल्टर करेंlist_memories के साथ प्रकार या टैग द्वारा मेमोरी ब्राउज़ करें, या search_by_tag के माध्यम से AND/OR लॉजिक के साथ टैग को संयोजित करें।
  • आवश्यकतानुसार पूर्ण मेमोरी सामग्री प्राप्त करें — जब आपको खोज स्निपेट से परे विवरण की आवश्यकता हो, तो get_memory के साथ नाम से पूर्ण मेमोरी प्राप्त करें।
  • मेमोरी अपडेट करें, हटाएं या स्थानांतरित करेंupdate_memory के साथ सामग्री, टैग या समाप्ति को संशोधित करें, delete_memory के साथ हटाएं, या move_memory के साथ वर्कस्पेस के बीच स्थानांतरित करें।

दस्तावेज़

हाइब्रिड BM25 + सिमैंटिक खोज के साथ स्व-होस्टेड MCP मेमोरी सर्वर, PostgreSQL +
pgvector द्वारा समर्थित

व्यक्तिगत उपयोग और टीमों के लिए स्व-होस्टेड MCP मेमोरी सर्वर

License Python Version MCP Ruff MCP score

त्वरित शुरुआतयह कैसे काम करता हैMCP उपकरणकॉन्फ़िगरेशनआवश्यकताएँलाइसेंस


✨ विशेषताएँ

  • 🔍 हाइब्रिड खोज — BM25 (पूर्ण-पाठ) + वेक्टर KNN (pgvector) रेसिप्रोकल रैंक फ्यूज़न के माध्यम से संयोजित
  • 📂 बहु-उपयोगकर्ता — प्रत्येक उपयोगकर्ता केवल अपनी यादें देखता है; साझा टीम ज्ञान के लिए कार्यस्थान
  • 🛠️ 10 MCP उपकरण — संग्रहीत करें, पुनर्प्राप्त करें, स्मरण करें, सूचीबद्ध करें, टैग द्वारा खोजें, प्राप्त करें, अद्यतन करें, हटाएँ, स्थानांतरित करें, कार्यस्थान सूचीबद्ध करें
  • 🌐 वेब UI — ब्राउज़र में यादें ब्राउज़ करें, खोजें, संपादित करें और हटाएँ; JSON निर्यात/आयात करें
  • 🔒 OAuth 2.1 — पूर्ण इन-प्रोसेस प्राधिकरण सर्वर, हमेशा सक्षम
  • 🐘 PostgreSQL — एम्बेडिंग के लिए pgvector, पूर्ण-पाठ खोज के लिए tsvector
  • 📊 प्रगतिशील प्रकटीकरण — खोज डिफ़ॉल्ट रूप से संक्षिप्त स्निपेट लौटाती है; केवल आवश्यकता होने पर get_memory(name) कॉल करें, टोकन उपयोग कम करता है
  • 🔁 डुप्लीकेशन हटाना — सहेजने से पहले लगभग समान यादों का स्वचालित रूप से पता लगाता है, शोर संचय को रोकता है

🆚 Memlord की तुलना कैसे की जाती है

MemlordOpenMemorymcp-memory-servicebasic-memory
खोजBM25 + वेक्टर + RRFकेवल वेक्टर (Qdrant)BM25 + वेक्टर + RRFBM25 + वेक्टर
एम्बेडिंगस्थानीय ONNX, शून्य कॉन्फ़िगरेशनOpenAI डिफ़ॉल्ट; Ollama वैकल्पिकस्थानीय ONNX, शून्य कॉन्फ़िगरेशनस्थानीय FastEmbed
भंडारणPostgreSQL + pgvectorPostgreSQL + QdrantSQLite-vec / Cloudflare VectorizeSQLite + Markdown फ़ाइलें
बहु-उपयोगकर्ता❌ व्यवहार में एकल-उपयोगकर्ता⚠️ एजेंट-ID स्कोपिंग, कोई अलगाव नहीं
कार्यस्थान✅ साझा + व्यक्तिगत, आमंत्रण लिंक⚠️ "Apps" नेमस्पेस⚠️ टैग + conversation_id✅ प्रति-प्रोजेक्ट फ़्लैग
प्रमाणीकरण✅ OAuth 2.1❌ कोई नहीं (स्व-होस्टेड)✅ OAuth 2.0 + PKCE
वेब UI✅ ब्राउज़ करें, संपादित करें, निर्यात करें✅ Next.js डैशबोर्ड✅ समृद्ध UI, ग्राफ़ विज़, गुणवत्ता स्कोर❌ स्थानीय; केवल क्लाउड
MCP उपकरण10515+~20
स्व-होस्टेड✅ एकल प्रक्रिया✅ Docker (3 कंटेनर)
मेमोरी इनपुटमैनुअल (स्पष्ट संग्रह)LLM द्वारा स्वतः-निष्कर्षितमैनुअलमैनुअल (Markdown नोट्स)
मेमोरी प्रकारतथ्य / वरीयता / निर्देश / प्रतिक्रियास्वतः-निष्कर्षित तथ्यअवलोकन + विकी लिंक
समय-जागरूक खोज✅ प्राकृतिक भाषा तिथियाँ⚠️ केवल REST, MCP उपकरणों में नहीं✅ recent_activity
टोकन दक्षता✅ प्रगतिशील प्रकटीकरण✅ build_context ट्रैवर्सल
आयात / निर्यात✅ JSON✅ ZIP (JSON + JSONL)✅ Markdown (मानव-पठनीय)
लाइसेंसAGPL-3.0 / वाणिज्यिकApache 2.0Apache 2.0AGPL-3.0

जहाँ प्रतिस्पर्धियों की वास्तविक बढ़त है:

  • OpenMemory — कच्चे वार्तालाप पाठ से यादें स्वतः निकालता है; मैन्युअल रूप से क्या संग्रहीत करना है यह तय करने की आवश्यकता नहीं; अच्छा आयात/निर्यात
  • mcp-memory-service — समृद्ध वेब UI (ग्राफ़ विज़ुअलाइज़ेशन, गुणवत्ता स्कोरिंग, 8 टैब); अधिक अनुमेय लाइसेंस (Apache 2.0); कई परिवहन विकल्प (stdio, SSE, HTTP)
  • basic-memory — यादें मानव-पठनीय Markdown फ़ाइलें हैं जिन्हें आप बिना किसी सर्वर के संपादित, संस्करण-नियंत्रण और पढ़ सकते हैं; विकी-शैली इकाई लिंक एक स्थानीय ज्ञान ग्राफ़ बनाते हैं; ~20 MCP उपकरण

Memlord कब चुनें:

  • आप शून्य-कॉन्फ़िगरेशन स्थानीय एम्बेडिंग चाहते हैं — ONNX मॉडल सर्वर के साथ आता है, किसी Ollama या बाहरी API की आवश्यकता नहीं
  • आप उचित OAuth 2.1 प्रमाणीकरण और आमंत्रण-आधारित कार्यस्थानों के साथ बहु-उपयोगकर्ता टीम सर्वर चलाते हैं
  • आप एक उत्पादन-ग्रेड डेटाबेस (PostgreSQL) चाहते हैं जो एकल मशीन के SQLite से परे स्केल करता है
  • आप यादों को स्पष्ट रूप से प्रबंधित करते हैं — ठीक वही संग्रहीत करें जो मायने रखता है, टाइप और टैग किया हुआ, वह सब कुछ नहीं जो LLM निकालने का निर्णय लेता है
  • आप पूर्ण CRUD और JSON निर्यात के साथ एक स्व-होस्टेड वेब UI चाहते हैं, बिना क्लाउड सदस्यता के

🚀 त्वरित शुरुआत

🐳 Docker

cp .env.example .env
docker compose up

HTTP सर्वर (बहु-उपयोगकर्ता, वेब 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

वेब UI के लिए http://localhost:8000 खोलें। MCP समापन बिंदु /mcp पर है।


🔍 यह कैसे काम करता है

प्रत्येक खोज अनुरोध BM25 और वेक्टर KNN को समानांतर में चलाता है, फिर रेसिप्रोकल रैंक फ्यूज़न के माध्यम से परिणामों को मर्ज करता है:

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

⚙️ कॉन्फ़िगरेशन

सभी सेटिंग्स MEMLORD_ उपसर्ग का उपयोग करती हैं। पूरी सूची के लिए .env.example देखें।

चरडिफ़ॉल्टविवरण
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordPostgreSQL कनेक्शन URL
MEMLORD_PORT8000सर्वर पोर्ट
MEMLORD_BASE_URLhttp://localhost:8000OAuth के लिए सार्वजनिक URL (HTTP मोड)
MEMLORD_OAUTH_JWT_SECRETmemlord-dev-secret-please-changeJWT हस्ताक्षर रहस्य (HTTP मोड)

तैनाती से पहले MEMLORD_BASE_URL को अपने सार्वजनिक URL पर सेट करें और MEMLORD_OAUTH_JWT_SECRET बदलें।


🛠️ MCP उपकरण

उपकरणविवरण
store_memoryएक मेमोरी सहेजें (सामग्री द्वारा निष्क्रिय); निकट-डुप्लिकेट पर उठता है; वैकल्पिक expires_at
retrieve_memoryहाइब्रिड सिमैंटिक + पूर्ण-पाठ खोज; डिफ़ॉल्ट रूप से स्निपेट लौटाता है
recall_memoryप्राकृतिक-भाषा समय अभिव्यक्ति द्वारा खोजें; डिफ़ॉल्ट रूप से स्निपेट लौटाता है
list_memoriesप्रकार/टैग फ़िल्टर के साथ पृष्ठांकित सूची
search_by_tagAND/OR टैग खोज
get_memoryपूर्ण सामग्री के साथ नाम से एकल मेमोरी प्राप्त करें
update_memoryनाम से सामग्री, प्रकार, टैग, मेटाडेटा या समाप्ति अद्यतन करें (और वैकल्पिक रूप से नाम बदलें)
delete_memoryनाम से हटाएँ
move_memoryकिसी मेमोरी को भिन्न कार्यस्थान में ले जाएँ
list_workspacesउन कार्यस्थानों की सूची बनाएँ जिनके आप सदस्य हैं (व्यक्तिगत सहित)

कार्यस्थान प्रबंधन (बनाएँ, आमंत्रित करें, शामिल हों, छोड़ें) वेब UI के माध्यम से नियंत्रित किया जाता है।


💻 सिस्टम आवश्यकताएँ

  • Python 3.12
  • PostgreSQL ≥ 15 pgvector एक्सटेंशन के साथ
  • uv — Python पैकेज प्रबंधक

👨‍💻 विकास

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

📄 लाइसेंस

Memlord दोहरे लाइसेंस वाला है:

  • AGPL-3.0 — ओपन-सोर्स उपयोग के लिए मुफ़्त। यदि आप एक नेटवर्क सेवा के रूप में संशोधित संस्करण चलाते हैं, तो आपको अपना स्रोत कोड प्रकाशित करना होगा।
  • वाणिज्यिक लाइसेंस — मालिकाना या बंद-स्रोत तैनाती के लिए। खरीदने के लिए sergey@memlord.com या dmitry@memlord.com पर संपर्क करें।