Skip to main content
Glama

srs-mcp — интервальное повторение в виде MCP-сервера

Дайте любому агенту, поддерживающему MCP (Claude Code, Claude Desktop или любому другому MCP-хосту), настоящую, правильно планируемую память с интервальным повторением, вместо того чтобы каждый раз вручную заново выводить «что нужно повторить сегодня» из markdown-таблицы. Реализует SM-2 (алгоритм, лежащий в основе Anki/SuperMemo) в виде четырёх вызываемых инструментов, с локальным SQLite-файлом в качестве хранилища. Без аккаунта, без сетевых вызовов, без телеметрии — всё работает на вашей машине.

Статус: прототип, ещё нигде не опубликован. Собран и проверен локально (см. «Как это было проверено» ниже); ещё не установлен никем за пределами этого проекта. Считайте версию 0.2.0 предрелизной.

Зачем это существует

Markdown-чек-листы и таблицы словарного запаса — распространённые способы, которыми люди (и помогающие им агенты) отслеживают, что нужно повторить, но ничто не вычисляет из них реальное расписание — «нужно сегодня» оказывается догадкой, которую каждый раз перечитывают глазами. srs-mcp — недостающий элемент: небольшой настоящий алгоритм планирования, представленный в виде инструментов, чтобы агент мог отслеживать состояние повторения для чего угодно — карточек, вопросов на собеседовании, словарного запаса, вводных тестов — не переписывая SM-2 в промпте.

Четыре основных инструмента (бесплатно, без ограничений, навсегда)

Tool

Что делает

add_item(topic, question, answer)

Добавляет элемент для повторения в указанную тему. Новые элементы становятся доступными сразу.

get_due_items(topic="", limit=10)

Список элементов, которые нужно повторить сегодня или позже срока. Ответ скрыт до оценки, как при настоящем повторении карточек.

grade_item(item_id, quality)

Оценивает запоминание по шкале 0–5 (5 = отлично, <3 = провал/сброс). Возвращает следующую дату повторения по SM-2 и правильный ответ.

get_stats(topic="")

Итоги, количество к повторению сегодня, средний коэффициент лёгкости.

Получить Pro

Два дополнительных инструмента доступны только по Pro-лицензии — это разделение на бесплатную и платную версии, которое srs-mcp использует вместо подписок или облачного бэкенда:

Tool

Что делает

export_items(topic="", format="json"|"csv")

Массовый экспорт/резервное копирование всех ваших данных о повторениях.

get_forecast(topic="", days=30)

Прогноз нагрузки повторений — сколько элементов станут доступными в каждый из следующих N дней, чтобы накопление было видно заранее.

Как конкретно работает лицензирование: srs-mcp подписывает лицензионные ключи с помощью закрытого ключа Ed25519, который никогда не покидает машину сопровождающего; в этом репозитории поставляется только соответствующий открытый ключ (license.py), который может проверить подпись, но не может её подделать. Купите ключ, задайте его как SRS_LICENSE_KEY (переменная окружения) или сохраните в ~/.srs-mcp/license.key, и Pro-инструменты разблокируются — без аккаунта, без проверки связи с домом, работает офлайн. См. license.py для полного механизма и его заявленных ограничений (кратко: это сдерживает случайное копирование, это не DRM — ничто не мешает кому-то вырезать проверку в своей локальной копии открытого Python-файла; см. docstring модуля для честной версии этого компромисса).

Живой ссылки для покупки пока нет. Этот раздел описывает механизм, который создан и протестирован (см. test_license_gate.py), а не работающий магазин. Когда появится процесс покупки, он будет здесь.

Установка

Требуется Python 3.11+.

git clone <repo-url>   # not yet public — see status note above
cd srs-mcp
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/srs-mcp       # runs the server on stdio

Чтобы использовать его как плагин Claude Code, укажите Claude Code на этот каталог (или, после публикации, на его запись в маркетплейсе) — .claude-plugin/plugin.json и .mcp.json уже настроены; сервер читает SRS_DB_PATH, поэтому данные установки плагина переживают обновления (${CLAUDE_PLUGIN_DATA}/srs.db в Claude Code или расположенный рядом srs.db для прямого/ручного запуска).

Как это было проверено

Не просто «оно импортируется» — реально запущено, по настоящему протоколу MCP:

  • test_client.py запускает server.py как подпроцесс (так же, как это делает настоящий MCP-хост), проводит полный сеанс add/list/grade/list и независимо перепроверяет полученные строки SQLite вне тестовой среды.

  • test_license_gate.py запускает сервер тремя способами (без лицензии, с действительной лицензией, с изменённой лицензией) и подтверждает, что export_items / get_forecast отказывают в случаях 1 и 3 и возвращают реальные данные в случае 2 — доказывая, что проверка лицензии — это настоящий шлюз, а не заглушка.

  • ingest_chinese_vocab.py и ingest_leetcode.py — рабочие идемпотентные скрипты импорта, которые заполняют реальные личные данные (114 элементов китайского словарного запаса, 16 решённых задач LeetCode) из markdown-трекеров этого проекта через реальные вызовы add_item MCP, а не прямые записи в SQLite.

Честный разрыв до «готовности к запуску» — без преувеличений

  1. Нет публичного репозитория. Каждый реальный путь распространения (маркетплейс плагинов сообщества Claude Code, релиз на GitHub, листинг в каталоге MCP) требует, чтобы проект был доступен по публичному git-URL. Этот проект существует только локально. Создание такого репозитория (репозиторий GitHub, возможно, аккаунт) выходит за рамки текущей автономии этого проекта без явного разрешения — всё вышеперечисленное подготовлено так, чтобы это было действие «скопировать и отправить», а не задача сборки, как только разрешение будет дано.

  2. Невозможно самостоятельно проверить через claude plugin validate. В этом окружении разработки нет CLI claude или Node/npx. Манифест плагина соответствует схеме, насколько это может подтвердить внимательное чтение документации Anthropic и перекрёстная ссылка на их собственный продакшн-marketplace.json, но не проверен машинно.

  3. Нет живого процесса покупки. Механизм лицензирования реален и протестирован; превращение его в реальную продажу требует витрины (Ko-fi, Gumroad или аналогичной), которой пока нет — это шаг создания аккаунта, выходящий за рамки автономии этого проекта без разрешения.

  4. Обеспечение лицензии основано на честности, а не на защите от взлома — по замыслу и по природе поставки читаемого Python — см. раздел «Получить Pro» выше и docstring в license.py.

  5. Нет истории с аутентификацией/мультитенантностью. Один локальный SQLite-файл, один пользователь. Нормально для текущей модели «работает на вашей машине»; потребуется реальная проектная работа, чтобы стать хостируемым/командным продуктом.

  6. Ноль внешнего подтверждения. Никто за пределами этого проекта не устанавливал и не использовал это. Каждое утверждение выше — «это работает, как создано и протестировано», а не «люди этого хотят».

Лицензия

MIT — см. LICENSE. (Механизм лицензионных ключей Pro-уровня отделён от собственной MIT-лицензии кода — см. «Получить Pro» выше.)

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Free: turn your AI chats into spaced-repetition vocabulary. 13 tools, reads and writes.

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

  • Shared long-term memory vault for AI agents with 20 MCP tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/happymario123/srs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server