Memlord
आधिकारिकव्यक्तिगत उपयोग और टीमों के लिए स्व-होस्टेड MCP मेमोरी सर्वर
Memlord MCP के साथ आप क्या कर सकते हैं?
- प्रकार और टैग के साथ मेमोरी संग्रहीत करें — किसी तथ्य, प्राथमिकता, निर्देश, प्रतिक्रिया, निर्णय या अंतर्दृष्टि को सहेजने के लिए
store_memoryका उपयोग करें, और वैकल्पिक रूप से समाप्ति तिथि निर्धारित करें। - हाइब्रिड पुनर्प्राप्ति के साथ मेमोरी खोजें — BM25 पूर्ण-पाठ और वेक्टर सिमैंटिक खोज के संयोजन का उपयोग करके प्रासंगिक मेमोरी खोजने के लिए
retrieve_memoryसे पूछें, जो संक्षिप्त स्निपेट लौटाता है। - समय अभिव्यक्ति द्वारा मेमोरी याद करें — "पिछले सप्ताह" या "कल" जैसी प्राकृतिक भाषा की समय-संबंधी क्वेरी से मेल खाने वाली मेमोरी खोजने के लिए
recall_memoryका उपयोग करें। - सभी मेमोरी ब्राउज़ करें और फ़िल्टर करें — संग्रहीत मेमोरी के माध्यम से पृष्ठांकन करने के लिए प्रकार और टैग फ़िल्टर के साथ
list_memoriesको कॉल करें। - ड्रीमिंग के माध्यम से मेमोरी को समेकित करें — सहायक को
dream_reportउम्मीदवारों की समीक्षा करने, निकट-डुप्लिकेट को अंतर्दृष्टि में विलय करने और अप्रचलित मेमोरी को गैर-विनाशकारी रूप से हटाने के लिएdreamप्रॉम्प्ट चलाएँ।
दस्तावेज़
व्यक्तिगत उपयोग और टीमों के लिए स्व-होस्टेड MCP मेमोरी सर्वर
त्वरित शुरुआत • यह कैसे काम करता है • MCP उपकरण • कॉन्फ़िगरेशन • आवश्यकताएँ • लाइसेंस
✨ विशेषताएँ
- 🔍 हाइब्रिड खोज — BM25 (पूर्ण-पाठ) + वेक्टर KNN (pgvector) रेसिप्रोकल रैंक फ्यूज़न के माध्यम से संयोजित
- 📂 बहु-उपयोगकर्ता — प्रत्येक उपयोगकर्ता केवल अपनी यादें देखता है; साझा टीम ज्ञान के लिए कार्यस्थान
- 🛠️ 11 MCP उपकरण — संग्रहीत करें, पुनर्प्राप्त करें, स्मरण करें, सूचीबद्ध करें, टैग द्वारा खोजें, प्राप्त करें, अद्यतन करें, हटाएँ, स्थानांतरित करें, कार्यस्थान सूचीबद्ध करें, स्वप्न रिपोर्ट
- 💤 स्वप्न देखना — एक निर्देशित समेकन पास (
dreamMCP प्रॉम्प्ट +dream_reportउपकरण): लगभग डुप्लिकेट और विरोधाभासी यादें ढूँढता है, उन्हें गैर-विनाशकारी रूप से अंतर्दृष्टि में विलय करता है, क्लाइंट LLM द्वारा संचालित - 🌐 वेब UI — ब्राउज़र में यादें ब्राउज़ करें, खोजें, संपादित करें और हटाएँ; JSON निर्यात/आयात करें
- 🔒 OAuth 2.1 — पूर्ण इन-प्रोसेस प्राधिकरण सर्वर, हमेशा सक्षम
- 🐘 PostgreSQL — एम्बेडिंग के लिए pgvector, पूर्ण-पाठ खोज के लिए tsvector
- 📊 प्रगतिशील प्रकटीकरण — खोज डिफ़ॉल्ट रूप से संक्षिप्त स्निपेट लौटाती है; केवल आवश्यकता होने पर
get_memory(name)कॉल करें, टोकन उपयोग कम करता है - 🔁 डिडुप्लीकेशन — सहेजने से पहले लगभग समान यादों का स्वचालित रूप से पता लगाता है, शोर संचय को रोकता है
🆚 Memlord की तुलना कैसे होती है
| Memlord | OpenMemory | mcp-memory-service | basic-memory | |
|---|---|---|---|---|
| खोज | BM25 + वेक्टर + RRF | केवल वेक्टर (Qdrant) | BM25 + वेक्टर + RRF | BM25 + वेक्टर |
| एम्बेडिंग | स्थानीय ONNX, शून्य कॉन्फ़िगरेशन | OpenAI डिफ़ॉल्ट; Ollama वैकल्पिक | स्थानीय ONNX, शून्य कॉन्फ़िगरेशन | स्थानीय FastEmbed |
| भंडारण | PostgreSQL + pgvector | PostgreSQL + Qdrant | SQLite-vec / Cloudflare Vectorize | SQLite + Markdown फ़ाइलें |
| बहु-उपयोगकर्ता | ✅ | ❌ व्यवहार में एकल-उपयोगकर्ता | ⚠️ एजेंट-आईडी स्कोपिंग, कोई अलगाव नहीं | ❌ |
| कार्यस्थान | ✅ साझा + व्यक्तिगत, आमंत्रण लिंक | ⚠️ "Apps" नेमस्पेस | ⚠️ टैग + conversation_id | ✅ प्रति-प्रोजेक्ट फ़्लैग |
| प्रमाणीकरण | ✅ OAuth 2.1 | ❌ कोई नहीं (स्व-होस्टेड) | ✅ OAuth 2.0 + PKCE | ❌ |
| वेब UI | ✅ ब्राउज़ करें, संपादित करें, निर्यात करें | ✅ Next.js डैशबोर्ड | ✅ समृद्ध UI, ग्राफ़ विज़, गुणवत्ता स्कोर | ❌ स्थानीय; केवल क्लाउड |
| MCP उपकरण | 11 | 5 | 15+ | ~20 |
| स्व-होस्टेड | ✅ एकल प्रक्रिया | ✅ Docker (3 कंटेनर) | ✅ | ✅ |
| मेमोरी इनपुट | मैनुअल (स्पष्ट स्टोर) | LLM द्वारा स्वतः-निकाला गया | मैनुअल | मैनुअल (Markdown नोट्स) |
| मेमोरी प्रकार | तथ्य / वरीयता / निर्देश / प्रतिक्रिया / निर्णय / अंतर्दृष्टि | स्वतः-निकाले गए तथ्य | — | अवलोकन + विकी लिंक |
| समय-जागरूक खोज | ✅ प्राकृतिक भाषा तिथियाँ | ⚠️ केवल REST, MCP उपकरणों में नहीं | — | ✅ recent_activity |
| टोकन दक्षता | ✅ प्रगतिशील प्रकटीकरण | ❌ | — | ✅ build_context ट्रैवर्सल |
| आयात / निर्यात | ✅ JSON | ✅ ZIP (JSON + JSONL) | — | ✅ Markdown (मानव-पठनीय) |
| लाइसेंस | AGPL-3.0 / वाणिज्यिक | Apache 2.0 | Apache 2.0 | AGPL-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\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])
⚙️ कॉन्फ़िगरेशन
सभी सेटिंग्स MEMLORD_ उपसर्ग का उपयोग करती हैं। पूरी सूची के लिए .env.example देखें।
| चर | डिफ़ॉल्ट | विवरण |
|---|---|---|
MEMLORD_DB_URL | postgresql+asyncpg://postgres:postgres@localhost/memlord | PostgreSQL कनेक्शन URL |
MEMLORD_PORT | 8000 | सर्वर पोर्ट |
MEMLORD_BASE_URL | http://localhost:8000 | OAuth के लिए सार्वजनिक URL (HTTP मोड) |
MEMLORD_OAUTH_JWT_SECRET | memlord-dev-secret-please-change | JWT हस्ताक्षर रहस्य (HTTP मोड) |
तैनाती से पहले MEMLORD_BASE_URL को अपने सार्वजनिक URL पर सेट करें और MEMLORD_OAUTH_JWT_SECRET बदलें।
🛠️ MCP उपकरण
| उपकरण | विवरण |
|---|---|
store_memory | एक मेमोरी सहेजें (सामग्री द्वारा निरंकुश); लगभग डुप्लिकेट पर उठता है; वैकल्पिक expires_at |
retrieve_memory | हाइब्रिड सिमैंटिक + पूर्ण-पाठ खोज; डिफ़ॉल्ट रूप से स्निपेट लौटाता है |
recall_memory | प्राकृतिक-भाषा समय अभिव्यक्ति द्वारा खोजें; डिफ़ॉल्ट रूप से स्निपेट लौटाता है |
list_memories | प्रकार/टैग फ़िल्टर के साथ पृष्ठांकित सूची |
search_by_tag | AND/OR टैग खोज |
get_memory | पूर्ण सामग्री के साथ नाम से एकल मेमोरी प्राप्त करें (समाप्त शामिल) |
update_memory | नाम से सामग्री, प्रकार, टैग, मेटाडेटा या समाप्ति अद्यतन करें (और वैकल्पिक रूप से नाम बदलें) |
delete_memory | नाम से हटाएँ |
move_memory | किसी मेमोरी को भिन्न कार्यस्थान में ले जाएँ |
list_workspaces | उन कार्यस्थानों की सूची बनाएँ जिनके आप सदस्य हैं (व्यक्तिगत सहित) |
dream_report | केवल-पढ़ने के लिए समेकन उम्मीदवार: समान मेमोरी जोड़े, समाप्त और जल्द ही समाप्त होने वाली यादें |
dream MCP प्रॉम्प्ट क्लाइंट LLM को dream_report आउटपुट पर एक पूर्ण समेकन पास के माध्यम से चलता है: समान जोड़ों को वर्गीकृत करें (डुप्लिकेट / पूरक / विरोध), insight यादों में विलय करें, expires_at के माध्यम से अधिक्रमित लोगों को सेवानिवृत्त करें — कभी विनाशकारी रूप से नहीं।
कार्यस्थान प्रबंधन (बनाएँ, आमंत्रित करें, जुड़ें, छोड़ें) वेब 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 पर संपर्क करें।