Skip to main content
Glama

srs-mcp

Agent-unabhängiger MCP-Server für Spaced-Repetition-Lernenkeine Anki-GUI, kein Xvfb, kein AnkiConnect. Bringen Sie Ihren eigenen Agenten mit; dieser bringt die Kartenbox + den Scheduler.

Es kapselt FSRS (den Free Spaced Repetition Scheduler, denselben Algorithmus, den modernes Anki verwendet) um einen winzigen SQLite-Speicher, sodass ein Agent Karten erstellen, sehen, was fällig ist, und Erinnerungen aufzeichnen kann – vollständig headless.

Warum nicht headless Anki?

Das Anki-Desktop-Programm headless zu betreiben bedeutet Qt + einen virtuellen Framebuffer (Xvfb) + das AnkiConnect-Add-on – fragil und versionsgekoppelt. Das anki-PyPI-Paket kann eine echte .anki2-Sammlung ohne GUI steuern, wenn Sie Interop mit dem Anki Ihres Telefons benötigen. Aber wenn Sie nur Spaced Repetition hinter einer API wollen, brauchen Sie Anki überhaupt nicht: FSRS ist eine Bibliothek, und dieser Server ist ~200 Zeilen darum herum.

Related MCP server: anki-mcp

Werkzeuge

  • add_card(front, back) -> {card_id, due} – Karte erstellen und planen. Halten Sie back kurz – ein Wort oder eine Phrase; eine Karte, die Sie nicht in Sekunden bewerten können, ist eine Notiz, keine Lernkarte.

  • due_cards(q=None, limit=20) -> [{card_id, front, back, deck, due}] – was jetzt fällig ist, optional eingegrenzt auf ein Thema (q="horace")

  • grade_card(card_id, rating) -> {card_id, rating, next_due, reps} – Erinnerung aufzeichnen (again/hard/good/easy oder 1–4)

  • edit_card(card_id, front=None, back=None) – Inhalt direkt bearbeiten; Zeitplan bleibt erhalten (Tippfehler korrigieren / lange Antwort kürzen, statt zu duplizieren)

  • suspend_card(card_id) / unsuspend_card(card_id) – Karte zurückstellen (mit Verlauf behalten, aus der Fälligkeits-Warteschlange entfernen) / wiederherstellen

  • list_cards(q=None, limit=50) – Übersicht unabhängig vom Fälligkeitsdatum

  • delete_card(card_id) – eine entfernen (Zurücksetzen / Aufräumen)

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

Karten finden: Suche statt Decks

Karten werden durch Suche in ihrem Text gefunden – due_cards(q="horace") – statt sie vorab in Decks einzuordnen. Nichts schreibt das deck-Feld mehr; setzen Sie das Thema in die Karte selbst („Horace, Odes 1.11: …“) und sie bleibt auffindbar.

Decks waren ein einwertiges, freitextliches, exakt übereinstimmendes Label ohne zugehörige Planung pro Deck, also brachten sie nichts, was eine Suche nicht auch bringt, und kosteten Genauigkeit: In dem Deck, an dem dies gemessen wurde, hatten Agenten zehn Namen für Horace über fünf Trennzeichen-Konventionen erfunden, sodass das bestmögliche deck="Horace" 20 von 97 Horace-Karten zurückgab, während q="horac" 89 zurückgibt – einschließlich solcher, die unter Talks falsch abgelegt wurden. Die Spalte und der deck=-Filter auf due_cards/list_cards/stats bleiben für Karten, die von älteren Versionen beschriftet wurden. Siehe plans/002-decks.md.

Der Wiederholungszyklus: due_cards → den Benutzer mit front abfragen → gegen back prüfen → grade_card. FSRS berechnet das nächste Fälligkeitsdatum aus der Bewertung.

Ausführen

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

Speicherung

Zwei Backends, beim Start gewählt:

  • Postgres (gemeinsames Deck) – setzen Sie SRS_DATABASE_URL (oder DATABASE_URL) auf eine Postgres-Verbindungszeichenfolge (z. B. eine Neon-DB). Jede Bereitstellung, die auf dieselbe URL zeigt, liest/schreibt ein gemeinsames Deck, sodass Sie Karten von überall hinzufügen und überprüfen können (lokal, Railway usw.). FSRS-Karten-IDs sind groß, daher ist die Spalte cards.card_id auf Postgres BIGINT. Erfordert die Abhängigkeit psycopg (bereits deklariert).

  • SQLite (Fallback) – wenn keine *DATABASE_URL gesetzt ist, liegen Karten in einer SQLite-Datei unter SRS_DB (Standard ./srs.db). Einzelhost / offline. In einem SQLite-auf-Railway-Setup mounten Sie ein Volume unter /data und behalten SRS_DB=/data/srs.db bei, damit die Box Neubereitstellungen übersteht.

Das Schema ist identisch (Tabelle cards) und wird bei der ersten Verwendung automatisch erstellt.

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