AnkiWeb MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANKIWEB_COOKIES | Yes | AnkiWeb session cookie(s) for authentication, e.g. 'ankiweb=YOUR_SESSION_COOKIE' |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| card_addC | Add or update a note/card in your AnkiWeb collection. Optional: deck, notetype, front (plus 2 more). Returns the new Card. |
| card_duplicatesC | Detect duplicate notes and colliding prompts across decks in your collection. |
| card_getC | Get details and field values for a note. Optional: note_id. Returns the new Card. |
| card_importC | Batch import flashcards from Markdown files, Q&A blocks, and cloze notes into any deck. |
| card_notetypesB | List available note types and decks in your collection. |
| card_searchB | Search notes in your collection. Optional: query. Returns array of Card. |
| contextA | Get API domain context: resource taxonomy, auth requirements, query tips, and unique capabilities. Call this first. |
| deck_createB | Create a new deck in your collection. Required: name. Returns the new Deck. |
| deck_deleteB | Delete a deck from your collection. Required: deck_id. |
| deck_limitsB | Get daily study and review limits for a deck. Required: deck_id. |
| deck_listB | List all decks with due, learn, and new card counts. Returns array of Deck. |
| deck_renameB | Rename an existing deck. Required: deck_id, name. Returns the new Deck. |
| deck_triageC | Analyze review backlog debt ratios, bottleneck decks, and estimated clearance days. |
| exportC | Export data to JSONL or JSON for backup, migration, or analysis |
| importB | Import data from JSONL file via API create/upsert calls |
| learnings_candidatesB | List auto-captured improvement candidates awaiting judgment |
| learnings_confirmB | Confirm an open candidate: print its full payload, then materialize it |
| learnings_forgetA | Delete learnings matching a query (use --all to wipe every rule for that query) |
| learnings_listB | List recorded learnings from the local ankiweb search_learnings table |
| learnings_rejectB | Reject a candidate and tombstone its derivation signature |
| learnings_statsB | Report learn-loop effectiveness metrics from the local events table |
| playbook_amendB | Append a note to an existing playbook (LLM-fired self-correction, silent) |
| playbook_listC | List stored playbooks (query_family, content presence, last observed) |
| recallB | Check prior learnings for a query before running discovery (LLM-fired, pre-discovery) |
| searchA | Full-text search across all synced data. Faster than paginating list endpoints. Requires sync first. |
| shared_briefB | Get a multi-metric digest for a topic comparing top-rated, audio-rich, and fresh community decks. |
| shared_infoB | Get detailed information for a community shared deck. Optional: deck_id. Returns the SharedDeck. (public) |
| shared_searchA | Search community shared decks on AnkiWeb. Optional: search, limit (default: 50). Returns array of SharedDeck. (public) |
| sqlA | Run read-only SQL against local database. Use for ad-hoc analysis, aggregations, and joins across synced resources. Requires sync first. |
| studyC | Review and grade due flashcards interactively in your terminal with keyboard shortcuts. |
| syncC | Sync API data to local SQLite for offline search and analysis |
| teachB | Record a query -> resource mapping for future recall (LLM-fired, silent) |
| teach_lookupC | Install a manual entity-lookup row (kind, canonical, value) |
| teach_patternC | Install a manual generalization pattern (query_template, resource_template, entity_kind) |
| teach_playbookC | Record a CLI playbook + free-text notes for a query family |
| workflow_archiveC | Sync all resources to local store for offline access and search |
| workflow_statusB | Show local archive status and sync state for all resources |
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 37 tools
Several clusters overlap confusingly: sync vs workflow_archive both mean 'pull resources into local store', while search vs card_search vs sql all do querying with murky boundaries. The teach/teach_lookup/teach_pattern/teach_playbook/recall/learnings_*/playbook_* family is a dense maze of meta-learning tools an agent will struggle to choose between. Core deck_* and card_* tools are distinguishable, but the descriptions alone don't fully resolve the overlaps.
The dominant pattern is resource_action (deck_list, card_search, shared_info, learnings_confirm, workflow_status), which is applied consistently across most families. A handful of bare verbs (sync, search, sql, study, teach, import, export) break the pattern, but they read clearly and map to obvious single-purpose actions.
At 37 tools the surface is oversized for an Anki client, and a large fraction is internal agent-harness machinery (teach_*, learnings_*, playbook_*, recall) rather than Anki domain operations. A user/agent scanning this set must sift through many niche meta-tools to reach the core deck/card operations.
Deck lifecycle is well covered (create, list, limits, rename, delete, triage) and cards support add/update, get, search, import, and duplicate detection. However, there is no explicit card/note delete, no media handling, no programmatic review/scheduling control beyond the interactive study tool, and shared decks can be searched/viewed but not downloaded or imported — leaving real dead ends.