anki-mcp-server-addon

ankimcp/anki-mcp-server-addon

3.4

If you are the rightful owner of anki-mcp-server-addon and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

AnkiMCP Server is an Anki addon that allows AI assistants to interact with your flashcard collection using the Model Context Protocol (MCP).

Tools
5
Resources
0
Prompts
0

AnkiMCP Server (Addon)

An Anki addon that exposes your collection to AI assistants via the Model Context Protocol (MCP).

What is this?

AnkiMCP Server runs a local MCP server inside Anki, allowing AI assistants like Claude to interact with your flashcard collection. This enables AI-powered study sessions, card creation, and collection management.

Part of the ankimcp.ai project.

Note on First Run

On first run, this addon downloads pydantic_core (~2MB) from PyPI. This is required because pydantic_core contains platform-specific binaries (Windows/macOS/Linux) that cannot be bundled in a single addon file.

Features

  • Local HTTP server - Runs on http://127.0.0.1:3141/ by default
  • MCP protocol - Compatible with any MCP client (Claude Desktop, etc.)
  • Auto-start - Server starts automatically when Anki opens
  • Tunnel-friendly - Works with Cloudflare Tunnel, ngrok, etc.
  • Cross-platform - Works on macOS, Windows, and Linux (x64 and ARM)

Installation

From AnkiWeb (recommended)

  1. Open Anki and go to Tools → Add-ons → Get Add-ons...
  2. Enter code: 124672614
  3. Restart Anki

From GitHub Releases

  1. Download anki_mcp_server.ankiaddon from Releases
  2. Double-click to install, or use Tools → Add-ons → Install from file...
  3. Restart Anki

Usage

The server starts automatically when you open Anki. Check status via Tools → AnkiMCP Server Settings...

Connect with Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "anki": {
      "url": "http://127.0.0.1:3141/"
    }
  }
}

Configuration

Edit via Anki's Tools → Add-ons → AnkiMCP Server → Config:

{
  "mode": "http",
  "http_port": 3141,
  "http_host": "127.0.0.1",
  "http_path": "",
  "cors_origins": [],
  "cors_expose_headers": ["mcp-session-id", "mcp-protocol-version"],
  "auto_connect_on_startup": true
}

Custom Path

Set http_path to serve the MCP endpoint under a custom path. Useful when exposing Anki via a tunnel (Cloudflare, ngrok) to avoid a fully open endpoint:

{
  "http_path": "my-secret-path"
}

The server will be accessible at http://localhost:3141/my-secret-path/ instead of the root. Leave empty for default behavior.

CORS Configuration

To allow browser-based MCP clients (like web-hosted MCP Inspector), add allowed origins:

{
  "cors_origins": ["https://inspector.example.com", "http://localhost:5173"]
}

Use ["*"] to allow all origins (not recommended for production).

The cors_expose_headers setting controls which response headers browsers can read. The defaults (mcp-session-id, mcp-protocol-version) are required for the MCP Streamable HTTP protocol to work in browsers.

Available Tools

Essential Tools

ToolDescription
syncSynchronize collection with AnkiWeb
list_decksList all decks in the collection
create_deckCreate a new deck
find_notesSearch for notes using Anki's search syntax
notes_infoGet detailed information about notes
add_noteAdd a new note to a deck
card_managementManage cards: reposition (set learning order), changeDeck (move between decks), bury (hide until tomorrow), unbury (restore buried cards in a deck)
update_note_fieldsUpdate fields of existing notes
delete_notesDelete notes from the collection
get_due_cardsGet next due card for review (supports skip_images/skip_audio for voice mode)
present_cardGet card content for review
rate_cardRate a card after review (Again/Hard/Good/Easy)
model_namesList available note types
model_field_namesGet field names and descriptions for a note type
model_stylingGet CSS styling for a note type
update_model_stylingUpdate CSS styling for a note type
create_modelCreate a new note type
store_media_fileStore a media file (image/audio)
get_media_files_namesList media files matching a pattern
delete_media_fileDelete a media file

FSRS Tools

ToolDescription
get_fsrs_paramsGet FSRS scheduler parameters for deck presets
set_fsrs_paramsUpdate FSRS parameters (weights, desired retention, max interval)
get_card_memory_stateGet FSRS memory state (stability, difficulty, retrievability) for cards
optimize_fsrs_paramsRun FSRS parameter optimization using Anki's built-in optimizer

GUI Tools

These tools interact with Anki's user interface:

ToolDescription
gui_browseOpen the card browser with a search query
gui_add_cardsOpen the Add Cards dialog
gui_edit_noteOpen the note editor for a specific note
gui_current_cardGet info about the currently displayed card
gui_show_questionShow the question side of current card
gui_show_answerShow the answer side of current card
gui_select_cardSelect a specific card in the reviewer
gui_deck_browserNavigate to deck browser
gui_undoUndo the last operation

Resources

ResourceURIDescription
system_infoanki://system-infoAnki version, profile, and scheduler info
query_syntaxanki://query-syntaxAnki search query syntax reference
schemaanki://schemaData model documentation (entities, fields, relationships)
stats_todayanki://stats/todayToday's study statistics
stats_forecastanki://stats/forecast30-day review forecast
stats_collectionanki://stats/collectionOverall collection statistics
fsrs_configanki://fsrs/configFSRS configuration summary and parameters

Prompts

PromptDescription
review_sessionGuided review session workflow (interactive, quick, or voice mode)

Requirements

  • Anki 25.07 or later (ships Python 3.13)
  • Anki 25.02 and earlier ship Python 3.9, which is not supported — the MCP SDK requires Python 3.10+ (#8)

Architecture

The addon runs an MCP server in a background thread with HTTP transport (FastMCP + uvicorn). All Anki operations are bridged to the main Qt thread via a queue system, following the same proven pattern as AnkiConnect.

For details, see Anki Add-on Development Documentation.

Development

Running E2E Tests

E2E tests run against a real Anki instance in Docker using headless-anki.

# Install test dependencies
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt

# Build the addon
./package.sh

# Start Anki container
cd .docker && docker compose up -d && cd ..

# Run tests (waits for server automatically)
pytest tests/e2e/ -v

# Stop container
cd .docker && docker compose down

Or use the Makefile shortcuts:

make e2e        # Build, start container, run tests, stop
make e2e-up     # Just start container
make e2e-test   # Just run tests
make e2e-down   # Just stop container

CI

E2E tests run automatically on push to any branch and on PRs to main. See .github/workflows/e2e.yml.

License

AGPL-3.0-or-later

Links