The Anki MCP Server enables large language models to interact with Anki flashcard software through AnkiConnect, providing tools to create, search, update, and delete notes and decks, as well as manage note types. It exposes eleven tools including `create_note`, `batch_create_notes`, `search_notes`, and deck management functions, plus four resources that expose deck and note type information in structured formats. This server solves the problem of programmatically managing Anki study materials through natural language, allowing LLMs to help users create and organize flashcards without direct manual interaction with the Anki application.
A Model Context Protocol (MCP) server that enables LLMs to interact with Anki flashcard software through AnkiConnect.
![]()
anki_check_connection - Check whether AnkiConnect is reachableanki_list_decks - List all available Anki decks, optionally with deck IDsanki_create_deck - Create a new Anki deckanki_list_tags - List all tags currently used in the collectionanki_add_note_tags - Add tags to one or more notesanki_remove_note_tags - Remove tags from one or more notesanki_create_note - Create a new noteanki_batch_create_notes - Create multiple notes at onceanki_search_notes - Search for notes using Anki query syntaxanki_get_note_info - Get detailed information about a noteanki_update_note - Update an existing note's fields and/or tagsanki_delete_note - Delete one or multiple notesanki_list_note_types - List all available note typesanki_create_note_type - Create a new note typeanki_get_note_type_info - Get detailed structure of a note typeanki_sync - Trigger AnkiWeb sync (fire-and-forget; success means Anki accepted the request, not that AnkiWeb received the data; a blocking dialog in Anki can silently keep the sync queued)Legacy unprefixed tool names such as create_note and list_decks remain callable for existing clients, but new agent integrations should use the anki_* names.
anki://decks/all - Complete list of available decks with deck IDsanki://tags/all - Complete list of tagsanki://note-types/all - List of all available note typesanki://note-types/all-with-schemas - Detailed structure information for all note typesanki://note-types/{modelName} - Detailed structure information for a specific note typeThis repository supports Anthropic Desktop Extensions (MCPB). The easiest way to use this server in Claude Desktop is by installing the packaged .mcpb bundle.
.mcpb file locally using the provided script:npm run mcpb
.mcpb file in, then click Install.This validates manifest.json and outputs a .mcpb archive you can install as above. Learn more about Desktop Extensions in Anthropic's announcement: Desktop Extensions: One-click MCP server installation for Claude Desktop.
Add the server to your claude_desktop_config.json:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server"]
}
}
}
If your AnkiConnect is running on a different port, you can specify it using the --port parameter:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server", "--port", "8080"]
}
}
}
Add the server to your Cline MCP settings file inside VSCode's settings cline_mcp_settings.json
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server"]
}
}
}
For Cline, you can also specify a custom port:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server", "--port", "8080"]
}
}
}
Install the Anki skill to give Claude Code built-in knowledge of all Anki tools and workflows:
npx skills add nailuoGG/anki-mcp-server@anki
Once installed, Claude Code will automatically use the skill when you ask it to create flashcards, manage decks, or batch import notes.
Note: Do not use the
.mcpbpackaged version as the MCP server — it outputs Electron metadata to stdout which breaks the MCP stdio protocol. Usenpx -y anki-mcp-serverinstead.
Create a distributable Desktop Extension bundle for Claude Desktop:
npm run mcpb
This will build the project and generate a .mcpb archive from the current repository, validating manifest.json. Test by dragging it into Claude Desktop's Extensions settings. Reference: Desktop Extensions: One-click MCP server installation for Claude Desktop.
This server is automatically published to the MCP Registry when a new version is released. The publishing process includes:
server.json file is validated against the MCP schema before publishingpackage.json, manifest.json, and server.jsonYou can validate the MCP server configuration locally:
npm run validate-mcp
This will download the latest MCP schema and validate your server.json file.
If you need to publish manually, you can use the MCP Publisher CLI:
# Install MCP Publisher
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
chmod +x mcp-publisher
sudo mv mcp-publisher /usr/local/bin/
# Login to MCP Registry
mcp-publisher login github-oidc
# Publish to MCP Registry
mcp-publisher publish
npm install
npm run build
npm run watch
Run the test suite:
npm test
This executes unit tests for MCP tool schemas, structured tool results, note creation, search/update/delete workflows, and error handling. These tests use mocked AnkiConnect clients; use MCP Inspector with a running Anki instance for manual integration checks.
Read-only agent evaluation assets live in evals/. Load the fixture into a disposable Anki profile, then run the XML questions against the MCP server to verify that agents can discover decks, tags, note type schemas, resources, and structured tool results.
Since MCP servers communicate over stdio, we recommend using the MCP Inspector:
npm run inspector
This provides a browser-based interface for:
Create a new Anki deck called "Programming"
Create an Anki card in the "Programming" deck with:
Front: What is a closure in JavaScript?
Back: A closure is the combination of a function and the lexical environment within which that function was declared.
Create a cloze card in the "Programming" deck with:
Text: In JavaScript, {{c1::const}} declares a block-scoped variable that cannot be {{c2::reassigned}}.
Delete note ID 1234567890
Delete note IDs 1234567890, 9876543210, and 1122334455
Add tags "review" and "mcp" to note IDs 1234567890 and 9876543210
npm testIcon courtesy of macOS Icons
MIT License - see LICENSE file for details
gongrzhe/office-powerpoint-mcp-server
gongrzhe/office-word-mcp-server
io.github.mindstone/mcp-server-office
greirson/mcp-todoist
henilcalagiya/mcp-apple-notes
ankimcp/anki-mcp-server-addon