A side-by-side look at the Anki and Anki MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Anki for education work as a local process; choose Anki MCP for education as a local process. You can also run both side by side in one mcpServers block.
get_study_overview, get_due_cards, answer_cards.manage_flashcards, study_session, manage_decks.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Education | Education |
| Quality signal | 56/100 · Good | 59/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 42 | 11 |
| Directory activity | 0 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 29 | 25 |
| Full listing | View Anki | View Anki MCP |
get_study_overviewToday's new/learning/review counts per deck, cards reviewed today, streak, 7/30-day totals.get_due_cardsnum` cards to study (optionally from one `deckName`), with the interval each button would give.answer_cardsRecord answers (`cardId`, `ease` 1-4) and get each card's new interval. *(Previously `update_cards`.)*find_leechesWeakest cards (leech tag / many lapses), ranked by lapses and ease.get_card_historyFull review log of up to 20 cards.get_retention_statsTrue retention (young/mature), reviews per day and time spent for a deck over N days.undoUndo the last action in Anki.find_cardsPaginated search (`query`, `limit`, `offset`); pick the sections to return with `include`: `question`, `answer`, `fields`, `stats`.suspend_cardsDeactivate/reactivate cards, e.g. all cards with tag X in deck Y. Scheduling is preserved. Pass a `label` when suspending (notes get the tag `paused::<label>`) and `unsuspend_cards { label }` later resumes exactly that group, leaving cards suspended for other reasons alone.move_cardsMove cards to `targetDeck` (created if missing).reschedule_cardsset_due_date` (`days`: `0`, `1!`, `3-7`), `forget` (reset to new) or `relearn`.add_cardCreate one note.manage_flashcardsCreate, update, delete, search, inspect, and tag Anki flashcards through one high-level note/card workflow. Use this for note lifecycle work and card lookup, not for deck structure, note-type schema changes, or study scheduling. Mutating operations change the local Anki collection immediately; searches are read-only. Choose `operation` first, then provide the operation-specific IDs, query, fields, tags, or pagination inputs described by the schema.study_sessionFind due cards and apply review-state actions such as answering, suspending, unsuspending, resetting, and relearning cards. Use this for scheduling and review flow, not for editing note content or reorganizing decks. Several operations mutate card state in Anki immediately; `find_due` and `check_status` are read-only. Select `operation`, then pass either `query`, `cardIds`, or `answers` as required for that action.manage_decksCreate, delete, list, inspect, move cards between, and configure Anki decks. Use this for deck-level organization, not for editing flashcard fields, note types, or study answers. Create, delete, move, and config operations mutate the collection; list and stats/config reads do not. Set `operation` first and supply the matching deck names, card IDs, target deck, or config ID.get_analyticsRead study analytics and review history for decks, the collection, or specific cards. Use this when the agent needs reporting or diagnostics, not when it needs to mutate Anki data. This tool is read-only but some scopes can return large payloads, so prefer the narrowest scope and explicit card IDs or timestamps when available. Choose `scope`, then provide the deck, cards, or review start timestamp required by that scope.manage_modelsList, create, and modify Anki note types, including fields, templates, and CSS styling. Use this for schema/template work, not for individual note content, decks, or review scheduling. All operations except `list` mutate the collection and can affect future rendering or compatibility of notes using that model. Pick `operation` first, then provide the model name plus the exact field, template, CSS, or creation inputs needed.anki_operationsRun general Anki utility operations: sync, version lookup, package import/export, profile listing, and media storage or retrieval. Use this for cross-cutting maintenance tasks that do not belong to flashcard, deck, model, or study workflows. Import, export, sync, and media writes have external side effects; version and profile reads do not. Select `operation`, then provide the relevant deck name, file path, filename, media payload, URL, or pattern.get_media_fileRetrieve one named Anki media file as base64 data and, for images, as MCP image content that compatible clients can inspect. Use this when an agent needs the actual contents of a referenced media asset, not when it only needs media names or storage operations; those belong in `anki_operations`. This tool is read-only and rejects path traversal. Pass a simple filename exactly as stored in Anki media.gui_add_cardsgui_answer_cardgui_browsegui_check_databasegui_current_cardPaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"anki": {
"command": "npx",
"args": [
"-y",
"github:nietus/anki-mcp"
]
}
}
}
{
"mcpServers": {
"anki-mcp": {
"command": "npx",
"args": [
"-y",
"@arielbk/anki-mcp"
]
}
}
}