MCP server for Anki that uses the AnkiConnect API
Server has 7 tools with complete input schemas and descriptions present. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool or what happens next. Parameter descriptions exist but are minimal (avg ~40 chars vs baseline 72). No output schemas documented. Error handling is basic (throws generic errors without recovery guidance). Tools follow verb_noun naming but lack composition hints for multi-step workflows. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification (4 READ_ONLY, 3 WRITE).
Add a single note to a deck
Add multiple notes at once
Create a new deck in Anki
Get details about a specific note model/type
Get a list of all decks in Anki
Get a list of all note models/types in Anki
Search for notes using Anki's search syntax
No output schemas documented. LLMs cannot predict what fields to expect from tool responses, forcing them to guess downstream field names and risking broken tool chains.
Tool descriptions lack LLM-optimized guidance. Descriptions like 'Get a list of all decks in Anki' (34 chars) do not explain WHEN to call this vs alternatives, what structure is returned, or how to use results downstream. Baseline is 194 chars.
No tool annotations despite clear risk stratification. WRITE tools (createDeck, addNote, addNotes) lack destructiveHint=true; READ_ONLY tools lack readOnlyHint=true. Agents cannot distinguish safe from unsafe operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Error handling is generic. ankiRequest() throws 'Anki Connect API error: <msg>' without recovery guidance. Agents cannot determine if errors are retryable, user-fixable, or fatal.
Parameter 'options' in createDeck and addNote is under-specified. Type is 'object' with no properties defined, no description of valid keys, and no constraints. LLMs will guess or pass invalid structures.