srs-mcp
srs-mcp
Agent-unabhängiger MCP-Server für Spaced-Repetition-Lernen – keine 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 Siebackkurz – 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/easyoder 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) / wiederherstellenlist_cards(q=None, limit=50)– Übersicht unabhängig vom Fälligkeitsdatumdelete_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-mcpSpeicherung
Zwei Backends, beim Start gewählt:
Postgres (gemeinsames Deck) – setzen Sie
SRS_DATABASE_URL(oderDATABASE_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 Spaltecards.card_idauf PostgresBIGINT. Erfordert die Abhängigkeitpsycopg(bereits deklariert).SQLite (Fallback) – wenn keine
*DATABASE_URLgesetzt ist, liegen Karten in einer SQLite-Datei unterSRS_DB(Standard./srs.db). Einzelhost / offline. In einem SQLite-auf-Railway-Setup mounten Sie ein Volume unter/dataund behaltenSRS_DB=/data/srs.dbbei, damit die Box Neubereitstellungen übersteht.
Das Schema ist identisch (Tabelle cards) und wird bei der ersten Verwendung automatisch erstellt.
Maintenance
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
- AlicenseBqualityCmaintenanceEnables AI assistants to manage Anki flashcard decks and cards through natural language, supporting deck creation, card additions (basic and cloze types), and review queue management.682MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to interact with Anki flashcard collections, including deck management, note search, viewing contents, and editing fields.16MIT
- AlicenseNot gradedqualityCmaintenanceA lightweight MCP server that adds spaced-repetition flashcards (SM-2) to AI assistants, storing data locally in SQLite and enabling card creation, review, and scheduling.MIT
- AlicenseNot gradedqualityCmaintenanceProvides a privacy-first adaptive review engine with local SQLite storage, enabling item creation, due review retrieval, grading, and statistics via MCP tools.MIT
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Voice-led, FSRS-scheduled flashcards from YouTube, PDFs, web, or text. Auto-graded quizzes.
Persistent memory for AI agents. Search, store, and recall across sessions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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