srs-mcp
srs-mcp
Агент-независимый MCP-сервер для интервального повторения — без GUI Anki, без Xvfb, без AnkiConnect. Берите своего агента; этот сервер даёт карточки + планировщик.
Он оборачивает FSRS (Free Spaced Repetition Scheduler, тот же алгоритм, что использует современный Anki) вокруг крошечного хранилища SQLite, так что агент может создавать карточки, видеть, что подлежит повторению, и записывать результаты — полностью без головы.
Почему не headless Anki?
Управлять десктопным приложением Anki без головы означает Qt + виртуальный
фреймбуфер (Xvfb) + аддон AnkiConnect — хрупко и привязано к версиям.
Пакет anki из PyPI может управлять настоящей коллекцией .anki2 без GUI,
если нужна совместимость с Anki на телефоне. Но если вам просто нужны
интервальные повторения за API, Anki вообще не нужен: FSRS — это библиотека,
а этот сервер — около 200 строк вокруг неё.
Related MCP server: anki-mcp
Инструменты
add_card(front, back) -> {card_id, due}— создать и запланировать карточку. Держитеbackкоротким — слово или фраза; карточка, которую нельзя оценить за секунды, — это заметка, а не флеш-карточкаdue_cards(q=None, limit=20) -> [{card_id, front, back, deck, due}]— что подлежит повторению сейчас, опционально суженное по теме (q="horace")grade_card(card_id, rating) -> {card_id, rating, next_due, reps}— записать результат (again/hard/good/easyили 1-4)edit_card(card_id, front=None, back=None)— изменить содержимое на месте; расписание сохраняется (исправьте опечатки / сократите длинный ответ вместо дублирования)suspend_card(card_id)/unsuspend_card(card_id)— отложить карточку (сохраняется с её историей, убирается из очереди повторений) / восстановить еёlist_cards(q=None, limit=50)— обзор независимо от даты повторенияdelete_card(card_id)— удалить одну (сброс / очистка)stats(deck=None) -> {total, due_now, suspended, reviews, decks}
Поиск карточек: поиск, а не колоды
Карточки находятся поиском по их тексту — due_cards(q="horace") — а не
раскладыванием по колодам заранее. Поле deck больше ничем не заполняется;
помещайте тему в саму карточку («Horace, Odes 1.11: …») — и она останется
находимой.
Колоды были однозначным, свободно-текстовым, точным совпадением без
привязки к расписанию, так что они не давали ничего, чего не даёт поиск,
и стоили точности: на колоде, на которой это измерялось, агенты придумали
десять имён для Горация в пяти соглашениях о разделителях, так что
лучший возможный deck="Horace" возвращал 20 из 97 карточек Горация, тогда
как q="horac" возвращает 89 — включая те, что ошибочно лежат в Talks.
Колонка и фильтр deck= в due_cards/list_cards/stats остаются для
карточек, помеченных старыми версиями. См. plans/002-decks.md.
Цикл повторения: due_cards → опросите пользователя с front → сверьте с
back → grade_card. FSRS вычисляет следующую дату повторения по оценке.
Запуск
uv sync
# HTTP (default; for Railway / remote agents)
PORT=8000 uv run srs-mcp
# or stdio (local agent)
MCP_TRANSPORT=stdio uv run srs-mcpХранилище
Два бэкенда, выбираются при запуске:
Postgres (общая колода) — установите
SRS_DATABASE_URL(илиDATABASE_URL) в строку подключения Postgres (например, Neon DB). Каждое развёртывание, указывающее на тот же URL, читает/пишет одну общую колоду, так что можно добавлять и повторять карточки откуда угодно (локально, Railway и т.д.). ID карточек FSRS большие, поэтому колонкаcards.card_id—BIGINTв Postgres. Требуется зависимостьpsycopg(уже объявлена).SQLite (запасной) — если
*DATABASE_URLне задан, карточки живут в файле SQLite по путиSRS_DB(по умолчанию./srs.db). Один хост / офлайн. В настройке SQLite-on-Railway смонтируйте том в/dataи держитеSRS_DB=/data/srs.db, чтобы колода пережила передеплои.
Схема идентична (таблица cards) и создаётся автоматически при первом
использовании.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables AI assistants to manage Anki flashcard decks and cards through natural language, supporting deck creation, card additions (basic and cloze types), and review queue management.682MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to interact with Anki flashcard collections, including deck management, note search, viewing contents, and editing fields.16MIT
- AlicenseNot gradedqualityCmaintenanceA lightweight MCP server that adds spaced-repetition flashcards (SM-2) to AI assistants, storing data locally in SQLite and enabling card creation, review, and scheduling.MIT
- AlicenseNot gradedqualityCmaintenanceProvides a privacy-first adaptive review engine with local SQLite storage, enabling item creation, due review retrieval, grading, and statistics via MCP tools.MIT
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Voice-led, FSRS-scheduled flashcards from YouTube, PDFs, web, or text. Auto-graded quizzes.
Persistent memory for AI agents. Search, store, and recall across sessions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/klutometis/srs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server