flashcards-mcp
v1.0.0
Published
Spaced repetition flashcard MCP server with FSRS-5 algorithm, interactive UI, TTS, and image support
Maintainers
Readme
flashcards-mcp
A spaced repetition flashcard MCP server for Claude. Uses the FSRS-5 algorithm (successor to Anki's SM-2) with an interactive card UI, text-to-speech, and image support.
Install
npx (quickest)
npx flashcards-mcpAdd to ~/.claude/.mcp.json:
{
"mcpServers": {
"flashcards": {
"command": "npx",
"args": ["flashcards-mcp"]
}
}
}curl (auto-configures Claude)
curl -fsSL https://raw.githubusercontent.com/zcsabbagh/flashcards-mcp/main/install.sh | bashHomebrew
brew tap zcsabbagh/tap
brew install flashcards-mcpThen add to ~/.claude/.mcp.json:
{
"mcpServers": {
"flashcards": {
"command": "flashcards-mcp"
}
}
}Usage
After restarting Claude, try:
- "create a deck called Algorithms" — creates a new deck
- "add a card: What is Big O? / A notation for algorithm time complexity" — adds a card
- "get due cards" — opens the interactive flashcard UI
- "get due cards for deck 1" — filters to a specific deck
Keyboard shortcuts (in the flashcard UI)
| Key | Action | |-----|--------| | Space / Enter | Flip card | | 1-4 | Rate (Again, Hard, Good, Easy) | | Arrow Left/Right | Previous/Next card | | V | Toggle voiceover (requires ElevenLabs API key) |
Images
Cards support images on front and back faces:
"add a card with front_image from /path/to/image.png"
"set card 5 front image to https://example.com/photo.jpg"Text-to-Speech
Add your ElevenLabs API key to the MCP config:
{
"mcpServers": {
"flashcards": {
"command": "npx",
"args": ["flashcards-mcp"],
"env": {
"ELEVENLABS_API_KEY": "sk_..."
}
}
}
}Tools
| Tool | Description |
|------|-------------|
| create_deck | Create a new deck |
| list_decks | List all decks with stats |
| add_card | Add a single card (supports markdown, images) |
| bulk_add_cards | Add multiple cards at once |
| get_due_cards | Get due cards with interactive UI |
| review_card | Submit a rating (1-4) |
| search_cards | Search cards by keyword |
| get_deck_stats | Mastery distribution, retention rate |
| get_card_image | Lazy-load card images |
| set_card_image | Add/replace card images |
| tts | Text-to-speech via ElevenLabs |
| delete_card | Delete a card |
| delete_deck | Delete a deck and all its cards |
| get_review_history | Card scheduling history |
How it works
- FSRS-5 algorithm schedules reviews based on stability, difficulty, and elapsed time
- SQLite stores everything locally at
~/.claude/mcp-servers/flashcards/data/flashcards.db - MCP App UI renders an interactive flashcard widget directly in Claude's chat
- Images stored as base64 in the database, lazy-loaded one at a time
- Markdown supported in card content (code blocks, lists, headers, etc.)
License
MIT
