Memlord

официальный

Самостоятельно размещаемый MCP-сервер памяти для личного использования и команд

Что можно делать с Memlord MCP?

  • Сохранить память с типом и тегами — Используйте store_memory, чтобы сохранить факт, предпочтение, инструкцию, отзыв, решение или инсайт, при необходимости установив срок действия.
  • Искать воспоминания с помощью гибридного поиска — Используйте retrieve_memory, чтобы найти релевантные воспоминания с помощью комбинированного полнотекстового поиска BM25 и векторного семантического поиска, возвращая компактные фрагменты.
  • Вспомнить воспоминания по временному выражению — Используйте recall_memory, чтобы найти воспоминания, соответствующие запросам на естественном языке, таким как «на прошлой неделе» или «вчера».
  • Просматривать и фильтровать все воспоминания — Вызовите list_memories с фильтрами по типу и тегам для постраничного просмотра сохранённых воспоминаний.
  • Консолидировать воспоминания через «сновидение» — Запустите промпт dream, чтобы ассистент просмотрел кандидаты dream_report, объединил почти дублирующиеся в инсайты и неразрушающим образом вывел из обращения устаревшие воспоминания.

Документация

Самодостаточный MCP-сервер памяти с гибридным поиском BM25 + семантический поиск на базе PostgreSQL +
pgvector

Самодостаточный MCP-сервер памяти для личного использования и команд

License Python Version MCP Ruff MCP score

Быстрый стартКак это работаетИнструменты MCPКонфигурацияТребованияЛицензия


✨ Возможности

  • 🔍 Гибридный поиск — BM25 (полнотекстовый) + векторный KNN (pgvector), объединённые через Reciprocal Rank Fusion
  • 📂 Многопользовательский — каждый пользователь видит только свои воспоминания; рабочие пространства для общих знаний команды
  • 🛠️ 11 инструментов MCP — сохранение, извлечение, вызов, список, поиск по тегу, получение, обновление, удаление, перемещение, список рабочих пространств, отчёт о сне
  • 💤 Сон — управляемый проход консолидации (dream промпт MCP + dream_report инструмент): находит почти дублирующиеся и конфликтующие воспоминания, неразрушающе объединяет их в инсайты, управляемые клиентской LLM
  • 🌐 Веб-интерфейс — просмотр, поиск, редактирование и удаление воспоминаний в браузере; экспорт/импорт 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
Многопользовательский❌ на практике однопользовательский⚠️ ограничение по agent-ID, без изоляции
Рабочие пространства✅ общие + личные, ссылки-приглашения⚠️ пространство имён "Apps"⚠️ теги + conversation_id✅ флаг per-project
Аутентификация✅ OAuth 2.1❌ отсутствует (самодостаточный)✅ OAuth 2.0 + PKCE
Веб-интерфейс✅ просмотр, редактирование, экспорт✅ панель Next.js✅ богатый интерфейс, визуализация графа, оценки качества❌ локальный; только облако
Инструменты MCP11515+~20
Самодостаточный✅ один процесс✅ Docker (3 контейнера)
Ввод воспоминанийРучной (явное сохранение)Автоматически извлекается LLMРучнойРучной (заметки Markdown)
Типы воспоминанийфакт / предпочтение / инструкция / обратная связь / решение / инсайтавтоматически извлечённые фактынаблюдения + wiki-ссылки
Поиск с учётом времени✅ даты на естественном языке⚠️ только 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 — более богатый веб-интерфейс (визуализация графа, оценка качества, 8 вкладок); более разрешительная лицензия (Apache 2.0); несколько вариантов транспорта (stdio, SSE, HTTP)
  • basic-memory — воспоминания представляют собой удобочитаемые файлы Markdown, которые можно редактировать, хранить в системе контроля версий и читать без сервера; wiki-подобные ссылки на сущности формируют локальный граф знаний; ~20 инструментов MCP

Когда выбирать Memlord:

  • Вам нужны локальные эмбеддинги без настройки — модель ONNX поставляется с сервером, не требуется Ollama или внешний API
  • Вы запускаете многопользовательский командный сервер с надлежащей аутентификацией OAuth 2.1 и рабочими пространствами на основе приглашений
  • Вам нужна база данных промышленного уровня (PostgreSQL), которая масштабируется за пределы SQLite на одной машине
  • Вы управляете воспоминаниями явно — сохраняете именно то, что важно, с типами и тегами, а не всё, что LLM решит извлечь
  • Вам нужен самодостаточный веб-интерфейс с полным CRUD и экспортом JSON, без облачной подписки

🚀 Быстрый старт

🐳 Docker

cp .env.example .env
docker compose up

HTTP-сервер (многопользовательский, веб-интерфейс, 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

Откройте http://localhost:8000 для веб-интерфейса. Конечная точка MCP находится по адресу /mcp.


🔍 Как это работает

Каждый поисковый запрос выполняет BM25 и векторный KNN параллельно, затем объединяет результаты через 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])

⚙️ Конфигурация

Все настройки используют префикс MEMLORD_. См. .env.example для полного списка.

ПеременнаяПо умолчаниюОписание
MEMLORD_DB_URLpostgresql+asyncpg://postgres:postgres@localhost/memlordURL подключения к PostgreSQL
MEMLORD_PORT8000Порт сервера
MEMLORD_BASE_URLhttp://localhost:8000Публичный URL для OAuth (режим HTTP)
MEMLORD_OAUTH_JWT_SECRETmemlord-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Поиск по тегам с И/ИЛИ
get_memoryПолучить одно воспоминание по имени с полным содержимым (включая истёкшие)
update_memoryОбновить содержимое, тип, теги, метаданные или срок действия по имени (и опционально переименовать)
delete_memoryУдалить по имени
move_memoryПереместить воспоминание в другое рабочее пространство
list_workspacesСписок рабочих пространств, в которых вы состоите (включая личные)
dream_reportКандидаты на консолидацию только для чтения: пары похожих воспоминаний, истёкшие и скоро истекающие воспоминания

Промпт MCP dream проводит клиентскую LLM через полный проход консолидации по выводу dream_report: классифицирует похожие пары (дубликат / дополняющие / конфликт), объединяет в воспоминания insight, выводит из употребления заменённые через expires_at — никогда неразрушающе.

Управление рабочими пространствами (создание, приглашение, присоединение, выход) осуществляется через веб-интерфейс.


💻 Системные требования

  • 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 для приобретения.