Skip to main content
Glama

srs-mcp — repetición espaciada, como servidor MCP

Dale a cualquier agente compatible con MCP (Claude Code, Claude Desktop o cualquier otro host MCP) una memoria de repetición espaciada real y correctamente programada, en lugar de volver a derivar "qué vence hoy" de una tabla de markdown a mano cada sesión. Implementa SM-2 (el algoritmo detrás de Anki/SuperMemo) como cuatro herramientas invocables, respaldadas por un archivo SQLite local. Sin cuenta, sin llamadas de red, sin telemetría: todo se ejecuta en tu máquina.

Estado: prototipo, aún no publicado en ningún sitio. Construido y verificado localmente (ver "Cómo se ha verificado" más abajo); aún no instalado por nadie fuera de este proyecto. Trata la versión 0.2.0 como pre-lanzamiento.

Por qué existe esto

Las listas de verificación en Markdown y las tablas de vocabulario son formas comunes en que las personas (y los agentes que las ayudan) hacen seguimiento de qué repasar, pero nada calcula un horario real a partir de ellas: "vence hoy" termina siendo una suposición, releída a ojo cada vez. srs-mcp es la pieza que falta: un pequeño algoritmo de programación real expuesto como herramientas, para que un agente pueda hacer seguimiento del estado de repaso de cualquier cosa — tarjetas, preguntas de entrevista, vocabulario, cuestionarios de incorporación — sin reimplementar SM-2 en un prompt.

Las cuatro herramientas principales (gratis, ilimitadas, para siempre)

Tool

Qué hace

add_item(topic, question, answer)

Añade un elemento de repaso bajo un tema. Los nuevos elementos vencen de inmediato.

get_due_items(topic="", limit=10)

Lista los elementos que vencen hoy o están atrasados. La respuesta se oculta hasta que se califica, como en un repaso de tarjetas real.

grade_item(item_id, quality)

Califica el recuerdo de 0 a 5 (5 = perfecto, <3 = fallo/reinicio). Devuelve la próxima fecha de vencimiento mediante SM-2 y la respuesta correcta.

get_stats(topic="")

Totales, cantidad que vence hoy, factor de facilidad promedio.

Obtén Pro

Dos herramientas adicionales están restringidas detrás de una licencia Pro: esta es la división gratis/de pago que srs-mcp usa en lugar de suscripciones o un backend alojado:

Tool

Qué hace

export_items(topic="", format="json"|"csv")

Exportación/backup masivo de todos tus datos de repaso.

get_forecast(topic="", days=30)

Pronóstico de carga de repaso: cuántos elementos vencen en cada uno de los próximos N días, para que un acumulamiento sea visible antes de que ocurra.

Cómo funciona la licencia, concretamente: srs-mcp firma las claves de licencia con una clave privada Ed25519 que nunca sale de la máquina del mantenedor; este repositorio incluye solo la clave pública correspondiente (license.py), que puede verificar una firma pero no falsificarla. Compra una clave, configúrala como SRS_LICENSE_KEY (variable de entorno) o guárdala en ~/.srs-mcp/license.key, y las herramientas Pro se desbloquean: sin cuenta, sin verificación de conexión, funciona sin conexión. Consulta license.py para el mecanismo completo y sus limitaciones declaradas (versión corta: esto disuade la copia casual, no es DRM; nada impide que alguien parchee la verificación en su propia copia local de un archivo Python de código abierto; consulta el docstring del módulo para la versión honesta de esta compensación).

Aún no existe un enlace de compra en vivo. Esta sección describe el mecanismo, que está construido y probado (ver test_license_gate.py), no una tienda funcional. Cuando exista un flujo de compra, irá aquí.

Instalación

Requiere Python 3.11+.

git clone <repo-url>   # not yet public — see status note above
cd srs-mcp
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/srs-mcp       # runs the server on stdio

Para usarlo como plugin de Claude Code, apunta Claude Code a este directorio (o, una vez publicado, a su listado en el marketplace): .claude-plugin/plugin.json y .mcp.json ya están configurados; el servidor lee SRS_DB_PATH para que los datos de una instalación de plugin sobrevivan a las actualizaciones (${CLAUDE_PLUGIN_DATA}/srs.db bajo Claude Code, o un srs.db co-ubicado para una ejecución directa/manual).

Cómo se ha verificado

No solo "importa": realmente ejecutado, sobre el protocolo MCP real:

  • test_client.py lanza server.py como subproceso (de la misma manera que lo hace un host MCP real), ejecuta una sesión completa de añadir/listar/calificar/listar, y re-verifica de forma independiente las filas SQLite resultantes fuera del entorno de prueba.

  • test_license_gate.py lanza el servidor de tres maneras (sin licencia, licencia válida, licencia manipulada) y confirma que export_items / get_forecast se niegan en los casos 1 y 3 y devuelven datos reales en el caso 2, lo que demuestra que la verificación de licencia es una puerta real, no una operación nula.

  • ingest_chinese_vocab.py e ingest_leetcode.py son scripts de ingesta idempotentes y funcionales que siembran datos personales reales (114 elementos de vocabulario chino, 16 problemas de LeetCode completados) desde los rastreadores de markdown de este proyecto mediante llamadas MCP reales a add_item, no escrituras directas a SQLite.

Brecha honesta para "listo para lanzar" — sin redondear

  1. Sin repositorio público. Cada ruta de distribución real (el marketplace de plugins comunitarios de Claude Code, un release de GitHub, un listado en un directorio de MCP) necesita que esto sea accesible en una URL de git pública. Este proyecto es solo local. Crear eso (un repositorio de GitHub, posiblemente una cuenta) está fuera de la autonomía actual de este proyecto sin una autorización explícita: todo lo anterior está preparado para que sea una acción de copiar y empujar, no una tarea de construcción, una vez que se dé.

  2. No se puede auto-validar contra claude plugin validate. No hay CLI de claude ni Node/npx disponible en este entorno de desarrollo. El manifiesto del plugin es conforme al esquema en la medida en que una lectura cuidadosa de la documentación de Anthropic y la referencia cruzada con su propio marketplace.json de producción pueden confirmar, no validado por máquina.

  3. No hay flujo de compra en vivo. El mecanismo de licencia es real y probado; convertirlo en una venta real necesita una tienda (Ko-fi, Gumroad o similar) que aún no existe: eso es un paso de creación de cuenta, fuera de la autonomía de este proyecto sin una autorización.

  4. La aplicación de la licencia se basa en la honestidad, no es a prueba de manipulaciones, por diseño y por la naturaleza de distribuir Python legible: ver la sección "Obtén Pro" arriba y el docstring de license.py.

  5. Sin historia de autenticación/multi-tenant. Un solo archivo SQLite local, un solo usuario. Está bien para el modelo actual de "se ejecuta en tu máquina"; necesitaría un diseño real para convertirse en un producto alojado/para equipos.

  6. Cero validación externa. Nadie fuera de este proyecto ha instalado o usado esto. Cada afirmación anterior es "esto funciona tal como está construido y probado", no "la gente quiere esto".

Licencia

MIT — ver LICENSE. (El mecanismo de clave de licencia del nivel Pro es separado de la licencia MIT del propio código — ver "Obtén Pro" arriba.)

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Free: turn your AI chats into spaced-repetition vocabulary. 13 tools, reads and writes.

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

  • Shared long-term memory vault for AI agents with 20 MCP tools.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/happymario123/srs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server