Persistent semantic memory для AI-агентов на ChromaDB. Claude запоминает факты, предпочтения и контекст между сессиями, искать по накопленным знаниям — embeddings-based semantic search.
Требуется: 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" } } } }
Open-source хранилище памяти для ИИ-агентов — REST API, MCP, OAuth, CLI, панель управления. Один собственный сервис, все виды транспорта. Агенты сохраняют решения, делятся каузальными графами знаний и извлекают контекст за 5 мс — без привязки к облаку или затрат на API.
Совместим с LangGraph · CrewAI · AutoGen · любым HTTP-клиентом · Claude Desktop · OpenCode
Смотрите обзор веб-панели управления на YouTube — семантический поиск, браузер тегов, загрузка документов, аналитика, оценка качества и документация API менее чем за 2 минуты.
В отличие от серверов 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"],
})
Этот паттерн — теги как межагентные сигналы — естественно вытекает из системы тегов и не требует никакой дополнительной инфраструктуры.
"Качество жизни, которое добавляет к рабочим процессам ИИ независимая от сессии память, огромно. Файловая память требует постоянной дисциплины. Семантический поиск из работающей базы данных — нет. Сохранение данных на собственном оборудовании с обеспечением удалённой доступности через платформы оказалось функцией, о которой я не знал, что она мне нужна." — @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, для надёжного управления сессиями
| 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 эндпоинтов) |
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 |
Почему разница в эталонах? Два независимых фактора:
memory_store_session (добавлено в v10.35.0) повышает наш показатель до 86.0% R@5.¹ Измерено в «raw mode» MemPalace (простой текст в ChromaDB с встраиваниями по умолчанию). Согласно Issue #27, структурные возможности Palace обходятся в этой конфигурации.
² Результат 100% использует опциональное переранжирование LLM (~500 API-вызовов) на частично настроенной тестовой выборке. Чистый удерживаемый показатель (как сообщают разработчики): 98.4% R@5.
Ваш ИИ-помощник забывает всё, когда вы начинаете новый чат. После 50 использований инструментов контекст взрывается до 500k+ токенов — Claude замедляется, вы перезапускаете, и теперь он ничего не помнит. Вы тратите 10 минут, заново объясняя свою архитектуру. Снова.
MCP Memory Service решает эту проблему.
Он автоматически захватывает контекст вашего проекта, архитектурные решения и паттерны кода. Когда вы начинаете новые сессии, ваш ИИ уже знает всё — никакого повторного объяснения, никакой потери контекста, никакой потери времени.
Техническая демонстрация: Производительность, Архитектура, ИИ/ИМ интеллект и опыт разработчика
LangGraph · CrewAI · AutoGen · Любой HTTP-клиент · OpenClaw/Nanobot · Пользовательские конвейеры
Claude Code · Gemini CLI · Gemini Code Assist · OpenCode · Codex CLI · Goose · Aider · GitHub Copilot CLI · Amp · Continue · Zed · Cody
Claude Desktop · VS Code · Cursor · Windsurf · Kilo Code · Raycast · JetBrains · Replit · Sourcegraph · Qodo
ChatGPT (Режим разработчика) · claude.ai (Удалённый MCP через HTTPS)
Плавно работает с любым совместимым с MCP клиентом или HTTP-клиентом — будь то создание конвейеров агентов, кодирование в терминале, IDE или браузере.
💡 НОВОЕ: ChatGPT теперь поддерживает MCP! Включите Режим разработчика, чтобы напрямую подключить ваш сервис памяти. Смотрите руководство по настройке →
Не уверены, какая настройка подходит вашим потребностям? Ознакомьтесь с Руководством по настройке — дерево решений подберёт нужный путь менее чем за минуту.
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 для объяснения причин.
Помимо 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.» ✅ |
Результат: Ноль повторных объяснений. Ноль потери контекста. Просто непрерывное, интеллектуальное сотрудничество.
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.

8 вкладок панели управления: Обзор • Поиск • Просмотр • Документы • Управление • Аналитика • Качество • Документация API
📖 Смотрите Руководство по веб-панели управления для полной документации.
Патч: исправление(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)
- Миграция тегов не требуется (обратная совместимость)
Безопасность: Миграции идемпотентны и безопасны для повторного запуска
Если ваш код ожидает двунаправленное хранение для асимметричных отношений:
# СТАРОЕ поведение (больше не применяется):
result = storage.find_connected(memory_id, relationship_type="causes")
# НОВОЕ: явно используйте параметр направления
result = storage.find_connected(
memory_id,
relationship_type="causes",
direction="both"
)
Если вы столкнулись с проблемами: Руководство по устранению неполадок · CHANGELOG.md · Открыть issue
MCP_CUSTOM_MEMORY_TYPESМы приветствуем вклад! Ознакомьтесь с CONTRIBUTING.md для получения инструкций.
Быстрая настройка для разработки:
git clone https://github.com/doobidoo/mcp-memory-service.git
cd mcp-memory-service
pip install -e . # Редактируемая установка
pytest tests/ # Запуск набора тестов