anki-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| anki_check_connectionA | Check that Anki is running and AnkiConnect is reachable. Call this first when any other Anki tool fails — it distinguishes "Anki is closed" from "the request itself was wrong". Returns the AnkiConnect API version (6) on success. |
| anki_syncA | Sync the local collection with AnkiWeb. Requires AnkiWeb credentials already configured in Anki — this cannot log in for you. The action returns nothing on success; a sync conflict opens a modal dialog in Anki, which blocks AnkiConnect until you resolve it (the call will then time out). |
| anki_list_decksA | List every deck in the collection. Nested decks are returned with |
| anki_create_deckA | Create a deck, if it does not already exist. |
| anki_list_modelsA | List every note type (model) in the collection. Typical built-ins: |
| anki_get_model_fieldsA | List a note type's field names, in template order. These are the exact keys |
| anki_add_noteA | Add a single note to a deck. Field values are HTML and are sent verbatim — do not escape them. Write the markup you want rendered on the card: Cloze deletions use |
| anki_add_notesA | Add several notes at once, sharing one deck and note type. Field values are HTML and are sent verbatim — do not escape them.
See |
| anki_find_notesA | Find note ids matching an Anki search query. Uses Anki's own search syntax, the same one as the browser's search bar: Quote any term containing spaces. Returns ids only — pass them to
|
| anki_get_notes_infoA | Fetch full details for the given note ids. Returns each note's model, tags, field contents (as stored — i.e. HTML), and the ids of the cards generated from it. Unknown ids come back as empty entries rather than an error. Markdown output truncates field values for readability; use
|
| anki_update_note_fieldsA | Overwrite fields of an existing note. Field values are HTML and are sent verbatim — do not escape them.
Each named field is replaced wholesale, not merged; fields left out of
⚠️ This silently does nothing if the note is open in Anki's Browse window. Anki refuses the edit to avoid clobbering what you are typing, but AnkiConnect still reports success — no error is raised, and the fields are simply unchanged. If an update seems to have no effect, close the Browse window (or click away from that note) and run it again. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool targets a distinct resource and action, from connection checking to note updates. The only near-overlap is add_note vs add_notes, but their batch semantics are clear from names and descriptions. All other tools are unambiguously separated.
All tools share the 'anki_' prefix and use snake_case with a verb_noun structure (e.g., list_decks, add_note, get_notes_info). The sole deviation is anki_sync, which is a single verb but still follows the same prefix and case convention.
11 tools is a well-scoped set for an Anki MCP server, covering connection health, sync, deck and model introspection, note creation (single and batch), search, retrieval, and field updates. Each tool earns its place without redundancy.
The set covers the core note lifecycle well: create, read, search, and update fields. Minor gaps exist—no delete for notes or decks, and no model creation—but these can be worked around via Anki's GUI, making the surface largely complete for typical flashcard workflows.