Memora

Tarjetas interactivas, cuestionarios y tarjetas cloze con repetición espaciada FSRS, renderizadas en línea en Claude Desktop como una aplicación MCP.

Documentación

Memora MCP

License: MIT MCP Apps TypeScript React

Convierte cualquier conversación en una sesión de estudio interactiva, directamente en Claude Desktop. Pídele a Claude que cree un mazo y generará las tarjetas, luego las mostrará como una revisión integrada que puedes recorrer: voltea tarjetas didácticas, responde cuestionarios de opción múltiple y completa los espacios en blanco de cloze. Cada respuesta actualiza un programa de repetición espaciada, y tus resultados regresan a Claude para que pueda reforzar lo que fallaste.

Palabras clave: Model Context Protocol, servidor MCP, aplicaciones MCP, Claude Desktop, tarjetas didácticas, cuestionarios, repetición espaciada, SRS, FSRS, alternativa a Anki.

Construido sobre la extensión MCP Apps (SEP-1865): especificación MCP principal 2025-11-25 más la extensión Apps 2026-01-26.

Three ways to study, rendered inline in Claude

Características

Tres formas de estudiar, todas renderizadas en línea y calificadas de la misma manera:

  • Tarjetas didácticas: haz clic para voltear y luego califica Lo sabía / No lo sabía.
  • Cuestionarios de opción múltiple: elige una opción y las respuestas correctas/incorrectas se revelan al instante.
  • Cloze (completar espacios en blanco): el espacio se revela en su lugar para que la oración permanezca intacta. Escribe un espacio como [...] en el frente de una tarjeta y se convierte automáticamente en una tarjeta cloze.

Repetición espaciada: cada calificación actualiza el programa FSRS de cada tarjeta (mediante ts-fsrs), de modo que las tarjetas débiles reaparezcan antes y las pendientes aparezcan primero. Pregunta "¿qué hay pendiente hoy?" para obtener un resumen de todos tus mazos.

Organiza con categorías: nombra los mazos con :: para anidarlos (por ejemplo, LLM::Attention). Explora el árbol de categorías, o el mismo árbol como un mapa mental interactivo, y estudia toda una rama en una sola sesión combinada. Los mazos de cuestionarios se marcan con una insignia.

Administra tus mazos: crea, agrega, edita, renombra y elimina mazos y tarjetas sin salir del chat. Pasa reverse al crear un mazo para también practicar cada tarjeta en ambas direcciones (útil para vocabulario).

Solo JSON: los mazos viven en data/decks.json, se leen en vivo en cada llamada. Edítalos manualmente o deja que Claude los construya. Sin base de datos, sin servicio externo.

Browse decks as a category tree or a mind map

Las herramientas

Solo review_deck y study abren la interfaz de tarjetas volteables en línea; todo lo demás devuelve un resumen de texto, por lo que editar o crear en el chat ya no abre el widget.

HerramientaQué hace
review_deckAbre un mazo para revisión (tarjetas pendientes primero, con límite por sesión).
studyRevisa un subárbol de categoría completo, combinado en una sola sesión (con límite por sesión).
create_deckGenera tarjetas didácticas o tarjetas cloze; reverse también agrega tarjetas en ambas direcciones.
create_quizGenera preguntas de opción múltiple.
grade_cardRegistra un resultado de revisión y actualiza el programa FSRS de la tarjeta (lo llama la interfaz).
due_todayResume lo que está pendiente en todos los mazos y marca las tarjetas con dificultades (3+ fallos).
edit_cardCambia el frente y/o el reverso de una tarjeta.
refine_cardPropone dividir una tarjeta en piezas atómicas, o reescribirla para evaluar comprensión.
apply_refinementGuarda un refinamiento después de que el usuario apruebe las tarjetas propuestas.
captureConvierte algo que te causó problemas (un error, una pregunta fallida) en tarjetas borrador.
apply_captureGuarda las tarjetas capturadas después de que el usuario las apruebe.
rename_deckRenombra un mazo (también lo mueve en el árbol de categorías).
delete_cardElimina una sola tarjeta.
delete_deckElimina un mazo completo.

La generación de tarjetas sigue las reglas de calidad de Memora (tarjetas atómicas de un solo concepto, respuestas de 1 a 5 palabras, recuerdo activo, sin ambigüedad, sin fuga de respuestas, aplicación sobre definición), basadas en las 20 Reglas para Formular Conocimiento de Wozniak. Las tarjetas nuevas se revisan al escribirse y se marcan (nunca se bloquean) para que Claude pueda revisarlas.

Cómo funciona (MCP Apps)

Una herramienta declara un recurso ui://. Cuando Claude llama a la herramienta, el host (Claude Desktop) obtiene ese recurso, renderiza su HTML en un iframe aislado, pasa el resultado de la herramienta a la interfaz, y la interfaz se comunica con el host mediante JSON-RPC (para calificar tarjetas y reportar progreso al modelo).

The MCP Apps round trip

Inicio rápido

Requisitos previos

  • Node.js 20.11+

Conectar a Claude Desktop

Abre Configuración > Desarrollador > Editar configuración y agrega Memora bajo mcpServers:

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

Luego cierra Claude Desktop por completo (desde la bandeja del sistema) y vuelve a abrirlo. memora aparece en Configuración > Desarrollador, precargado con algunos mazos de ejemplo.

Tus mazos se almacenan en ~/.memora/decks.json (anula la ruta con la variable de entorno MEMORA_DECKS). Edita ese archivo manualmente o deja que Claude lo administre.

Ejecutar desde el código fuente en su lugar
git clone https://github.com/Servation/memora-mcp.git
cd memora-mcp
npm install
npm run build

Apunta la configuración a la entrada compilada con una ruta absoluta (los mazos entonces viven en data/decks.json del repositorio):

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

Pruébalo (en un chat de Claude Desktop)

  • review my World Capitals deck
  • make me a deck of 10 Spanish travel phrases
  • make a reversible deck of 10 Spanish words (practica en ambas direcciones)
  • make a fill-in-the-blank deck about the water cycle (tarjetas 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?

Pila tecnológica

  • Servidor: TypeScript, @modelcontextprotocol/sdk más @modelcontextprotocol/ext-apps, transporte stdio (HTTP Streamable también disponible).
  • Interfaz: React más Vite, empaquetado en un único archivo HTML en línea mediante vite-plugin-singlefile.
  • Programación: ts-fsrs (FSRS).
  • El tiempo de ejecución es node una vez compilado (no se necesitan bun ni tsx).

Formato del mazo

{
  "Deck Name": [
    { "front": "Capital of France?", "back": "Paris" }
  ]
}
  • Almacenado en ~/.memora/decks.json cuando se instala (o data/decks.json desde el código fuente); anula con MEMORA_DECKS.
  • Se lee en vivo (con caché por mtime). create_deck, create_quiz y grade_card escriben aquí de forma atómica.
  • Una tarjeta de cuestionario agrega "options": ["...", "..."]; su back es la opción correcta.
  • Una tarjeta cloze escribe el espacio como [...] en el frente, con el término oculto como back.
  • Las tarjetas ganan una fecha due y un bloque FSRS srs a medida que las revisas; las tarjetas sin ellos se tratan como nuevas.
  • Mantén el JSON válido, o el servidor recurre a un mazo predeterminado integrado.

Estructura del proyecto

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

Desarrollo

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

Para iteración local rápida también puedes ejecutar la aplicación contra el host de referencia de MCP Apps (basic-host) desde el repositorio ext-apps.

Hoja de ruta

Consulta TODO.md para el backlog: publicación en npm y MCP Registry, alojamiento entre clientes (HTTP Streamable), pruebas de análisis y programación, y un GIF real de demostración de captura de pantalla.

Licencia

MIT