Skip to main content
Glama

srs-mcp

Servidor MCP agnóstico de agente para aprendizaje con repetición espaciadasin GUI de Anki, sin Xvfb, sin AnkiConnect. Trae tu propio agente; esto trae la caja de tarjetas + el programador.

Envuelve FSRS (el Programador de Repetición Espaciada Libre, el mismo algoritmo que usa el Anki moderno) alrededor de un pequeño almacén SQLite, para que un agente pueda crear tarjetas, ver lo que está pendiente y registrar el recuerdo — completamente sin interfaz gráfica.

¿Por qué no Anki sin interfaz?

Manejar la aplicación de escritorio de Anki sin interfaz significa Qt + un framebuffer virtual (Xvfb) + el complemento AnkiConnect — frágil y acoplado a versiones. El paquete PyPI anki puede manejar una colección real .anki2 sin GUI si necesitas interoperar con el Anki de tu teléfono. Pero si solo quieres repetición espaciada detrás de una API, no necesitas Anki en absoluto: FSRS es una biblioteca, y este servidor son ~200 líneas alrededor de ella.

Related MCP server: anki-mcp

Herramientas

  • add_card(front, back) -> {card_id, due} — crea y programa una tarjeta. Mantén back corto — una palabra o frase; una tarjeta que no puedas calificar en segundos es una nota, no una tarjeta de memoria

  • due_cards(q=None, limit=20) -> [{card_id, front, back, deck, due}] — lo que está pendiente ahora, opcionalmente limitado a un tema (q="horace")

  • grade_card(card_id, rating) -> {card_id, rating, next_due, reps} — registra el recuerdo (again/hard/good/easy, o 1-4)

  • edit_card(card_id, front=None, back=None) — edita el contenido en su lugar; el programa se conserva (corrige errores tipográficos / acorta una respuesta larga en lugar de duplicar)

  • suspend_card(card_id) / unsuspend_card(card_id) — archiva una tarjeta (se conserva con su historial, se elimina de la cola de pendientes) / la restaura

  • list_cards(q=None, limit=50) — vista general independientemente de la fecha de vencimiento

  • delete_card(card_id) — elimina una (reinicio / limpieza)

  • stats(deck=None) -> {total, due_now, suspended, reviews, decks}

Encontrar tarjetas: búsqueda, no mazos

Las tarjetas se encuentran buscando su textodue_cards(q="horace") — en lugar de archivarlas en mazos de antemano. Nada escribe el campo deck ya; pon el tema en la propia tarjeta ("Horace, Odes 1.11: …") y seguirá siendo localizable.

Los mazos eran una etiqueta de un solo valor, texto libre, coincidencia exacta, sin programación por mazo adjunta, así que no compraban nada que una búsqueda no haga, y costaban precisión: en el mazo donde se midió esto, los agentes habían inventado diez nombres para Horace en cinco convenciones de separador, así que el mejor deck="Horace" posible devolvía 20 de 97 tarjetas de Horace mientras que q="horac" devuelve 89 — incluidas las mal archivadas bajo Talks. La columna y el filtro deck= en due_cards/list_cards/stats permanecen para tarjetas etiquetadas por versiones anteriores. Ver plans/002-decks.md.

El bucle de repaso: due_cards → pregunta al usuario con front → comprueba contra backgrade_card. FSRS calcula la próxima fecha de vencimiento a partir de la calificación.

Ejecutar

uv sync
# HTTP (default; for Railway / remote agents)
PORT=8000 uv run srs-mcp
# or stdio (local agent)
MCP_TRANSPORT=stdio uv run srs-mcp

Almacenamiento

Dos backends, elegidos al inicio:

  • Postgres (mazo compartido) — establece SRS_DATABASE_URL (o DATABASE_URL) a una cadena de conexión de Postgres (por ejemplo, una base de datos Neon). Cada despliegue que apunte a la misma URL lee/escribe un mazo compartido, así que puedes añadir y repasar tarjetas desde cualquier lugar (local, Railway, etc.). Los ids de tarjetas de FSRS son grandes, así que la columna cards.card_id es BIGINT en Postgres. Requiere la dependencia psycopg (ya declarada).

  • SQLite (respaldo) — cuando no se establece ningún *DATABASE_URL, las tarjetas viven en un archivo SQLite en SRS_DB (por defecto ./srs.db). Un solo host / sin conexión. En una configuración SQLite-en-Railway, monta un volumen en /data y mantén SRS_DB=/data/srs.db para que la caja sobreviva a los redespliegues.

El esquema es idéntico (tabla cards) y se crea automáticamente en el primer uso.

A
license - permissive license
A
quality
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 Servers

View all related MCP servers

Related MCP Connectors

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/klutometis/srs-mcp'

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