MCP Memory Service

MCP MCP Servers Open Source

Persistent semantic memory для AI-агентов на ChromaDB. Claude запоминает факты, предпочтения и контекст между сессиями, искать по накопленным знаниям — embeddings-based semantic search.

Добавлен 06.07.2026 · Обновлён 06.07.2026 · MCP Servers
Установка
Требуется: Python 3.10+, uv.

# Установка:
git clone https://github.com/shaneholloman/mcp-memory-service.git
cd mcp-memory-service && pip install -e .

# Claude Desktop — claude_desktop_config.json:
{ "mcpServers": { "memory": { "command": "python", "args": ["-m", "mcp_memory_service"], "env": { "MCP_MEMORY_CHROMA_PATH": "/path/to/chroma_db", "MCP_MEMORY_BACKUPS_PATH": "/path/to/backups" } } } }

# Claude Code (CLI):
claude mcp add memory --env MCP_MEMORY_CHROMA_PATH=/path/to/db -- python -m mcp_memory_service

# OpenCode — ~/.config/opencode/opencode.json:
{ "mcp": { "memory": { "type": "local", "command": ["python", "-m", "mcp_memory_service"], "environment": { "MCP_MEMORY_CHROMA_PATH": "/path/to/chroma_db" } } } }
переведено ИИ

mcp-memory-service

Постоянная общая память для пайплайнов ИИ-агентов

Open-source хранилище памяти для ИИ-агентов — REST API, MCP, OAuth, CLI, панель управления. Один собственный сервис, все виды транспорта. Агенты сохраняют решения, делятся каузальными графами знаний и извлекают контекст за 5 мс — без привязки к облаку или затрат на API.

Совместим с LangGraph · CrewAI · AutoGen · любым HTTP-клиентом · Claude Desktop · OpenCode


Лицензия: Apache 2.0 Версия PyPI Python Звёзды на GitHub Работает с LangGraph Работает с CrewAI Работает с AutoGen Работает с Claude Работает с Cursor Удалённый MCP claude.ai совместим с браузером OAuth 2.0 Спонсор


🎬 Работа в действии

Посмотрите обзор панели управления

Смотрите обзор веб-панели управления на YouTube — семантический поиск, браузер тегов, загрузка документов, аналитика, оценка качества и документация API менее чем за 2 минуты.


🌐 Работает с claude.ai (в браузере)

В отличие от серверов MCP только для десктопов, mcp-memory-service поддерживает удалённый MCP для нативной интеграции с claude.ai.

Что это значит: - ✅ Используйте постоянную память напрямую в браузере (не требуется Claude Desktop) - ✅ Работает на любом устройстве (ноутбук, планшет, телефон) - ✅ Готов к enterprise-применению (OAuth 2.0 + HTTPS + CORS) - ✅ Размещение у себя ИЛИ в облаке (ваш выбор)

Настройка за 5 минут:

# 1. Запуск сервера с включённым удалённым MCP
MCP_STREAMABLE_HTTP_MODE=1 \
MCP_SSE_HOST=0.0.0.0 \
MCP_SSE_PORT=8765 \
MCP_OAUTH_ENABLED=true \
python -m mcp_memory_service.server

# 2. Организуйте доступ через Cloudflare Tunnel (или собственную настройку HTTPS)
cloudflared tunnel --url http://localhost:8765
# → Вывод: https://random-name.trycloudflare.com

# 3. В claude.ai: Настройки → Подключения → Добавить подключение
# Вставьте URL: https://random-name.trycloudflare.com/mcp
# Процесс OAuth автоматически выполнит аутентификацию

Настройка для продакшена: Смотрите Руководство по настройке удалённого MCP для конфигурации Let's Encrypt, nginx и файрвола. Пошаговое руководство: Блог: 5-минутная настройка claude.ai | Руководство в Wiki


Зачем агентам это нужно

Без mcp-memory-service С mcp-memory-service
Каждый запуск агента начинается с нуля Агенты извлекают предыдущие решения за 5 мс
Память локальна для одного графа/запуска Память общая для всех агентов и запусков
Вы управляете Redis + Pinecone + дополнительным кодом Один собственный сервис, нулевые затраты на облако
Нет каузальных связей между фактами Граф знаний с типизированными рёбрами (вызывает, исправляет, противоречит)
Лимиты контекстного окна вызывают амнезию Автономная консолидация сжимает старые воспоминания

Ключевые возможности для пайплайнов агентов: - REST API, независимый от фреймворка — 76 эндпоинтов, не нужна клиентская библиотека MCP - Граф знаний — агенты делятся каузальными цепочками, а не просто фактами - Заголовок X-Agent-ID — автоматическая разметка воспоминаний по идентификатору агента для избирательного поиска - conversation_id — обход дедупликации для инкрементального хранения разговоров - События SSE — уведомления в реальном времени, когда любой агент сохраняет или удаляет воспоминание - Эмбеддинги выполняются локально через ONNX — память никогда не покидает вашу инфраструктуру

Быстрый старт для агентов

pip install mcp-memory-service
MCP_ALLOW_ANONYMOUS_ACCESS=true memory server --http
# REST API запущен на http://localhost:8000
import httpx

BASE_URL = "http://localhost:8000"

# Сохранение — автоматическая разметка заголовком X-Agent-ID
async with httpx.AsyncClient() as client:
    await client.post(f"{BASE_URL}/api/memories", json={
        "content": "Лимит API — 100 запросов/мин",
        "tags": ["api", "limits"],
    }, headers={"X-Agent-ID": "researcher"})
    # Сохранено с тегами: ["api", "limits", "agent:researcher"]

# Поиск — избирательный поиск по агенту
    results = await client.post(f"{BASE_URL}/api/memories/search", json={
        "query": "Лимиты API",
        "tags": ["agent:researcher"],
    })
    print(results.json()["memories"])

Руководства для конкретных фреймворков: docs/agents/

Реальный пример: кластер агентов с общей памятью

"После того, как я поработал с одним из агентов кластера над чем-то, я хочу, чтобы мой локальный агент об этом знал. Тогда агент кластера добавляет особый тег к записи памяти, который мой локальный агент распознаёт как сообщение от агента кластера. Так они в итоге используют это как коммуникационный мост — и это довольно удобно."@jeremykoerber, issue #591

Пятиагентный кластер openclaw использует mcp-memory-service как общее состояние И как шину межагентного взаимодействия — без какого-либо пользовательского протокола. Агенты кластера помечают воспоминания сигнальным тегом, например msg:cluster, а локальный агент фильтрует по этому тегу для получения межкластерных сигналов. Сервис памяти становится координационным слоем с нулевой дополнительной инфраструктурой.

# Агент кластера сохраняет новое знание и помечает его для локального агента
await client.post(f"{BASE_URL}/api/memories", json={
    "content": "Лимит провайдера X — 50 RPM — переключаться на провайдера Y после 40",
    "tags": ["api", "limits", "msg:cluster"],       # сигнальный тег
}, headers={"X-Agent-ID": "cluster-agent-3"})

# Локальный агент опрашивает сообщения от кластера
results = await client.post(f"{BASE_URL}/api/memories/search", json={
    "query": "сообщения от кластера",
    "tags": ["msg:cluster"],
})

Этот паттерн — теги как межагентные сигналы — естественно вытекает из системы тегов и не требует никакой дополнительной инфраструктуры.

Практический пример: Самостоятельно размещённый стек Docker с Cloudflare Tunnel

"Качество жизни, которое добавляет к рабочим процессам ИИ независимая от сессии память, огромно. Файловая память требует постоянной дисциплины. Семантический поиск из работающей базы данных — нет. Сохранение данных на собственном оборудовании с обеспечением удалённой доступности через платформы оказалось функцией, о которой я не знал, что она мне нужна."@PL-Peter, обсуждение #602

Производственно проверенное самостоятельное развёртывание с использованием Docker-контейнеров за Cloudflare tunnel, с AuthMCP Gateway для обработки аутентификации:

Уровень Роль
Cloudflare Tunnel Маршрутизация по имени, управление доступом на основе подсети, аутентификация перед обращением к самостоятельно размещённым ресурсам
AuthMCP Gateway Аутентификация/агрегация с локально управляемыми пользователями, интерфейс администратора, управление доступом к MCP-серверу для каждого пользователя, аутентификация с использованием bearer-токена
mcp-memory-service Два Docker-контейнера, разделяющих одну SQLite базу данных — один для MCP, другой для веб-интерфейса (загрузка документов)

Рекомендации по безопасности для этой конфигурации: - Используйте Cloudflare ZeroTrust с управлением доступом на основе подсети (например, разрешите подсети Anthropic + ваши собственные IP-адреса) - Добавьте фильтрацию IP-адресов клиентов для всех Cloudflare API-токенов (Панель → Мой профиль → API-токены → Редактировать → Фильтрация IP-адресов клиентов), чтобы ограничить misuse при утечке токена - Если вы используете IPv6, включите вашу IPv6 /64 сеть в список разрешенных (Python по умолчанию предпочитает IPv6) - Для долгосрочных сессий в браузере запрашивайте область offline_access во время авторизации, чтобы получать обновляемый refresh_token (срок действия через MCP_OAUTH_REFRESH_TOKEN_EXPIRE_DAYS, по умолчанию 30 дней). Без этой области токены доступа являются единственным учётным продлите MCP_OAUTH_ACCESS_TOKEN_EXPIRE_MINUTES до 1440 (24 часа), если вам нужны более длительные одноразовые сессии. - Рассмотрите использование прокси для аутентификации, такого как AuthMCP или mcp-auth-proxy, для надёжного управления сессиями

Сравнение с альтернативами

В сравнении с коммерческими API памяти

Mem0 Zep DIY Redis+Pinecone mcp-memory-service
Лицензия Проприетарная Корпоративная Apache 2.0
Стоимость API за вызов Корпоративная Затраты на инфраструктуру $0
🌐 claude.ai Браузер ❌ Только десктоп ❌ Только десктоп ✅ Удалённый MCP
OAuth 2.0 + DCR ❓ Неизвестно ❓ Неизвестно ✅ Готов к enterprise
Streamable HTTP ✅ (также поддерживается SSE)
Интеграция с фреймворками SDK SDK Ручная настройка REST API (любой HTTP-клиент)
Граф знаний Нет Ограниченный Нет Да (типизированные ребра)
Автоматическая консолидация Нет Нет Нет Да (ухудшение + сжатие)
Встраивания (embeddings) локально Нет Нет Ручная настройка Да (ONNX, локально)
Конфиденциальность Облако Облако Частичная 100% локально
Гибридный поиск Нет Да Ручная настройка Да (BM25 + векторный)
MCP протокол Нет Нет Нет Да
REST API Да Да Ручная настройка Да (76 эндпоинтов)

В сравнении с альтернативами на базе MCP

MemPalace — это альтернатива на базе MCP, которая стала вирусной в апреле 2026 года с сильными показателями в LongMemEval. Позднее обзор кода сообщества (Issue #27) показал, что заявленные цифры отражают возможности базового векторного хранилища, а не разрекламированную архитектуру Palace, и разработчики подтвердили большинство замечаний. Мы сохраняем сравнение здесь для прозрачности, но читателям следует интерпретировать результаты с учетом этого контекста.

MemPalace mcp-memory-service
LongMemEval R@5 (чистый ChromaDB, без LLM) 96.6%¹ 86.0% (сессия) / 80.4% (ход диалога)
LongMemEval R@5 (с переранжированием) 100%²
Гранулярность хранения На уровне сессии На уровне хода + на уровне сессии
Команда / синхронизация между устройствами ❌ Только локально ✅ Синхронизация через Cloudflare
REST API / Веб-панель
OAuth 2.1 + мультипользовательский доступ
Граф знаний ✅ (типизированные ребра)
Автоматическая консолидация ✅ (ухудшение + сжатие)
Совместимые инструменты ИИ Claude-фокус 25+ инструментов
Лицензия MIT Apache 2.0

Почему разница в эталонах? Два независимых фактора:

  1. Гранулярность загрузки. MemPalace хранит каждый разговор как единую единицу (на уровне сессии). LongMemEval задает вопрос: «Какая сессия содержит ответ?» — вопрос, на который хранение на уровне сессии отвечает структурно. mcp-memory-service по умолчанию использует хранение на уровне хода (одна запись на сообщение), что позволяет проводить детальный поиск («Что именно пользователь сказал о X?»), но распределяет сигнал сессии по множеству записей. Использование memory_store_session (добавлено в v10.35.0) повышает наш показатель до 86.0% R@5.
  2. Что на самом деле измеряют 96.6%. Согласно Issue #27, основной показатель MemPalace получается в «raw mode» — простой текст хранится в ChromaDB с встраиваниями по умолчанию. Архитектура Palace (Wings, Rooms, Halls) не активна в этой конфигурации; «Halls» существуют только как строки метаданных без влияния на ранжирование. 96.6% — это, следовательно, базовый уровень ChromaDB + встраивания по умолчанию, а не измерение структурных возможностей поиска MemPalace. Прямое сравнение «яблок с яблоками» архитектур невозможно с опубликованными числами.

¹ Измерено в «raw mode» MemPalace (простой текст в ChromaDB с встраиваниями по умолчанию). Согласно Issue #27, структурные возможности Palace обходятся в этой конфигурации.

² Результат 100% использует опциональное переранжирование LLM (~500 API-вызовов) на частично настроенной тестовой выборке. Чистый удерживаемый показатель (как сообщают разработчики): 98.4% R@5.


Прекратите заново объяснять свой проект ИИ на каждой сессии

MCP Memory Service

Ваш ИИ-помощник забывает всё, когда вы начинаете новый чат. После 50 использований инструментов контекст взрывается до 500k+ токенов — Claude замедляется, вы перезапускаете, и теперь он ничего не помнит. Вы тратите 10 минут, заново объясняя свою архитектуру. Снова.

MCP Memory Service решает эту проблему.

Он автоматически захватывает контекст вашего проекта, архитектурные решения и паттерны кода. Когда вы начинаете новые сессии, ваш ИИ уже знает всё — никакого повторного объяснения, никакой потери контекста, никакой потери времени.

🎥 2-минутное видео-демо

MCP Memory Service Demo

Техническая демонстрация: Производительность, Архитектура, ИИ/ИМ интеллект и опыт разработчика

⚡ Работает с вашими любимыми ИИ-инструментами

🤖 Фреймворки агентов (REST API)

LangGraph · CrewAI · AutoGen · Любой HTTP-клиент · OpenClaw/Nanobot · Пользовательские конвейеры

🖥️ CLI и терминальный ИИ (MCP)

Claude Code · Gemini CLI · Gemini Code Assist · OpenCode · Codex CLI · Goose · Aider · GitHub Copilot CLI · Amp · Continue · Zed · Cody

🎦 Рабочий стол и IDE (MCP)

Claude Desktop · VS Code · Cursor · Windsurf · Kilo Code · Raycast · JetBrains · Replit · Sourcegraph · Qodo

💬 Интерфейсы чата (MCP)

ChatGPT (Режим разработчика) · claude.ai (Удалённый MCP через HTTPS)

Плавно работает с любым совместимым с MCP клиентом или HTTP-клиентом — будь то создание конвейеров агентов, кодирование в терминале, IDE или браузере.

💡 НОВОЕ: ChatGPT теперь поддерживает MCP! Включите Режим разработчика, чтобы напрямую подключить ваш сервис памяти. Смотрите руководство по настройке →


🚀 Начните за 60 секунд

Не уверены, какая настройка подходит вашим потребностям? Ознакомьтесь с Руководством по настройке — дерево решений подберёт нужный путь менее чем за минуту.

1. Установка:

pip install mcp-memory-service

2. Настройте ваш AI-клиент:

Claude Desktop

Добавьте в ваш конфигурационный файл: - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Windows: %APPDATA%\Claude\claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json

{
"mcpServers": {
  "memory": {
    "command": "memory",
    "args": ["server"]
  }
}
}

Перезапустите Claude Desktop. Теперь ваш AI запоминает всё между сессиями.

Claude Code

claude mcp add memory -- memory server

Перезапустите Claude Code. Инструменты памяти появятся автоматически.

OpenCode

Запустите HTTP API:

MCP_ALLOW_ANONYMOUS_ACCESS=true memory server --http

Установите локальный плагин:

git clone https://github.com/doobidoo/mcp-memory-service.git
cd mcp-memory-service
mkdir -p ~/.config/opencode/plugins
cp opencode/memory-plugin.js ~/.config/opencode/plugins/
cp opencode/memory-plugin.config.example.json ~/.config/opencode/memory-plugin.json

OpenCode автоматически загружает локальные плагины из ~/.config/opencode/plugins/ и .opencode/plugins/.

По желанию: зарегистрируйте слеш-команду /memory в ~/.config/opencode/opencode.json для запроса статуса, поиска и проверки работоспособности из TUI:

{
"command": {
  "memory": {
    "description": "Show MCP Memory Service status. Usage: /memory, /memory search <query>, /memory health",
    "template": ""
  }
}
}

Смотрите Руководство по интеграции с OpenCode для получения информации о конфигурации, локальной установке для проекта, деталях слеш-команд, уведомлениях TUI и текущих ограничениях.

Текущая интеграция с OpenCode поставляется в виде файлов репозитория для директории локального плагина. Если вы установили только пакет PyPI, клонируйте репозиторий один раз, чтобы скопировать файлы плагина.

Плагин по умолчанию обращается к http://127.0.0.1:8000, но memoryService.endpoint и OPENCODE_MEMORY_ENDPOINT позволяют указать любой доступный HTTP-эндпоинт.

🌐 claude.ai (Браузер — Удалённый MCP)

Локальная установка на клиенте не требуется — работает непосредственно в вашем браузере:

# 1. Start server with Remote MCP
MCP_STREAMABLE_HTTP_MODE=1 \
MCP_SSE_HOST=0.0.0.0 \
MCP_OAUTH_ENABLED=true \
python -m mcp_memory_service.server

# 2. Expose publicly (Cloudflare Tunnel)
cloudflared tunnel --url http://localhost:8765

# 3. Add connector in claude.ai Settings → Connectors with the tunnel URL

Смотрите Руководство по настройке удалённого MCP для развёртывания в продакшне с использованием Let's Encrypt, nginx и Docker.

🔧 Продвинутое: Пользовательские бэкенды и командная настройка

Для развёртывания в продакшне, командного взаимодействия или облачной синхронизации:

git clone https://github.com/doobidoo/mcp-memory-service.git
cd mcp-memory-service
python scripts/installation/install.py

Выберите один из вариантов: - SQLite (локальный, быстрый, для одного пользователя) - Cloudflare (облачный, синхронизация между несколькими устройствами) - Гибрид (лучшее из обоих миров: 5 мс локально + фоновая облачная синхронизация) - Milvus (выделенная векторная БД — файл Milvus Lite, самохостинг или Zilliz Cloud)

ℹ️ Для долгоживущих сервисов (MCP-серверы, веб-бэкенды, сессии ноутбуков) рекомендуется использовать Docker Milvus или Zilliz Cloud вместо Milvus Lite. Смотрите docs/milvus-backend.md для объяснения причин.


🛠️ CLI-команды управления жизненным циклом сервера

Помимо memory server --http (режим foreground), CLI теперь включает команды управления жизненным циклом сервера для фонового управления HTTP:

# Start HTTP server in background (default host=127.0.0.1, port=8000)
memory launch

# Start on a custom port
memory launch --port 8192

# Check status and health
memory info --port 8192
memory health --port 8192

# View recent logs and stop server
memory logs --lines 50
memory stop --port 8192

Эти команды оптимизированы для быстрого запуска и не загружают тяжёлые ML-зависимости до тех пор, пока они не понадобятся.

⚠️ Примечание по безопасности: По умолчанию сервер привязывается к 127.0.0.1 (только локальный хост). Чтобы сделать сервер доступным в вашей сети или разрешить удалённый доступ, можно использовать --host 0.0.0.0 или установить MCP_HTTP_HOST=0.0.0.0. Однако это делает API доступным для вашей сети и должно выполняться только в проверенных окружениях с надлежащей аутентификацией и правилами межсетевого экрана в продакшне. Для ненадёжных сетей используйте завершение TLS (реверс-прокси с HTTPS) или VPN-туннели.


💡 Зачем вам это нужно

Проблема

Сессия 1 Сессия 2 (Начало с нуля)
Вы: «Мы создаём приложение на Next.js с Prisma и tRPC» AI: «Какой у вас стек технологий?» ❌
AI: «Понял, вижу, что вы используете App Router» Вы: Снова объясняете архитектуру в течение 10 минут 😤
Вы: «Добавьте аутентификацию с NextAuth» AI: «Следует ли использовать Pages Router или App Router?» ❌

Решение

Сессия 1 Сессия 2 (Начало с нуля)
Вы: «Мы создаём приложение на Next.js с Prisma и tRPC» AI: «Я помню — Next.js App Router с Prisma и tRPC. Что будем создавать?» ✅
AI: «Понял, вижу, что вы используете App Router» Вы: «Добавьте вход через OAuth»
Вы: «Добавьте аутентификацию с NextAuth» AI: «Я интегрирую NextAuth с вашей существующей настройкой Prisma.» ✅

Результат: Ноль повторных объяснений. Ноль потери контекста. Просто непрерывное, интеллектуальное сотрудничество.


🌐 Совместимость с экосистемой SHODH

MCP Memory Service полностью совместим со Спецификацией унифицированного API памяти SHODH v1.0.0, обеспечивая бесшовную совместимость в рамках экосистемы SHODH.

Совместимые реализации

Реализация Бэкенд Эмбеддинги Применение
shodh-memory RocksDB MiniLM-L6-v2 (ONNX) Эталонная реализация
shodh-cloudflare Cloudflare Workers + Vectorize Workers AI (bge-small) Граничное развёртывание, синхронизация между устройствами
mcp-memory-service (данный) SQLite-vec / Гибрид MiniLM-L6-v2 (ONNX) Настольные AI-ассистенты (MCP)

Поддержка унифицированной схемы

Все реализации SHODH используют одну и ту же схему памяти: - ✅ Эмоциональные метаданные: emotion, emotional_valence, emotional_arousal - ✅ Эпизодическая память: episode_id, sequence_number, preceding_memory_id - ✅ Отслеживание источника: source_type, credibility - ✅ Оценка качества: quality_score, access_count, last_accessed_at

Пример совместимости: Экспорт памяти из mcp-memory-service → Импорт в shodh-cloudflare → Синхронизация между устройствами → Полное сохранение fidelity для emotional_valence, episode_id и всех полей спецификации.


✨ Возможности для быстрого старта

🧠 Постоянная память – Контекст сохраняется между сессиями с семантическим поиском 🔍 Умный поиск – Автоматически находит релевантный контекст с помощью AI-эмбеддингов ⚡ Скорость 5 мс – Мгновенная инъекция контекста, без задержек 🔄 Многоклиентность – Работает с более чем 25 AI-приложениями ☁️ Облачная синхронизация – Опциональный бэкенд Cloudflare для командного взаимодействия 🔒 Приоритет конфиденциальности – Локальный подход, вы контролируете свои данные 📊 Веб-панель управления – Визуализация и управление воспоминаниями на http://localhost:8000 🧬 Граф знаний – Интерактивная визуализация взаимосвязей памяти на D3.js 🏠 Оценка качества для Homelab – Оценка по баллам на любом совместимом с OpenAI эндпоинте (Ollama, LiteLLM, vLLM) 🔗 Извлечение сущностей – Автоматическая привязка упоминаний (@), тегов (#), URL-адресов и путей к файлам из содержимого памяти к запрашиваемому графу сущностей 💡 Карточки инсайтов – Консолидация обнаруживает паттерны, тенденции и пробелы в знаниях по вашему корпусу памяти и выдаёт их в виде структурированных инсайтов 🏷️ Фильтрация по совпадению теговtag_match=AND/OR в memory_search для точных запросов по нескольким тегам

Оценка качества для Homelab / самохостинга (v10.45.0+): установите MCP_QUALITY_AI_PROVIDER=openai-compatible для оценки памяти с помощью вашего локального LLM вместо ONNX или облачного API:

MCP_QUALITY_AI_PROVIDER=openai-compatible
MCP_QUALITY_AI_BASE_URL=http://localhost:11434/v1   # Ollama
MCP_QUALITY_AI_MODEL=qwen2.5:7b-instruct
# MCP_QUALITY_AI_API_KEY=ollama                     # необязательно

Рекомендуемые модели: qwen2.5:7b-instruct (Ollama), mlx-community/Qwen2.5-7B-Instruct-4bit (MLX) или любая инструктивная модель через LiteLLM прокси. В случае сбоя эндпоинта автоматически происходит возврат к неявным сигналам для оценки.

Docker-тег :quality-cpu — для пользователей, которые хотят использовать встроенную локальную оценку качества ONNX (ms-marco-MiniLM-L-6-v2 и nvidia-quality-classifier-deberta) без необходимости самостоятельно выполнять разовый экспорт ONNX и не включая torch/transformers в свой контейнер:

docker pull doobidoo/mcp-memory-service:quality-cpu

Образ :quality-cpu экспортирует обе модели во время сборки и распространяет только onnxruntime во время выполнения — нет зависимости от PyTorch в момент развёртывания. Подробности смотрите в tools/docker/README.md.

🖥️ Предварительный просмотр панели управления

Обзор панели управления MCP Memory

8 вкладок панели управления: Обзор • Поиск • Просмотр • Документы • Управление • Аналитика • Качество • Документация API

📖 Смотрите Руководство по веб-панели управления для полной документации.

Последний релиз: v10.70.3 (29 мая 2026 г.)

Патч: исправление(ci) очистка GHCR для мультиархитектуры — решены ошибки 404 при docker pull для всех мультиарх-тегов

Что нового: - fix(ci): замена actions/delete-package-versions на dataaxiom/ghcr-cleanup-action и удаление триггера workflow_run после релиза — старая очистка удаляла манифесты для отдельных платформ через минуты после публикации, вызывая ошибки docker pull 404 для всех мультиарх-тегов начиная с v10.66. Теперь свежие манифесты платформ сохраняются после очистки (проблема #1044, @jonatanbellido, PR #1052). Предыдущие версии: - v10.70.2 - исправление(безопасность): оборачивание f-строк логов в storage/graph.py через _sanitize_log_value() — предупреждения CodeQL py/log-injection #483–#486 (29 мая 2026 г.) - v10.70.1 - функция(автозахват): пайплайн memory_observe + auto_extract + harvest (RFC #1008 §3, @filhocf) + исправление(ci): Docker multi-arch push 404 (29 мая 2026 г.) - v10.70.0 - функция(поиск): мульти-сигнальный рейтинговый режим поиска (mode="ranked") + исправление(безопасность): 9 отклонений CodeQL path-injection + исправление(ci): бейдж версии (29 мая 2026 г.) - v10.69.0 - функция(заметки_об_ошибках): инструменты MCP mistake_note_update + mistake_note_delete + исправление(ci): Docker multi-arch pull + настройка(ci): защита от log-injection в pre_pr_check.sh (28 мая 2026 г.) - v10.68.0 - функция(рассуждение): временные ребра + изменяемость фактов + объединение RRF (RFC #1008, @filhocf) + исправление(безопасность): решены 32 предупреждения CodeQL log/path-injection (28 мая 2026 г.) - v10.67.1 - исправление(безопасность): принудительная проверка авторизации на всех маршрутах /api/documents/ (GHSA-84hp-mqvj-3p8h, CVSSv3.1 9.8 КРИТИЧЕСКАЯ, коммит 907bac72) (28 мая 2026 г.) - v10.67.0 - функция(рассуждение): обнаружение противоречий NLI (RFC #732 Фаза 3, PR #1027, @filhocf) + исправление(mcp): полный HTTP-интерфейс инструментов v10 (PR #1017, @laanwj) + исправление(хранилище): санитизация логов BM25 (CodeQL #440) (28 мая 2026 г.) - v10.66.1 - исправление(хранилище): исправление сигнатуры HttpClientStorage.retrieve (CodeQL #428) + исправление(сбор): разрешение каталога сессии для multi-CLI + поддержка Kiro CLI (PR #1025, @filhocf) (27 мая 2026 г.) - v10.66.0 - функция(рассуждение): транзитивное замыкание + абдуктивное умозаключение + группировка сущностей + карточки инсайтов (RFC #732) + исправление(фильтр_по_времени): принудительное применение на уровне SQL (26 мая 2026 г.) - v10.65.3 - исправление(безопасность): принудительное применение области записи для MCP tools/call (GHSA-2r68-g678-7qr3, CVSS 8.1) + ci: ограничение Docker quality-cpu для linux/amd64 (PR #1004, #1003) - v10.65.1 - исправление(промпты): защита learning_session от неразрешенных плейсхолдеров CLI $N (PR #1000) + документация: конфиденциально-безопасные настройки журнала аудита (PR #999) - v10.65.0 - функция(opencode): слэш-команды /memory, TUI-уведомления, мост статуса, виджет боковой панели Solid TUI, исправление дедупликации итогов сессии (PR #997) - v10.64.2 - исправление(opencode): замена нерабочего хука chat.message на событийно-ориентированный message.part.updated + добавление экспорта default {id,server} для совместимости плагинов V1 + использование агента node:https с rejectUnauthorized=false для поддержки самоподписанных сертификатов (PR #995) - v10.64.1 - исправление(консолидация): повышение порога уверенности ассоциации до 0.5 (PR #991) + исправление(консолидация): продвижение last_run_at при таймауте (#989, закрывает #986) + исправление(oauth): удаление offline_access в соответствии с SEP-2207 (#990) + исправление(консолидация): временное окно близости 7 дней (#988) - v10.64.0 - функция(консолидация): инкрементальный time_horizon для memory_consolidate (#985, @filhocf) + исправление(веб): исправление AttributeError в /api/quality/trends (#982) + документация(исследование): подходы к разрешению противоречий (#984) - v10.63.0 - функция(milvus): низкоприоритетные переопределения, завершающие #888 (search_by_tag_chronological, count_memories_by_tag, is_deleted, purge_deleted) + исправление(сбор): Kiro CLI AssistantMessage + 36-кратное повышение производительности парсинга (PRs #978, #979) - v10.62.0 - функция(milvus): нативные search_memories + retrieve_with_quality_boost + recall_memory (pushdown серверных фильтров, завершает среднеприоритетный #888) + исправление(хуки): парсинг JSONL-транскрипта (PRs #970, #971) - v10.61.0 - функция(milvus): нативные update_memory + update_memories_batch (батчевая upsert за 1 раунд) + функция(sse): повтор Last-Event-ID при переподключении /api/events (PRs #966, #953) - v10.60.2 - исправление(milvus): замена ANN search() на полный перебор query() в семантической дедупликации — исправляет ошибку видимости растущего сегмента Milvus Lite (#964, закрывает #938, @henry201605) - v10.60.1 - исправление(milvus): параметр tag_match в get_all_memories/count_all_memories + исправление(хуки): резервный порт при завершении сессии + исправление(консолидация): восстановление обнаружения противоречий (PRs #958, #960, #961) - v10.60.0 - функция(консолидация): обнаружение временных противоречий + исправление(milvus): кэш графа на уровне экземпляра + исправление(хуки): исправление порта для туннеля/обратного прокси + функция(бенчмарки): адаптер mem0 (PRs #949, #954, #948, #952) - v10.59.2 - исправление(oauth): AnyUrl для redirect_uri, чтобы схемы IDE (cursor://, vscode://) проходили валидацию Pydantic (#942, @tkislan) - v10.59.1 - исправление(oauth): дословное отражение параметра state в соответствии с RFC 6749 §4.1.2, исправляет OAuth в Cursor (#944, @tkislan) - v10.59.0 - функция(oauth): PEM-файлы ключей + схемы перенаправления для IDE; исправление(хуки): симметричная привязка к проекту (PRs #926, #942, #941) - v10.58.0 - функция(инсайты): настраиваемое исключение, эвристика автоматизированного типа, процедура подтверждения (PR #939); функция(сбор): локализованные YAML-плагины (PR #935, @filhocf); функция(плагин): пример smart-tagger (PR #932, @filhocf) - v10.57.3 - функция(milvus): отслеживание last_accessed через вспомогательную коллекцию _access (PR #925, @henry201605) - v10.57.2 - исправление(зависимости): фиксация pymilvus<3.0.0 для восстановления Docker CI Milvus (PR #921) - v10.57.1 - исправление(sqlite): сопоставление тегов с LIKE ESCAPE + исправление(milvus): сравнение значений preserve_timestamps (PRs #916, #918) - v10.57.0 - функция(memory_list): фильтрация тегов AND/OR + функция(сессия): автоматическая разбивка на границах ходов (PRs #904, #912, @filhocf) - v10.56.3 - функция(milvus): get_memory_connections() через коллекцию графа + исправление(качество): укрепление запасного варианта MAINTAIN_SCAN_LIMIT - v10.56.2 - исправление(milvus): отсутствующий параметр stale_days в count_all_memories + исправление(качество): корректный запасной вариант MAINTAIN_SCAN_LIMIT - v10.56.1 - исправление(сессия): передача session_id как conversation_id для обхода семантической дедупликации - v10.56.0 - функция(консолидация): настраиваемый лимит сканирования для поддержания + фильтр пропусков InsightGenerator - v10.55.2 - исправление(инсайты): обработка None memory_type и тегов в сортировке InsightGenerator - v10.55.1 - исправление(сущности): ссылки на сущности всегда 0 в шаге 5 maintain из-за неверного доступа к графу (PR #895) - v10.55.0 - функция(рассуждение+консолидация): извлечение сущностей, связывание память-сущность и карточки инсайтов (PRs #868, #869, @filhocf) - v10.54.0 - функция(поиск): параметр tag_match для AND/OR фильтрации тегов в memory_search (PR #890, @filhocf) - v10.53.0 - функция(milvus): активация поэтапного наполнения эмбеддингов консолидации; безопасность: GitPython 3.1.50 (PRs #885, #886, @henry201605) - v10.52.0 - функция(поиск): каскадный запасной вариант при разреженных семантических результатах; рефакторинг(хранилище): include_embeddings для абстрактных методов массового чтения (PRs #883, #881, @filhocf, @henry201605) - v10.51.3 - функция(memory_update): флаг версионирования; функция(memory_graph): infer_transitive и suggest_relationships (PRs #865, #866, @filhocf) - v10.51.2 - исправление(oauth): сбои предварительного запроса CORS и отсутствующий resource_metadata; рефакторинг(milvus): опциональное наполнение эмбеддингов при чтении (PRs #877, #878) - v10.51.1 - исправление(milvus): добавление прокси delete_memory для протокола консолидации (PR #872, @henry201605) - v10.51.0 - функция(плагины): живые хуки плагинов + динамические выпадающие списки типов + пример журнала аудита (PRs #863, #864, #867, @filhocf) - v10.50.0 - функция(плагины): каркас хуков плагинов — on_store, on_delete, on_retrieve, on_consolidate (PR #856, @filhocf) - v10.49.4 - исправление(консолидация): защита ценных заметок об ошибках от упадка/забвения (PR #854, @filhocf) - v10.49.3 - исправление(opencode): исправление API пути, поля полезной нагрузки и клиентской фильтрации тегов (PRs #849, #850) - v10.49.2 - исправление(онтология): регистрация пользовательских базовых типов с пустыми списками подтипов (PR #846) - v10.49.1 - исправление: вывод предупреждений приведения онтологии memory_type + исправление flake в CI uvx (PR #844) - v10.49.0 - функция(cli): ленивые команды жизненного цикла и более быстрый запуск (PR #841, @creativelaides) - v10.48.0 - функция: фильтр извлечения include_superseded + автоматическая пометка при противоречии (PR #814, @filhocf) - v10.47.2 - исправление(консолидация): отключение по умолчанию расписания предотвращает непреднамеренную автоматическую консолидацию (PR #821, закрывает #808) - v10.47.1 - исправление(веб): вывод ошибок /server/update сквозь весь стек (PR #807, закрывает #729) - v10.47.0 - функция: оркестратор поддержания memory_quality + квантизация Docker DeBERTa (PRs #802, #803, @filhocf, закрывает #799, #793) - v10.46.0 - функция: фильтр stale_days для memory_list — обнаружение неактивной памяти (PR #796, @filhocf, закрывает #784) - v10.45.1 - исправление: очистка избыточного импорта CodeQL + тесты регрессии soft-delete (PRs #794, #795, @filhocf) - v10.45.0 - функция(качество): провайдер, совместимый с OpenAI, для LiteLLM/Ollama/MLX + защитные UPDATE-операции при soft-delete (PRs #790, #783, @filhocf) - v10.44.0 - функция: Заметки об ошибках — структурированный повтор ошибок (mistake_note_add, mistake_note_search, PR #786, @filhocf) - v10.43.0 - функция(поиск): Обратное ранжирование (RRF) для гибридного поиска SQLite-vec (PR #773, @filhocf) - v10.42.1 - исправление(milvus): добавление отсутствующего anns_field в вызовы поиска для коллекций с BM25 (PR #775, @henry201605) - v10.42.0 - функция(milvus): MilvusGraphStorage, гибридный поиск BM25 и интеграция консолидации (PR #762, @henry201605) - v10.41.0 - функция(oauth): грант refresh_token OAuth 2.1 с ротацией, memory_graph на streamable-http (PRs #766, #759) - v10.40.4 - исправление(качество): обработка логитов кросс-энкодера формы (1, 1) в ранжировщике ONNX (PR #765) - v10.40.3 - исправление(claude-hooks): устранение обрыва соединения и увеличение таймаута хука (PR #761) - v10.40.2 - исправление(docker): исправление неверного Python однострочника в предварительной загрузке ONNX (PR #757) - v10.40.1 - исправление(синхронизация): повышение надежности гибридной синхронизации CF + точность отчетности (PRs #751, #753) - v10.40.0 - функция: хранилище Milvus (Lite / self-hosted / Zilliz Cloud), усиление безопасности OAuth XSS, валидация структуры плагинов (PRs #721, #745, #740) - v10.39.1 - горячее исправление: формат объекта поля author в plugin.json — разблокирует /plugin install mcp-memory-service (#738, #739) - v10.39.0 - функция: установка плагина Claude Code (/plugin marketplace add doobidoo/mcp-memory-service) + нативные для протокола записи MemoryClient.storeMemory() (PRs #736, #735) - v10.38.4 - исправление(mcp): возврат HTTP 202 для JSON-RPC уведомлений — исправляет рукопожатие Codex/strict-client (PR #733) - v10.38.3 - исправление: авто-проверка вкладки сервера, total_pages в list_memories, отрисовка ребер графа знаний (PRs #728, #731, #730) - v10.38.2 - исправление(windows): обход сертификатов в PS 7+, SkipCertificateCheck для каждого вызова, sourcing библиотеки chicken-egg (PR #723) - v10.38.1 - исправление: порты loopback для OAuth (RFC 8252), NameError при CLI ingestion, флаги SSE CLI, обновления Docker CI (PRs #697, #704, #705, #707-709) - v10.38.0 - функция: опциональный хук SessionEnd auto-harvest для Claude Code — безопасен по умолчанию, 0 npm-зависимостей, 5-секундный таймаут, опциональный TLS (PR #711, 1 547 тестов) - v10.37.0 - функция: HTTP-эндпоинт POST /api/harvest для Session Harvest + усиление безопасности CodeQL path-injection (PR #710, 1 547 тестов) - v10.36.8 - исправление: блокирующие цикл событий пути в SqliteVecMemoryStorage.initialize() — применение pragma и запасной вариант хеш-эмбеддинга теперь выполняются в рабочем потоке под _conn_lock (PR #700, 1 537 тестов) - v10.36.7 - безопасность: обновление pygments до 2.20.0 (CVE-2026-4539/GHSA-5239-wwwm-4pmq) — исправление ReDoS через транзивную зависимость rich (PR #698, 1 537 тестов) - v10.36.6 - безопасность: обновление cryptography до 46.0.7 (CVE-2026-39892) — исправление переполнения буфера при обработке несвязных буферов (PR #690, 1 537 тестов) - v10.36.5 - исправление: обновление Cloudflare Vectorize API с v1 до v2 + исправления тестового скрипта — исправлена ошибка 1010 "incorrect_api_version", аргумент content_hash, исправление sys.path (PR #689, @mychaelgo, 1 537 тестов) - v10.36.4 - исправление(windows): горячее исправление для Get-McpApiKey, возвращающего первый символ вместо полного ключа API — исправлена ловушка перечисления массивов PowerShell (PR #687, 1 537 тестов) Полная история версий*: CHANGELOG.md | Более старые версии (v10.36.3 и ранее) | Все релизы

📊 Бенчмарки извлечения

Три бенчмарка для измерения качества извлечения (all-MiniLM-L6-v2, эмбеддинги 384d, ноль вызовов LLM API):

LongMemEval (500 вопросов, ~45–62 отвлекающих сессий на вопрос):

Тип вопроса R@5 R@10 NDCG@10 MRR
Общий 80.4% 90.4% 82.2% 89.1%
single-session-assistant 100.0% 100.0% 99.3% 99.1%
knowledge-update 84.6% 96.8% 86.2% 95.5%
single-session-user 91.4% 92.9% 86.0% 83.8%
temporal-reasoning 72.0% 84.1% 75.1% 85.7%
multi-session 70.7% 86.0% 77.6% 89.4%

DevBench (практические запросы из рабочего процесса разработчика):

Категория Recall@5 MRR
Общий 91.1% 0.861
exact 100% 1.000
semantic 80.0% 0.700
cross-type 90.0% 0.867

LoCoMo (ACL 2024 долгосрочная разговорная память):

Категория Recall@5 MRR
Общий 49.7% 0.414
multi-hop 72.0% 0.600
temporal 33.5% 0.274

Запуск бенчмарков: python scripts/benchmarks/benchmark_longmemeval.py, python scripts/benchmarks/benchmark_devbench.py, python scripts/benchmarks/benchmark_locomo.py


Миграция на v9.0.0 (обновление с v8.x)

⚡ TL;DR: Ручная миграция не требуется — обновления происходят автоматически!

Ломающие изменения: - Онтология типов памяти: Устаревшие типы автоматически мигрируют в новую таксономию (task→observation, note→observation) - Асимметричные отношения: Направленные ребра (больше не двунаправленные)

Процесс миграции: 1. Остановите свой MCP-сервер 2. Обновите до последней версии (git pull или pip install --upgrade mcp-memory-service) 3. Перезапустите сервер — автоматические миграции запустятся при старте: - Миграции схемы базы данных (009, 010) - Мягкая валидация типов памяти (устаревшие типы → observation) - Миграция тегов не требуется (обратная совместимость)

Безопасность: Миграции идемпотентны и безопасны для повторного запуска

Ломающее изменение 1: Онтология типов памяти

  • Устаревшие типы памяти (task, note, standard) устарели
  • Новая формальная таксономия: 5 базовых типов (observation, decision, learning, error, pattern) с 21 подтипом
  • Миграция автоматическая при перезапуске сервера — ручные действия не требуются

Ломающее изменение 2: Асимметричные отношения

  • Асимметричные отношения (causes, fixes, supports, follows) теперь хранят только направленные ребра
  • Симметричные отношения (related, contradicts) продолжают хранить двунаправленные ребра
  • Миграция базы данных (010) запускается автоматически при старте

Если ваш код ожидает двунаправленное хранение для асимметричных отношений:

# СТАРОЕ поведение (больше не применяется):
result = storage.find_connected(memory_id, relationship_type="causes")

# НОВОЕ: явно используйте параметр направления
result = storage.find_connected(
  memory_id,
  relationship_type="causes",
  direction="both"
)

Если вы столкнулись с проблемами: Руководство по устранению неполадок · CHANGELOG.md · Открыть issue


📚 Документация и ресурсы


🤝 Участие в разработке

Мы приветствуем вклад! Ознакомьтесь с CONTRIBUTING.md для получения инструкций.

Быстрая настройка для разработки:

git clone https://github.com/doobidoo/mcp-memory-service.git
cd mcp-memory-service
pip install -e .  # Редактируемая установка
pytest tests/      # Запуск набора тестов

Комментарии
Войдите, чтобы оставить комментарий