Anki MCP Server
MCP server for Anki flashcards: adaptive review, notes, media, and deck management via AnkiConnect.
486 stars1.7k downloads/wk
Reviews
Write oneNobody has reviewed Anki MCP Server yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Anki MCP Server tools (53, 12 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
addModelFieldAdd a new field to an existing Anki note type (model).
addNoteAdd a SINGLE note to Anki. To create multiple notes, use the addNotes batch tool instead of calling addNote repeatedly — AnkiConnect processes requests one at a time, so repeated (especially parallel) addNote calls are slower and unnecessary. Use modelNames to see available note types and modelFieldNames to see required fields. Returns the note ID on success. IMPORTANT: Only create notes that were
addNotesAdd multiple notes to Anki in a single batch — the preferred way to create more than one note (use this instead of repeated addNote calls). Up to 100 notes sharing the same deck and model. Duplicates are skipped individually; validation errors (empty required fields, bad tags) reject the batch. IMPORTANT: Only create notes that were explicitly requested by the user.
addTagsAdd tags to specified notes. Tags is a space-separated string (e.g., "tag1 tag2 tag3"). Use getTags first to discover existing tags and prevent duplication.
areSuspendedCheck whether cards are suspended, without changing anything. Card IDs (not note IDs) —
changeDeckMove cards to a different deck. Target deck will be created if it doesn't exist.
clearUnusedTagswrite actionRemove orphaned tags that are not used by any notes in the collection. CRITICAL: This is destructive and permanent - only run when the user explicitly asks to clean up tags.
collection_statsGet aggregated statistics across all decks in the collection including card counts, ease factor distribution, and interval distribution.
createDeckwrite actionCreate a new empty Anki deck. Use "::" for parent::child structure (max 2 levels, e.g., "Japanese::JLPT N5"). Will not overwrite existing decks.
createModelwrite actionCreate a new note type (model) in Anki with custom fields, card templates, and styling.
deckStatsGet comprehensive statistics for a single deck including card counts, ease and interval distributions. Pass a deck name (e.g., "Japanese::JLPT N5") and optional bucket boundaries.
deleteMediaFilewrite actionRemove a media file from Anki's collection.media folder. CRITICAL: This is destructive and permanent - only delete media the user explicitly confirmed for deletion.
deleteNoteswrite actionDelete notes by their IDs. This will permanently remove the notes and ALL associated cards.
findNotesSearch for notes using Anki query syntax. Returns an array of note IDs matching the query.
forgetCardsReset cards to the new queue, discarding their current scheduling (interval, due date, and ease factor).
getMediaFilesNamesList media files in Anki's collection.media folder, optionally filtered by a glob-style pattern.
getTagsGet all tags in the Anki collection. Use this to discover existing tags before creating notes to maintain consistency and prevent tag duplication (e.g., avoiding 'roman-empire' vs 'roman_empire' vs 'RomanEmpire').
get_cardsRetrieve cards from Anki with flexible filtering by deck and card state. IMPORTANT: Use sync tool FIRST before getting cards to ensure latest data. By default answers are NOT included (include_answer defaults to false) so they never enter context before the user has a chance to self-test — after getting cards, use present_card to show them one by one and reveal the answer only when the user is rea
get_due_cardsRetrieve cards that are due for review from Anki. IMPORTANT: Use sync tool FIRST before getting cards to ensure latest data. By default answers are NOT included (include_answer defaults to false) so they never enter context before the user has a chance to self-test — after getting cards, use present_card to show them one by one and reveal the answer only when the user is ready. Set include_answer=
guiAddCardsOpen Anki Add Cards dialog with preset note details (deck, model, fields, tags). Returns potential note ID.
guiBrowseOpen Anki Card Browser and search for cards using Anki query syntax. Returns array of card IDs found.
guiCurrentCardGet information about the current card displayed in review mode. Returns card details (question, answer, deck, model, etc.) or null if not in review.
guiDeckBrowserOpen Anki Deck Browser dialog showing all decks.
guiDeckOverviewOpen Anki Deck Overview dialog for a specific deck. Shows deck statistics and study options. Returns true if succeeded.
guiEditNoteOpen Anki note editor dialog for a specific note ID. Allows manual editing of note fields, tags, and cards in the GUI.
guiSelectCardSelect a specific card in an open Card Browser window. Returns true if browser is open and card was selected, false if browser is not open.
guiSelectedNotesGet the IDs of notes currently selected in the Card Browser. Returns array of note IDs (empty if no selection).
guiShowAnswerShow the answer side of the current card in review mode. Returns true if in review mode, false otherwise.
guiShowQuestionShow the question side of the current card in review mode. Returns true if in review mode, false otherwise.
guiUndoUndo the last action or card in Anki. Returns true if undo succeeded, false otherwise.
listDecksList all Anki decks, optionally with per-deck study-queue statistics.
modelFieldNamesGet the field names for a specific note type (model). Use this to know what fields are required when creating notes of this type.
modelNamesGet a list of all available note type (model) names in Anki. Use this to see what note types are available before creating notes.
modelStylingGet the CSS styling for a specific note type (model). This CSS is used when rendering cards of this type.
modelTemplatesGet the card templates (Front and Back HTML) for a specific note type (model).
notesInfoGet detailed information about specific notes including all fields, tags, model info, and CSS styling.
present_cardRetrieve a card's content for review. WORKFLOW: 1) Show question, 2) Wait for user answer, 3) Show answer with show_answer=true, 4) Evaluate and suggest rating (1-4), 5) Wait for user confirmation ("ok"/"next" = accept, or they provide different rating), 6) Only then use rate_card
rate_cardwrite actionSubmit a rating for a card to update Anki's spaced repetition scheduling. Before calling this, the card's answer must already have been revealed to the user via present_card with show_answer: true, and the user must have self-assessed their recall. Use this ONLY after the user confirms or modifies your suggested rating. Do not rate automatically without user input.
removeModelFieldwrite actionRemove a field from an existing Anki note type (model).
removeTagswrite actionRemove tags from specified notes. Tags is a space-separated string (e.g., "tag1 tag2 tag3").
renameModelFieldRename a field in an existing Anki note type (model).
replaceTagsRename a tag across specified notes (e.g., "RomanEmpire" -> "roman-empire"). Single tag only; spaces are not allowed in either value.
repositionModelFieldChange the position of a field within an Anki note type (model).
retrieveMediaFileDownload a media file from Anki's collection.media folder. Returns base64-encoded file content, or null if the file is not found.
review_statsGet review history analysis including temporal patterns, retention metrics, and study streak information.
setDueDateReschedule cards to become due in a given number of days, without recording a review.
storeMediaFilewrite actionUpload a media file to Anki's collection.media folder. Supports base64 data, absolute file paths, or URLs. Perfect for workflows like ElevenLabs TTS -> Anki audio flashcards.
suspendSuspend cards so they're skipped during review until unsuspended. Card IDs (not note IDs) —
syncSynchronize local Anki collection with AnkiWeb. IMPORTANT: Always sync at the START of a review session (before getting cards) and at the END when user indicates they are done. This ensures data consistency across devices.
unsuspendUnsuspend cards so they return to normal review. Card IDs (not note IDs) — use get_cards,
updateModelStylingwrite actionUpdate the CSS styling for an existing note type (model).
updateModelTemplateswrite actionUpdate the card templates (Front and Back HTML) for an existing note type (model).
updateNoteFieldswrite actionUpdate the fields of an existing note. Supports HTML content in fields and preserves CSS styling.
Public scan report
scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it
- Code scan242 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 1 days ago15/15
- Maintainer identityregistry namespace matches repository owner; website matches verified namespace9/10
Install directly
Runs npx -y @ankimcp/anki-mcp-server on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add anki-mcp-server -- npx -y @ankimcp/anki-mcp-server
Anki MCP Server: common questions
- Is Anki MCP Server safe?
- Yes, by our scan: it is graded A (94/100). Read the Anki MCP Server safety report
- How do I install Anki MCP Server?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Anki MCP Server need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Anki MCP Server maintained?
- The last commit was 2 days ago (2026-09-18). The latest release is v0.26.0.