anki-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANKI_CONNECT_URL | No | The URL of the AnkiConnect server, if AnkiConnect isn't on http://127.0.0.1:8765 | http://127.0.0.1:8765 |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_decksA | List all Anki decks with card counts (new / learning / due for review / own cards) and source. source='yanki': generated from markdown in the user's Obsidian vault by the Yanki plugin. Read and quiz freely, but new cards must be written in Obsidian, not added here. source='anki': native deck, accepts add_notes. source='mixed': holds both kinds (or its subdecks do). add_notes works; prefer Obsidian for technical topics. Subdecks use '::' as the separator, e.g. 'DDIA::04_Transactions'. Counts include subdecks except 'own_cards'. |
| search_notesA | Search notes and return compact previews (HTML stripped, fields truncated). Returns total match count so you can paginate with offset. Use get_notes for full field content. |
| get_notesA | Get the full content of specific notes (HTML stripped, not truncated). Get ids from search_notes. |
| get_weak_cardsA | Find the cards the user struggles with most: highest lapse count (times forgotten), then lowest ease. Good for 'quiz me on my weak spots' or deciding which topics need rewritten/extra cards. Suspended cards are excluded. |
| add_notesA | Add one or more notes. Every note gets tagged 'mcp-added' so the user can review them in Anki. Only for decks with source='anki' (see list_decks); Yanki decks are rejected.
Each note is validated first (deck exists, note type exists, field names match, not a duplicate
of an existing first field in the same deck). Invalid notes are reported and skipped;
valid ones are still added. Prefer one batched call over many single-note calls.
Set |
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 5 tools
Each tool has a clearly distinct purpose: listing decks, searching note previews, retrieving full note content, finding weak cards, and adding notes. search_notes and get_notes are complementary rather than overlapping, and get_weak_cards is a specialized query with a clear scope.
All tool names follow a consistent snake_case verb_noun pattern: list_decks, search_notes, get_notes, get_weak_cards, add_notes. There is no mixing of conventions or vague naming.
Five tools are well-scoped for an Anki MCP focused on reviewing decks, searching notes, inspecting cards, finding weak spots, and adding notes. Each tool earns its place without unnecessary bloat.
The surface covers core read operations (list/search/get/weak cards) and note creation, which supports the stated quiz-and-add workflow. It lacks update/delete operations for existing notes and deck management, but these are minor gaps for the apparent review-focused purpose.