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
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.
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.
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.
| Ferramenta | O que faz |
|---|---|
review_deck | Abre um baralho para revisão (cartões vencidos primeiro, limitados por sessão). |
study | Revisa uma subárvore inteira de categorias, mesclada em uma única sessão (limitada por sessão). |
create_deck | Gera flashcards ou cartões cloze; reverse também adiciona cartões de trás para frente. |
create_quiz | Gera perguntas de múltipla escolha. |
grade_card | Registra um resultado de revisão e atualiza o cronograma FSRS do cartão (chamado pela interface). |
due_today | Resume o que está vencido em todos os baralhos e sinaliza cartões com dificuldade (3+ lapsos). |
edit_card | Altera a frente e/ou o verso de um cartão. |
refine_card | Propõe dividir um cartão em partes atômicas, ou reescrevê-lo para testar compreensão. |
apply_refinement | Persiste um refinamento após o usuário aprovar os cartões propostos. |
capture | Transforma algo que acabou de te atrapalhar (um bug, uma questão errada) em cartões de rascunho. |
apply_capture | Persiste cartões capturados após o usuário aprová-los. |
rename_deck | Renomeia um baralho (também o move na árvore de categorias). |
delete_card | Remove um único cartão. |
delete_deck | Remove 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).
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 deckmake me a deck of 10 Spanish travel phrasesmake 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 systemturn what we just discussed into a deck called "Photosynthesis"study my LLM categorywhat's due today?
Pilha tecnológica
- Servidor: TypeScript,
@modelcontextprotocol/sdkmais@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 é
nodepuro 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.jsonquando instalado (oudata/decks.jsona partir do código-fonte); substitua comMEMORA_DECKS. - Lido ao vivo (com cache por mtime).
create_deck,create_quizegrade_cardgravam aqui atomicamente. - Um cartão de quiz adiciona
"options": ["...", "..."]; seubacké a opção correta. - Um cartão cloze escreve a lacuna como
[...]na frente, com o termo oculto comoback. - Os cartões ganham uma data
duee um bloco FSRSsrsconforme 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.