Memora

Flashcards interativos, quizzes e cartões cloze com repetição espaçada FSRS, renderizados inline no Claude Desktop como um MCP App.

Documentação

Memora MCP

License: MIT MCP Apps TypeScript React

Transforme qualquer conversa em uma sessão de estudo interativa, direto no Claude Desktop. Peça ao Claude para criar um baralho e ele gera os cartões, depois os renderiza como uma revisão inline que você pode percorrer: vire flashcards, responda quizzes de múltipla escolha e preencha lacunas cloze. Cada resposta atualiza um cronograma de repetição espaçada, e seus resultados voltam para o Claude para que ele possa treinar o que você errou.

Palavras-chave: Model Context Protocol, servidor MCP, MCP Apps, Claude Desktop, flashcards, quizzes, repetição espaçada, SRS, FSRS, alternativa ao Anki.

Construído com a extensão MCP Apps (SEP-1865): especificação MCP core 2025-11-25 mais a extensão Apps 2026-01-26.

Three ways to study, rendered inline in Claude

Recursos

Três formas de estudar, todas renderizadas inline e avaliadas da mesma forma:

  • Flashcards: clique para virar e depois avalie com Entendi / Não entendi.
  • Quizzes de múltipla escolha: escolha uma opção e as respostas correta/errada aparecem na hora.
  • Cloze (preencher lacunas): a lacuna é revelada no lugar para que a frase permaneça intacta. Escreva uma lacuna como [...] na frente de um cartão e ele se torna um cartão cloze automaticamente.

Repetição espaçada: cada avaliação atualiza o cronograma FSRS de cada cartão (via ts-fsrs), então cartões fracos reaparecem mais cedo e os vencidos vêm primeiro. Pergunte "o que está vencido hoje?" para um resumo de todos os seus baralhos.

Organize com categorias: nomeie baralhos com :: para aninhá-los (ex.: LLM::Attention). Navegue pela árvore de categorias, ou pela mesma árvore como um mapa mental interativo, e estude um ramo inteiro em uma única sessão mesclada. Baralhos de quiz são marcados com um selo.

Gerencie seus baralhos: crie, adicione, edite, renomeie e exclua baralhos e cartões sem sair do chat. Passe reverse ao criar um baralho para também treinar cada cartão de trás para frente (útil para vocabulário).

Apenas JSON: os baralhos ficam em data/decks.json, lidos ao vivo a cada chamada. Edite-os manualmente ou deixe o Claude construí-los. Sem banco de dados, sem serviço externo.

Browse decks as a category tree or a mind map

As ferramentas

Apenas review_deck e study abrem a interface inline de virar cartões; todo o resto retorna um resumo em texto, então editar ou criar no chat não abre mais o widget.

FerramentaO que faz
review_deckAbre um baralho para revisão (cartões vencidos primeiro, limitados por sessão).
studyRevisa uma subárvore inteira de categorias, mesclada em uma única sessão (limitada por sessão).
create_deckGera flashcards ou cartões cloze; reverse também adiciona cartões de trás para frente.
create_quizGera perguntas de múltipla escolha.
grade_cardRegistra um resultado de revisão e atualiza o cronograma FSRS do cartão (chamado pela interface).
due_todayResume o que está vencido em todos os baralhos e sinaliza cartões com dificuldade (3+ lapsos).
edit_cardAltera a frente e/ou o verso de um cartão.
refine_cardPropõe dividir um cartão em partes atômicas, ou reescrevê-lo para testar compreensão.
apply_refinementPersiste um refinamento após o usuário aprovar os cartões propostos.
captureTransforma algo que acabou de te atrapalhar (um bug, uma questão errada) em cartões de rascunho.
apply_capturePersiste cartões capturados após o usuário aprová-los.
rename_deckRenomeia um baralho (também o move na árvore de categorias).
delete_cardRemove um único cartão.
delete_deckRemove um baralho inteiro.

A geração de cartões segue as regras de qualidade da Memora (cartões atômicos de conceito único, respostas de 1 a 5 palavras, recordação ativa, sem ambiguidade, sem vazamento de resposta, aplicação em vez de definição), baseadas nas 20 Regras para Formular Conhecimento de Wozniak. Novos cartões são verificados na escrita e sinalizados (nunca bloqueados) para que o Claude possa revisá-los.

Como funciona (MCP Apps)

Uma ferramenta declara um recurso ui://. Quando o Claude chama a ferramenta, o host (Claude Desktop) busca esse recurso, renderiza seu HTML em um iframe com sandbox, passa o resultado da ferramenta para a interface, e a interface fala de volta com o host via JSON-RPC (para avaliar cartões e reportar progresso ao modelo).

The MCP Apps round trip

Início rápido

Pré-requisitos

  • Node.js 20.11+

Conectar ao Claude Desktop

Abra Configurações > Desenvolvedor > Editar Config e adicione a Memora em mcpServers:

{
  "mcpServers": {
    "memora": {
      "command": "npx",
      "args": ["-y", "@servation/memora-mcp", "--stdio"]
    }
  }
}

Depois, saia completamente do Claude Desktop (pela bandeja do sistema) e reabra. memora aparece em Configurações > Desenvolvedor, pré-carregado com alguns baralhos de exemplo.

Seus baralhos ficam armazenados em ~/.memora/decks.json (substitua o caminho com a variável de ambiente MEMORA_DECKS). Edite esse arquivo manualmente ou deixe o Claude gerenciá-lo.

Executar a partir do código-fonte
git clone https://github.com/Servation/memora-mcp.git
cd memora-mcp
npm install
npm run build

Aponte a configuração para a entrada compilada com um caminho absoluto (os baralhos então ficam na pasta data/decks.json do repositório):

{
  "mcpServers": {
    "memora": {
      "command": "node",
      "args": ["C:\\path\\to\\memora-mcp\\dist\\main.js", "--stdio"]
    }
  }
}

Experimente (em um chat do Claude Desktop)

  • review my World Capitals deck
  • make me a deck of 10 Spanish travel phrases
  • make a reversible deck of 10 Spanish words (treina nas duas direções)
  • make a fill-in-the-blank deck about the water cycle (cartões cloze)
  • 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?

Pilha tecnológica

  • Servidor: TypeScript, @modelcontextprotocol/sdk mais @modelcontextprotocol/ext-apps, transporte stdio (Streamable HTTP também disponível).
  • Interface: React com Vite, empacotado em um único arquivo HTML inline via vite-plugin-singlefile.
  • Agendamento: ts-fsrs (FSRS).
  • O runtime é node puro após a compilação (sem necessidade de bun ou tsx).

Formato do baralho

{
  "Deck Name": [
    { "front": "Capital of France?", "back": "Paris" }
  ]
}
  • Armazenado em ~/.memora/decks.json quando instalado (ou data/decks.json a partir do código-fonte); substitua com MEMORA_DECKS.
  • Lido ao vivo (com cache por mtime). create_deck, create_quiz e grade_card gravam aqui atomicamente.
  • Um cartão de quiz adiciona "options": ["...", "..."]; seu back é a opção correta.
  • Um cartão cloze escreve a lacuna como [...] na frente, com o termo oculto como back.
  • Os cartões ganham uma data due e um bloco FSRS srs conforme você os revisa; cartões sem eles são tratados como novos.
  • Mantenha JSON válido, ou o servidor volta para um baralho padrão embutido.

Estrutura do projeto

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

Desenvolvimento

npm run dev        # vite watch (UI) plus tsx server on http://localhost:3001/mcp
npm run typecheck  # tsc --noEmit

Para iteração local rápida, você também pode executar o aplicativo contra o host de referência MCP Apps (basic-host) do repositório ext-apps.

Roadmap

Veja TODO.md para o backlog: publicação no npm e no MCP Registry, hospedagem entre clientes (Streamable HTTP), testes de parsing e agendamento, e um GIF real de demonstração de captura de tela.

Licença

MIT