RMS Memory MCP — постоянная кросс-IDE память для AI-агентов

· 2 мин чтения
mcp memory rust rag lancedb context-management
📂 Исходный код на GitHub

MCP-сервер на Rust для персистентной, локальной памяти AI-агентов. Гибридный поиск (векторный + полнотекстовый), AST-чанкинг Markdown, семантическая индексация кода, автоустановка в IDE.

RMS Memory MCP — постоянная кросс-IDE память для AI-агентов

RMS Memory MCP решает проблему, знакомую каждому, кто работает с несколькими AI-агентами: вы открываете Cursor, потом Claude Code, потом Zed — и каждый раз заново объясняете архитектуру, договорённости, контекст проекта. Это MCP-сервер на Rust, который даёт единое, изолированное Markdown-хранилище (vault) для любой IDE с поддержкой MCP.

Основные возможности

Глобальные изолированные vault'ы. Контекст хранится вне репозитория — никаких файлов .mcp в проекте. Каждый проект получает свой vault, вычисленный из хеша пути.

Гибридный поиск. Векторный поиск через встраиваемый LanceDB сочетается с полнотекстовым поиском Tantivy. Результаты из разных корпусов объединяются Reciprocal Rank Fusion — запрос не возвращает пустой ответ из-за несовпадения ключевых слов.

Мультиязычное семантическое понимание. fastembed-rs + модель multilingual-e5-small — нативное понимание русского и английского.

AST-чанкинг Markdown. Парсер pulldown-cmark разбирает Markdown-дерево и строит чанки, привязанные к родительскому заголовку, с границей 1500 символов и перекрытием ~200 символов для больших блоков кода. Без разрывов посреди предложений.

Семантическая индексация кода. Опциональный Tree-sitter для Rust, Go, JS/JSX, TS/TSX, Python, C/C++, Java, Ruby, Swift и Vue <script>. Стабильные идентификаторы сегментов и повторяемые преамбулы сохраняют контекст при разделении больших реализаций.

Граф знаний. Отношения между документами и кодом хранятся отдельно от чанков, готовы к будущему визуальному редактору.

Правила как код. Неразрушающее AST-патчинг .cursorrules, .zed/assistant.md и других IDE-файлов правил.

Устойчивость записи. rms_write создаёт rolling .bak-копии и атомарно заменяет файлы после fsync.

Аудит-метаданные. Каждая запись получает last_modified_by, timestamp, confidence, source — агенты могут фильтровать по надёжности.

Множественные scope'ы. Флаг --scope поддерживает идентификаторы за пределами файловой системы: thread ID, lead ID и т.д.

Установка

Homebrew (macOS Apple Silicon, Linux)

brew tap max-ramas/tap
brew install rms-memory-mcp

Cargo

cargo install rms-memory-mcp

Из исходников

git clone https://github.com/max-ramas/rms-memory-mcp.git
cd rms-memory-mcp
cargo build --release
cp target/release/rms-memory ~/.cargo/bin/

Готовые бинарники для aarch64-apple-darwin, x86_64-unknown-linux-gnu, aarch64-unknown-linux-gnu и x86_64-pc-windows-msvc публикуются с каждым релизом.

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

Подключить все IDE на машине одной командой:

rms-memory install

Это сканирует ~/.config/ и ~/Library/Application Support/ и прописывает rms-memory в Cursor, Zed, Claude Code, OpenCode и другие — без ручного редактирования JSON.

Для виртуальных проектов (треды, лиды):

rms-memory --scope "thread:abc-123" serve

Scope — это граница изоляции vault'а и его индекса. Без --scope используется текущая рабочая директория; явный путь адресует проектный vault; любой другой идентификатор создаёт изолированный виртуальный vault:

rms-memory serve                                   # scope текущего проекта
rms-memory --scope "/home/user/my-project" serve   # явный проектный scope
rms-memory --scope "thread:abc-123" serve           # виртуальный scope треда
rms-memory --scope "product:acme" serve             # виртуальный scope продукта

Конфигурация и CLI

Интерактивный мастер настройки:

rms-memory config

Основные команды

Команда Описание
rms-memory serve Запуск JSON-RPC stdio сервера (IDE запускает автоматически)
rms-memory init Регистрация проекта в глобальном реестре
rms-memory import Сканирование и импорт существующей документации
rms-memory install Автоустановка в поддерживаемые IDE
rms-memory uninstall Удаление из всех IDE
rms-memory doctor Диагностика vault'а (5 проверок)
rms-memory reindex Перестроение Markdown-памяти, индекса кода или всего сразу
rms-memory sync Инкрементальная синхронизация LanceDB
rms-memory gc Очистка индексов удалённых vault'ов
rms-memory export-llms Экспорт vault'а в один llms.txt

MCP-инструменты

Инструмент Назначение Параметры
rms-memory_rms_search Гибридный поиск по vault'у и/или коду query, corpus (vault/code/all), limit, min_confidence
rms-memory_rms_code_search Поиск по семантическому индексу кода query, limit, include_content
rms-memory_rms_read Чтение документа по пути path
rms-memory_rms_write Запись решений, правил, ограничений path, content, mode (replace/append/create), confidence, source

Семантическая индексация кода

Индексация Markdown-документов включена по умолчанию. Семантическая индексация исходного кода — опциональна:

rms-memory reindex --code   # только код
rms-memory reindex --all    # vault + код

Режим индексации кода: off (по умолчанию), manual или watch. Режим watch явно опционален, группирует сохранения с задержкой 3 секунды и координирует конкурирующие процессы IDE.

Выбор языков — на уровне проекта:

rms-memory config --code-languages auto
rms-memory config --code-languages go,typescript,tsx,vue

Поддерживаются: rust, go, javascript, jsx, typescript, tsx, python, c, cpp, java, ruby, swift, vue. Директории сборки (node_modules, .next, target, vendor, coverage) всегда исключаются.

Архитектура

Единая конфигурация. Центральный ~/.rms-memory/registry.toml сопоставляет каждый проект с изолированным vault'ом. Никаких .mcp-файлов в репозитории.

Связанные документы. rms-memory import может создавать Link Files — Markdown-заглушки с link: <path> в frontmatter. Чтение и запись прозрачно перенаправляются в исходный файл, а векторный индекс учитывает структуру vault'а.

Раздельные корпусы. Markdown и производный код хранятся в отдельных таблицах LanceDB. Кодовые чанки несут стабильные идентификаторы символов, диапазоны строк и преамбулы; неизменённые чанки переиспользуют векторы.

Десять уровней отказоустойчивости:

  1. Защита от path traversal и инъекций в фильтры
  2. Предотвращение зомби-процессов
  3. Graceful shutdown (SIGINT/Ctrl+C)
  4. Обход macOS-песочницы для загрузки моделей fastembed
  5. gc — очистка orphan-индексов
  6. PID-aware блокировка записи и фоновая синхронизация только для чтения
  7. Наблюдатели за изменениями: Markdown + debounce 3с для кода
  8. Снапшоты с rolling .bak (по умолчанию 5 копий)
  9. Изолированное телеметрическое логирование
  10. Экспорт llms.txt

Поддерживаемые IDE

IDE Автоустановка Внедрение правил
Cursor .cursorrules
Zed .zed/assistant.md
Claude Code .claude/CLAUDE.md
OpenCode
Codex
VS Code
Antigravity

Валидация

На версии v1.0.5 проверены живые MCP-запросы rms_search(corpus=vault|code|all) и rms_code_search. На собственном репозитории reindex --code проиндексировал 43 Rust-файла в 298 семантических элементов и 438 сегментов. Стресс-тест с пятью наблюдателями обработал быстрые сохранения в одно обновление, а позже реальная нагрузка с семью MCP-серверами (после четырёх перезапусков IDE) держала 0.0% CPU при нулевом фоновом перестроении индекса.

Лицензия MIT, автор — Максим Рамзаев, RMS Digital Services.

Источник: https://github.com/max-ramas/rms-memory-mcp