Skip to main content
Glama

@lifeng688/anki-mcp

MCP stdio server for controlling local Anki via AnkiConnect. Enables LLMs (Claude, Cursor, Cline) to manage Anki decks and notes through a standardized tool interface.

v0.2.0 — Controlled write operations with safe defaults (dryRun), tag management, and explicit sync confirmation.

Quick Install

npm install @lifeng688/anki-mcp

Or try it instantly:

npx @lifeng688/anki-mcp

Related MCP server: TalkToAnki

Prerequisites

  1. Anki desktop installed

  2. AnkiConnect add-on (code 2055492159) — install via Tools → Add-ons → Get Add-ons

  3. Node.js >= 18.0.0

Verify AnkiConnect is running:

curl -X POST http://127.0.0.1:8765 \
  -H "Content-Type: application/json" \
  -d '{"action":"version","version":6}'
# Expected: {"result":6,"error":null}

Core Features

  • Deck management — List and create decks (including hierarchical :: decks)

  • Note operations — Add, search, update, delete, and inspect notes

  • Tag management — Add and remove tags on notes by ID or search query

  • Batch operations — Add multiple notes with per-item result tracking

  • Safe note deletion — Delete notes with dryRun preview and explicit confirmation

  • Explicit sync — Trigger AnkiCloud sync with confirmation guard

  • Controlled writes — All mutation tools default to dryRun=true

  • Safety first — dryRun support for batch writes, duplicate prevention, field validation

  • Unified responses — Consistent success/error envelope across all tools

  • Security-focused — Localhost only, no DB access, no card content logging

Available Tools

Tool

Description

Side Effects

ping

Server health check

None

check_anki_connection

Verify AnkiConnect reachable

None

list_decks

List all decks

None

create_deck

Create a new deck

Creates deck

list_note_models

List note models

None

get_note_model_fields

Get model fields

None

add_note

Add single note

Creates note

add_notes

Batch add notes

Creates notes

search_notes

Search notes

None

get_notes_info

Get note details

None

update_note_fields

Update note fields

Modifies note

delete_notes

Delete notes by ID or query

Deletes notes (requires confirm)

add_tags

Add tags to notes

Modifies note tags

remove_tags

Remove tags from notes

Modifies note tags

sync_anki

Trigger AnkiCloud sync

Triggers network sync (requires confirm)

See Tool Schema Reference for full input/output specs.

MCP Client Configuration

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "anki": {
      "command": "node",
      "args": ["$(npm root)/@lifeng688/anki-mcp/dist/index.js"]
    }
  }
}

With environment variables:

{
  "mcpServers": {
    "anki": {
      "command": "node",
      "args": ["$(npm root)/@lifeng688/anki-mcp/dist/index.js"],
      "env": {
        "ANKI_CONNECT_URL": "http://127.0.0.1:8765",
        "ANKI_CONNECT_VERSION": "6",
        "ANKI_DEFAULT_DECK": "Default::MCP",
        "ANKI_DEFAULT_MODEL": "Basic",
        "ANKI_LOG_LEVEL": "warn"
      }
    }
  }
}

Note: Replace $(npm root)/@lifeng688/anki-mcp/dist/index.js with the actual resolved path. You can find it with:

npm root -g
# or
npm root

Cursor / Cline

Same JSON format — add to your MCP server configuration. Point args to the installed dist/index.js inside the @lifeng688/anki-mcp package directory.

Global Install

npm install -g @lifeng688/anki-mcp

Then configure your client to point to:

<global-npm-root>/@lifeng688/anki-mcp/dist/index.js

Environment Variables

Variable

Default

Description

ANKI_CONNECT_URL

(none)

Full AnkiConnect HTTP endpoint (highest priority). Overrides HOST:PORT.

ANKI_CONNECT_HOST

127.0.0.1

Host part, used when ANKI_CONNECT_URL is not set.

ANKI_CONNECT_PORT

8765

Port part, used when ANKI_CONNECT_URL is not set.

ANKI_CONNECT_VERSION

6

AnkiConnect API version

ANKI_CONNECT_KEY

(empty)

AnkiConnect API key (if configured)

ANKI_DEFAULT_DECK

Default

Default deck for note operations

ANKI_DEFAULT_MODEL

Basic

Default note model

ANKI_REQUEST_TIMEOUT_MS

10000

HTTP request timeout in milliseconds

ANKI_LOG_LEVEL

info

Log verbosity: error / warn / info / debug

URL Resolution Priority:

  1. ANKI_CONNECT_URL — if set, used as-is (must point to localhost)

  2. ANKI_CONNECT_HOST + ANKI_CONNECT_PORT — composed as http://{HOST}:{PORT}

  3. http://127.0.0.1:8765 — hardcoded default

Security

  • This server only connects to http://127.0.0.1:8765 (localhost)

  • It does not read/write Anki SQLite databases directly

  • It does not upload any data externally

  • ANKI_CONNECT_KEY is never logged

  • delete_notes defaults to dryRun=true; real deletion requires confirm="DELETE_NOTES"

  • sync_anki defaults to dryRun=true; real sync requires confirm="SYNC_ANKI"

  • add_tags / remove_tags default to dryRun=true

  • import/export are not in v0.2.0

First-Time Setup

  1. Create a Test::MCP deck before making real changes

  2. Run ping and check_anki_connection to verify connectivity

  3. Use add_notes with dryRun: true to preview before writing

  4. Before deleting notes, always run delete_notes with dryRun: true first

  5. Before batch tag operations, run add_tags / remove_tags with dryRun: true first

  6. sync_anki requires explicit confirm="SYNC_ANKI" for real sync

  7. Never expose port 8765 to the network

Documentation

License

MIT — See LICENSE for details.

Available Tools

11 tools
add_noteA

Add a single note (flashcard) to Anki.

Inputs: deckName (required), modelName (required), fields (required), tags, +1 more.

add_notesB

Batch add multiple notes to Anki. Supports dryRun for preview.

Inputs: deckName (required), modelName (required), notes (required), allowDuplicate, +1 more.

check_anki_connectionA

Check if AnkiConnect is reachable and return the connection status.

Inputs: no named parameters.

create_deckB

Create a new Anki deck. Supports hierarchical decks using :: separator.

Inputs: deckName (required).

get_note_model_fieldsB

Get the field names for a specific note model.

Inputs: modelName (required).

get_notes_infoB

Get detailed information about specific notes by their IDs.

Inputs: noteIds (required).

list_decksA

List all available Anki decks.

Inputs: no named parameters.

list_note_modelsA

List all available note models (card types).

Inputs: no named parameters.

pingA

Health check for the MCP server. Returns server metadata without requiring Anki to be running.

Inputs: no named parameters.

search_notesB

Search for notes in Anki using Anki search syntax.

Inputs: query (required), limit.

update_note_fieldsB

Update specific fields of an existing note. Supports dryRun.

Inputs: noteId (required), fields (required), dryRun.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose: single vs batch note addition, deck vs model listing, search vs info retrieval, etc. No overlapping responsibilities.

    Naming Consistency5/5

    All tools follow a consistent snake_case verb_noun pattern (e.g., add_note, list_decks, search_notes). No deviations or mixed conventions.

    Tool Count5/5

    11 tools provide a well-scoped set for Anki interaction—covering deck creation, note operations, search, and health checks—without being excessive or insufficient.

    Completeness3/5

    The set covers core note and deck operations, but lacks delete functionality (delete_note, delete_deck) and update deck operations, leaving some lifecycle gaps.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      A
      maintenance
      An MCP server that enables AI assistants to interact with the Anki flashcard application for studying, deck management, and note creation. It supports natural language interaction for reviewing cards, searching content, and managing media files across local and remote environments.
      981 npm
      556
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that enables AI assistants to seamlessly manage Anki flashcards, decks, and templates through the AnkiConnect API. It supports intelligent querying, batch note creation, and detailed study progress analysis using natural language.
      4
      MIT