A Model Context Protocol (MCP) server for interacting with Anki flashcards via the AnkiConnect add-on. This server exposes AnkiConnect actions as MCP tools, organized into logical services. - Anki desktop application - AnkiConnect add-on installed and configured in Anki - Python 3.8+ - uv (for running and installing dependencies, optional but recommended) To run the MCP server: The server will sta
Add this skill
npx mdskills install ujisati/anki-mcpComprehensive MCP server exposing Anki functionality with well-organized tools and clear setup docs
A Model Context Protocol (MCP) server for interacting with Anki flashcards via the AnkiConnect add-on. This server exposes AnkiConnect actions as MCP tools, organized into logical services.
uv (for running and installing dependencies, optional but recommended)# Clone the repository
git clone https://github.com/ujisati/anki-mcp.git
cd anki-mcp
# Install dependencies (using uv)
uv pip install -e .
To run the MCP server:
uv run anki-mcp
The server will start and listen for MCP requests, typically interfacing with AnkiConnect at http://127.0.0.1:8765.
You can use the MCP Inspector to view the available tools:
npx @modelcontextprotocol/inspector uv run anki-mcp
If you're integrating this with an MCP client (like an AI assistant framework), you'll need to configure it to find this server. Here's an example configuration snippet:
{
"mcpServers": {
"anki": {
"command": "uv",
"args": [
"run", // uv will find anki-mcp if run from project root
"anki-mcp"
],
// If running from outside the project directory, specify the path:
// "args": [
// "--directory",
// "/ABSOLUTE/PATH/TO/anki-mcp", // Replace with actual path
// "run",
// "anki-mcp"
// ]
}
}
}
This MCP server provides access to Anki functionality through tools grouped by services. The tool names correspond directly to AnkiConnect actions.
deck.*)deck.deckNamesAndIds: Gets the complete list of deck names and their respective IDs.deck.getDeckConfig: Gets the configuration group object for a given deck name.deck.deckNames: Gets the complete list of deck names for the current user.deck.createDeck: Creates a new empty deck.deck.deleteDecks: Deletes specified decks.deck.changeDeck: Moves cards to a different deck.deck.saveDeckConfig: Saves a deck configuration group.note.*)note.findNotes: Returns note IDs for a given Anki search query.note.notesInfo: Returns information for specified note IDs.note.getNoteTags: Gets the tags for a specific note ID.note.addNote: Creates a new note.note.updateNoteFields: Modifies the fields of an existing note.note.deleteNotes: Deletes specified notes.note.addNotes: Creates multiple notes.note.addTags: Adds tags to specified notes.note.removeTags: Removes tags from specified notes.note.updateNote: Modifies the fields and/or tags of an existing note.card.*)card.findCards: Returns card IDs for a given Anki search query.card.cardsInfo: Returns information for specified card IDs.card.cardsToNotes: Returns note IDs for given card IDs.card.areSuspended: Checks if specified cards are suspended.card.cardsModTime: Returns modification time for specified card IDs.card.suspended: Checks if a single card is suspended.card.suspend: Suspends specified cards.card.unsuspend: Unsuspends specified cards.card.setSpecificValueOfCard: Sets specific values of a single card (use with caution).model.*) (Note Types)model.modelNamesAndIds: Gets the complete list of model (note type) names and their IDs.model.findModelsByName: Gets model definitions for provided model names.model.modelFieldNames: Gets field names for a given model name.model.modelTemplates: Gets template content for each card of a specified model.model.modelStyling: Gets CSS styling for a given model name.model.createModel: Creates a new model (note type).model.updateModelTemplates: Modifies templates of an existing model.model.updateModelStyling: Modifies CSS styling of an existing model.model.modelFieldAdd: Adds a new field to an existing model.model.modelFieldRemove: Removes a field from an existing model.media.*)media.retrieveMediaFile: Retrieves the base64-encoded contents of a media file.media.getMediaFilesNames: Gets names of media files matching a glob pattern.media.storeMediaFile: Stores a media file (from base64, path, or URL).media.deleteMediaFile: Deletes a specified media file.To set up for development:
uv sync
source .venv/bin/activate
uv pip install -e .
pytest
Install via CLI
npx mdskills install ujisati/anki-mcpAnki MCP is a free, open-source AI agent skill. A Model Context Protocol (MCP) server for interacting with Anki flashcards via the AnkiConnect add-on. This server exposes AnkiConnect actions as MCP tools, organized into logical services. - Anki desktop application - AnkiConnect add-on installed and configured in Anki - Python 3.8+ - uv (for running and installing dependencies, optional but recommended) To run the MCP server: The server will sta
Install Anki MCP with a single command:
npx mdskills install ujisati/anki-mcpThis downloads the skill files into your project and your AI agent picks them up automatically.
Anki MCP works with Claude Code, Claude Desktop, Cursor, Vscode Copilot, Windsurf, Continue Dev, Gemini Cli, Amp, Roo Code, Goose. Skills use the open SKILL.md format which is compatible with any AI coding agent that reads markdown instructions.