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के साथ वर्कस्पेस के बीच स्थानांतरित करें।
दस्तावेज़
व्यक्तिगत उपयोग और टीमों के लिए स्व-होस्टेड MCP मेमोरी सर्वर
त्वरित शुरुआत • यह कैसे काम करता है • MCP उपकरण • कॉन्फ़िगरेशन • आवश्यकताएँ • लाइसेंस
✨ विशेषताएँ
- 🔍 हाइब्रिड खोज — BM25 (पूर्ण-पाठ) + वेक्टर KNN (pgvector) रेसिप्रोकल रैंक फ्यूज़न के माध्यम से संयोजित
- 📂 बहु-उपयोगकर्ता — प्रत्येक उपयोगकर्ता केवल अपनी यादें देखता है; साझा टीम ज्ञान के लिए कार्यस्थान
- 🛠️ 10 MCP उपकरण — संग्रहीत करें, पुनर्प्राप्त करें, स्मरण करें, सूचीबद्ध करें, टैग द्वारा खोजें, प्राप्त करें, अद्यतन करें, हटाएँ, स्थानांतरित करें, कार्यस्थान सूचीबद्ध करें
- 🌐 वेब 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 फ़ाइलें |
| बहु-उपयोगकर्ता | ✅ | ❌ व्यवहार में एकल-उपयोगकर्ता | ⚠️ एजेंट-ID स्कोपिंग, कोई अलगाव नहीं | ❌ |
| कार्यस्थान | ✅ साझा + व्यक्तिगत, आमंत्रण लिंक | ⚠️ "Apps" नेमस्पेस | ⚠️ टैग + conversation_id | ✅ प्रति-प्रोजेक्ट फ़्लैग |
| प्रमाणीकरण | ✅ OAuth 2.1 | ❌ कोई नहीं (स्व-होस्टेड) | ✅ OAuth 2.0 + PKCE | ❌ |
| वेब UI | ✅ ब्राउज़ करें, संपादित करें, निर्यात करें | ✅ Next.js डैशबोर्ड | ✅ समृद्ध UI, ग्राफ़ विज़, गुणवत्ता स्कोर | ❌ स्थानीय; केवल क्लाउड |
| MCP उपकरण | 10 | 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\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_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 | उन कार्यस्थानों की सूची बनाएँ जिनके आप सदस्य हैं (व्यक्तिगत सहित) |
कार्यस्थान प्रबंधन (बनाएँ, आमंत्रित करें, शामिल हों, छोड़ें) वेब 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 पर संपर्क करें।