review_deck and study render the inline review; everything else answers as text, so creating, editing or renaming mid-conversation does not throw a card interface at you. The scheduling is per-card FSRS rather than a fixed interval, so the cards you keep missing come back sooner and due_today stays a summary you ask for rather than a nag. Storage is the other reason to weigh this against a dedicated app: decks are a JSON file you can open, hand-edit or commit — a front, a back, plus options for a quiz card and a [...] blank for cloze.
A study server for Claude Desktop built on the MCP Apps extension. Ask for a deck and the model generates the cards; the review then renders as an interactive widget inside the chat, and every grade updates that card's FSRS schedule. Decks are plain JSON on disk — no database, no external service.
- review_deck opens one deck as flip cards with due cards first; study merges every deck under a category node into a single shuffled session, each card still attributed to the deck it came from
- Deck names nest with :: — studying LLM reviews everything at or under that path, and omitting the path studies everything
- create_deck generates cards from the request or the conversation, and a front containing [...] becomes a cloze card automatically; create_quiz generates multiple-choice decks reviewed on the same schedule
- grade_card records a result and updates that card's FSRS schedule — it is what the flip-card UI calls rather than something the model drives
- due_today summarises what is due right now with per-deck and total due and new counts. It is pull-based: it appears when you ask for it and never on its own
- edit_card, rename_deck — which also moves the deck in the category tree — delete_card and delete_deck handle the rest, with guards on both ends: a deck's last card and the last remaining deck each refuse deletion
- Card generation follows a stated quality standard — atomic single-concept cards, 1-5 word answers, active recall, no answer leakage — and new cards are linted on write and flagged rather than blocked
Node.js 20.11 or newer, run as npx -y @servation/memora-mcp --stdio. It needs a client that renders MCP Apps UIs — it targets Claude Desktop, on core MCP 2025-11-25 plus the Apps extension 2026-01-26 — and a full quit and relaunch after the config is added. Decks live at ~/.memora/decks.json, overridable with MEMORA_DECKS, read live on every call and written atomically; keep the file valid JSON or the server falls back to a built-in default deck. MIT.
One command — npx -y @servation/memora-mcp --stdio
