Memora
About
Interactive flashcards, quizzes, and cloze cards with FSRS spaced repetition, rendered inline in Claude Desktop as an MCP App.
Details
- Author
- servation
- Categories
- Productivity, Other, AI, Knowledge Base
Jump to
Setup
Install Memora in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/servation/memora-mcp
Follow the installation instructions in the repository README, then restart your MCP client.
Turn any conversation into an interactive study session, right inside Claude Desktop. Ask Claude to make a deck and it generates the cards, then renders them as an inline review you can click through: flipflashcards, answermultiple-choice quizzes, and fill inclozeblanks. Every answer updates aspaced-repetitionschedule, and your results flow back to Claude so it can drill what you missed.
Keywords: Model Context Protocol, MCP server, MCP Apps, Claude Desktop, flashcards, quizzes, spaced repetition, SRS, FSRS, Anki alternative.
Built on theMCP Apps extension(SEP-1865): core MCP spec2025-11-25plus the Apps extension2026-01-26.
Three ways to study, all rendered inline and all graded the same way:
- Flashcards: click to flip, then gradeGot it/Missed it.
- Multiple-choice quizzes: pick an option and the correct/wrong answers reveal instantly.
- Cloze (fill-in-the-blank): the blank reveals in place so the sentence stays intact. Write a blank as[...]in a card front and it becomes a cloze card automatically.
Spaced repetition: every grade updates a per-cardFSRSschedule (viats-fsrs), so weak cards resurface sooner and due cards come first. Ask"what's due today?"for a summary across all your decks.
Organize with categories: name decks with::to nest them (e.g.LLM::Attention). Browse thecategory tree, or the same tree as an interactivemind map, andstudya whole branch in one merged session. Quiz decks are flagged with a badge.
Manage your decks: create, append to, edit, rename, and delete decks and cards without leaving the chat. Passreversewhen creating a deck to also drill each card back-to-front (handy for vocabulary).
Just JSON: decks live indata/decks.json, read live on every call. Hand-edit them or let Claude build them. No database, no external service.
Onlyreview_deckandstudyopen the inline flip-card UI; everything else returns a text summary, so editing or creating in chat no longer pops the widget.
Card generation follows Memora's quality rules (atomic single-concept cards, 1-5 word answers, active recall, unambiguous, no answer leakage, application over definition), based on Wozniak's20 Rules of Formulating Knowledge. New cards are linted on write and flagged (never blocked) so Claude can revise them.
A tool declares aui://resource. When Claude calls the tool, the host (Claude Desktop) fetches that resource, renders its HTML in asandboxed iframe, passes the tool result to the UI, and the UI talks back to the host over JSON-RPC (to grade cards and report progress to the model).
OpenSettings > Developer > Edit Configand add Memora undermcpServers:
{ "mcpServers": { "memora": { "command": "npx", "args": ["-y", "@servation/memora-mcp", "--stdio"] } } }
Then fully quit Claude Desktop (from the system tray) and relaunch.memoraappears under Settings > Developer, pre-loaded with a few sample decks.
Your decks are stored in~/.memora/decks.json(override the path with theMEMORA_DECKSenvironment variable). Hand-edit that file or let Claude manage it.
git clone https://github.com/Servation/memora-mcp.git cd memora-mcp npm install npm run build
Point the config at the built entry with an absolute path (decks then live in the repo'sdata/decks.json):
{ "mcpServers": { "memora": { "command": "node", "args": ["C:\\path\\to\\memora-mcp\\dist\\main.js", "--stdio"] } } }
- review my World Capitals deck
- make me a deck of 10 Spanish travel phrases
- make a reversible deck of 10 Spanish words(drills both directions)
- make a fill-in-the-blank deck about the water cycle(cloze cards)
- quiz me with 10 multiple-choice questions on the solar system
- turn what we just discussed into a deck called "Photosynthesis"
- study my LLM category
- what's due today?
- Server: TypeScript,@modelcontextprotocol/sdkplus@modelcontextprotocol/ext-apps, stdio transport (Streamable HTTP also available).
- UI: React plus Vite, bundled to a single inlined HTML file viavite-plugin-singlefile.
- Scheduling:ts-fsrs(FSRS).
- Runtime is plainnodeonce built (no bun or tsx needed).
{ "Deck Name": [ { "front": "Capital of France?", "back": "Paris" } ] }
- Stored in~/.memora/decks.jsonwhen installed (ordata/decks.jsonfrom source); override withMEMORA_DECKS.
- Read live (mtime-cached).create_deck,create_quiz, andgrade_cardwrite here atomically.
- Aquizcard adds"options": ["...", "..."]; itsbackis the correct option.
- Aclozecard writes the blank as[...]in the front, with the hidden term as theback.
- Cards gain aduedate and an FSRSsrsblock as you review them; cards without them are treated as new.
- Keep it valid JSON, or the server falls back to a built-in default deck.
memora-mcp/ ├── server.ts # MCP tools + the ui:// resource ├── decks.ts # data model, decks.json storage, result builder ├── scheduling.ts # FSRS scheduling + review ordering ├── main.ts # entry: stdio (Claude Desktop) or Streamable HTTP ├── mcp-app.html # UI entry HTML (bundled by Vite) ├── src/ │ ├── mcp-app.tsx # review orchestrator (flip / quiz / cloze, grade -> model) │ ├── deck-lib.tsx # tree, mind map, card list, quiz/cloze views, helpers │ ├── mcp-app.module.css │ └── global.css # host theme variable fallbacks (light/dark) ├── data/decks.json # editable decks, read live ├── media/ # README images ├── vite.config.ts # single-file bundle config └── tsconfig*.json
npm run dev # vite watch (UI) plus tsx server on http://localhost:3001/mcp npm run typecheck # tsc --noEmit
For fast local iteration you can also run the app against the MCP Apps reference host (basic-host) from theext-apps repo.
Manage Anki flashcards and decks via the AnkiConnect plugin.
Connect Claude with AnkiConnect to create and review flashcards using natural language.
Connects to Anki via AnkiConnect to retrieve leech-tagged flashcards for use in Claude Desktop.
Enables AI assistants to interact with Anki flashcard decks via the AnkiConnect plugin.
A MCP server that enables AI assistants to interact with Anki, the spaced repetition flashcard application.
Create spaced repetition flashcards in Rember to remember anything you learn in your chats
Manage Anki flashcards and decks using the Anki-Connect plugin.
A Model Context Protocol (MCP) server that provides seamless integration with Anki, enabling AI assistants to interact with your flashcard collection. Create, read, update, and manage Anki cards programmatically through a standardized interface.
Create Anki flashcards using natural language by connecting to the AnkiConnect add-on.
Interact with the Anki flashcard app via the AnkiConnect add-on. Supports audio generation and similarity search.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





