Anki MCP Server
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 | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| update_cardA | Update a card/note in Anki. Supports 4 operations: (1) 'answer': mark a card as reviewed with ease 1-4, (2) 'update_note': update note fields, tags, and media, (3) 'update_fields': update only fields and media, (4) 'update_tags': update only tags. Returns success message with operation details. |
| add_cardA | Create a new flashcard in Anki. Requires: deckName (exact deck name), modelName (note type like 'Basic' or 'Cloze'), and fields object matching the note type's field names. Returns card ID on success. FORMATTING: Use HTML only (NO markdown) - for line breaks, for bold, for italic, / for lists. Media files (audio/picture) support URLs or local absolute paths. |
| get_due_cardsA | Retrieve cards that are due for review. Returns JSON object with 'count' (number of cards) and 'cards' array. Each card includes: cardId (number), question (HTML cleaned string), answer (HTML cleaned string), due (Unix timestamp). Ordered by due date (earliest first). |
| get_new_cardsA | Retrieve new unseen cards that haven't been studied yet. Returns JSON object with 'count' (number of cards) and 'cards' array. Each card includes: cardId (number), question (HTML cleaned string), answer (HTML cleaned string), due (Unix timestamp). Ordered by card position in new queue. |
| get_cardA | Retrieve detailed card/note information. Provide EITHER cardId OR query (not both). Returns array of card objects with: cardId, deckName, modelName, question, answer, fields (object with all field values), due, interval, ease, reps, lapses, type, queue, noteId. Use this to find card/note IDs for update operations or to inspect card details. |
| batch_add_cardA | Create multiple flashcards in one operation. Each card has same structure as add_card tool. Returns JSON with 'successful' (count), 'failed' (count), and 'errors' array (details of failures if any). More efficient than calling add_card multiple times. Use HTML formatting (not markdown). Processes cards sequentially; partial success possible (some cards created, some failed). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Current Deck | Current Anki deck |
| Due cards | Cards in review and learning waiting to be studied |
| New cards | All unseen cards |
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose with no overlap: add_card creates a single card, batch_add_card creates multiple, get_card retrieves specific card details, get_due_cards fetches cards due for review, get_new_cards fetches unseen cards, and update_card modifies existing cards. The descriptions clearly differentiate between creation, retrieval (by different criteria), and update operations.
All tool names follow a consistent verb_noun pattern: add_card, batch_add_card, get_card, get_due_cards, get_new_cards, update_card. The naming is uniform and predictable, using snake_case throughout with clear action prefixes (add, get, update) and descriptive nouns.
With 6 tools, this server is well-scoped for managing Anki flashcards. It covers core operations (create, retrieve, update) efficiently without being too sparse or bloated. The tools are focused and each serves a necessary function in the flashcard lifecycle.
The toolset provides strong coverage for flashcard management: creation (single and batch), retrieval (by ID, due status, or new status), and updates (including answering reviews). A minor gap is the lack of a delete_card tool, which could be useful for full CRUD operations, but agents can likely work around this by other means if needed.