AnkiWeb MCP
Go MCP server for AnkiWeb spaced-repetition flashcard creation, deck inspection, and sync
Dokümantasyon
AnkiWeb CLI (ankiweb)
A terminal-native Go CLI and MCP server for AnkiWeb, built by Sameer Bajaj.
Every existing Anki tool requires the desktop Anki GUI running with the AnkiConnect add-on bound to a local port. ankiweb talks directly to AnkiWeb's cloud services, enabling fast card creation with custom templates, batch Markdown importing, in-terminal flashcard reviews, deck triage, and community shared deck discovery — from any terminal or headless machine.
⚡ Highlights
- Dynamic Custom Card Templates: Add cards to any deck respecting custom notetypes with arbitrary fields (
--field "Additional Info=...",--field "Source=..."), not just basicFrontandBack. - Markdown & Note Batch Importer (
card import): Extract flashcards directly from Markdown reading notes, structured Q&A blocks, bullet pairs, and cloze syntax ({{c1::...}}). - Interactive Terminal Study (
study): Review and grade due flashcards directly in the CLI with instant keyboard flips and 1–4 ease score recording (Again,Hard,Good,Easy). - Deck Backlog Triage (
deck triage): Analyze review backlog debt ratios, detect bottleneck decks, and estimate clearance days across nested deck trees. - Cross-Deck Duplicate Detection (
card duplicates): Identify duplicate notes and colliding prompts across multiple decks in your collection. - Community Deck Topic Briefing (
shared brief): Surface top-rated community decks using Bayesian approval rate smoothing and audio/image media coverage filters. - Offline SQLite & FTS5: Fast local caching with full-text search across your collection.
- AI Agent Native (MCP Server): Ships with a built-in Model Context Protocol server (
ankiweb-mcp) and--agentJSON envelopes for autonomous assistants.
📦 Installation
From Source (Go 1.22+)
# Install the ankiweb CLI
go install github.com/sameerbajaj/ankiweb-cli/cmd/ankiweb@latest
# Optionally install the MCP server
go install github.com/sameerbajaj/ankiweb-cli/cmd/ankiweb-mcp@latest
From Releases
Download precompiled binaries for macOS, Linux, and Windows from GitHub Releases.
🔐 Authentication
AnkiWeb uses session cookie authentication. You can authenticate in one of two ways:
-
Environment Variable (Recommended for CI / Headless):
export ANKIWEB_COOKIES="ankiweb=YOUR_SESSION_COOKIE" -
Interactive Login:
ankiweb auth login -
Verify Auth Status:
ankiweb auth status
Note: Public community shared deck searches (ankiweb shared search, ankiweb shared brief) require no authentication.
🚀 Quick Start
1. Check health & environment
ankiweb doctor
2. List your decks & due review counts
ankiweb deck list
3. Add a flashcard with custom template fields
# Basic card
ankiweb card add --deck "Default" --front "What is Raft?" --back "A distributed consensus algorithm" --tags "cs"
# Custom notetype with arbitrary fields
ankiweb card add \
--deck "Computer Science" \
--notetype "Technical Concept" \
--front "Byzantine Fault Tolerance" \
--back "Safety in presence of arbitrary failing nodes" \
--field "Additional Info=Used in Tendermint and PBFT" \
--field "Source=Castro & Liskov 1999" \
--tags "cs,distributed-systems"
4. Batch import flashcards from Markdown
ankiweb card import --file study-notes.md --deck "Medicine"
Supported Markdown patterns:
- Heading Q&A:
## Questionfollowed by answer paragraph - Explicit Q/A:
Q: Question/A: Answer - Bullet pairs:
- Front :: Back - Cloze syntax:
Text with {{c1::cloze deletion}}
5. Review flashcards in your terminal
ankiweb study --deck "Spanish" --limit 20
6. Triage deck review backlogs & pacing
ankiweb deck triage
7. Find duplicate prompts across decks
ankiweb card duplicates
8. Discover top-rated community shared decks
# Get a topic briefing with Bayesian approval ratings and audio coverage
ankiweb shared brief "Japanese"
# Search shared decks with media filters
ankiweb shared search "Spanish" --limit 20
📖 Command Reference
ankiweb card
add— Add a new note/card with support for custom fields (--field Name=Value)get— Inspect note details and field values by note IDsearch— Search your collection using Anki query syntaxnotetypes— List available notetypes, fields, and decks in your collectionimport— Batch parse and import cards from Markdown files or stdinduplicates— Detect colliding prompts and duplicate notes across decks
ankiweb deck
list— List all decks with new, learn, and review queue countscreate— Create a new deckrename— Rename an existing deckdelete— Delete a decklimits— Inspect daily new and review card study limitstriage— Analyze backlog debt ratios and estimated clearance pacing
ankiweb study
study— Start an interactive or agent-automated review session
ankiweb shared
search— Search public community decks on AnkiWebinfo— View detailed ratings, samples, and reviews for a shared deckbrief— Generate a topic summary comparing highest-rated, freshest, and audio-rich decks
Utility
doctor— Run environment diagnostics and connectivity verificationsync— Sync collection data to local SQLite database for offline fast queriessql— Run raw SQL queries against your local collection storewhich— Natural language command discovery
🤖 Agent & Automation Usage
Every command supports non-interactive execution with structured outputs:
--agent: Enables non-interactive JSON envelopes with execution metadata.--json: Formats output as JSON.--select field1,field2: Projects only specific fields for minimal token usage.--dry-run: Previews the network mutation payload without executing it.
# Dry-run preview of a card creation
ankiweb card add --deck "Default" --front "Hello" --back "World" --dry-run
# Structured agent query
ankiweb deck triage --agent
Model Context Protocol (MCP) Setup
Run the bundled MCP server in Claude Desktop, Cursor, or Codex:
{
"mcpServers": {
"ankiweb": {
"command": "ankiweb-mcp",
"env": {
"ANKIWEB_COOKIES": "ankiweb=YOUR_COOKIE"
}
}
}
}
👤 Author
Developed by Sameer Bajaj.
📄 License
Licensed under the Apache License, Version 2.0. See LICENSE for details.