anki mcp server
A server implementation that connects to a locally running Anki, enabling card review and creation through the Model Context Protocol.
A server implementation that connects to a locally running Anki, enabling card review and creation through the Model Context Protocol.
An MCP server implementation that connects to a locally running Anki, providing card review and creation.
This server is designed to work with the Anki desktop app and the Anki-Connect add-on.
Make sure you have the add-on installed before using.
deck:current
in Ankiis:due
in Ankiis:new
in AnkiInputs:
answers
(array): Array of objects with cardId
(number) and ease
(number) fieldsadd_card
Inputs:
front
(string): Front of cardback
(string): Back of cardget_due_cards
Inputs:
num
(number): Number of cardsget_new_cards
num
(number): Number of cardsInstall dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
To use with Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"anki-mcp-server": {
"command": "/path/to/anki-mcp-server/build/index.js"
}
}
}
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspector
The Inspector will provide a URL to access debugging tools in your browser.
[
{
"description": "After the user answers cards you've quizzed them on, use this tool to mark them answered and update their ease",
"inputSchema": {
"properties": {
"answers": {
"items": {
"properties": {
"cardId": {
"description": "Id of the card to answer",
"type": "number"
},
"ease": {
"description": "Ease of the card between 1 (Again) and 4 (Easy)",
"type": "number"
}
},
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"name": "update_cards"
},
{
"description": "Create a new flashcard in Anki for the user. Must use HTML formatting only. IMPORTANT FORMATTING RULES:n1. Must use HTML tags for ALL formatting - NO markdownn2. Use <br> for ALL line breaksn3. For code blocks, use <pre> with inline CSS stylingn4. Example formatting:n - Line breaks: <br>n - Code: <pre style="background-color: transparent; padding: 10px; border-radius: 5px;">n - Lists: <ol> and <li> tagsn - Bold: <strong>n - Italic: <em>",
"inputSchema": {
"properties": {
"back": {
"description": "The back of the card. Must use HTML formatting only.",
"type": "string"
},
"front": {
"description": "The front of the card. Must use HTML formatting only.",
"type": "string"
}
},
"required": [
"front",
"back"
],
"type": "object"
},
"name": "add_card"
},
{
"description": "Returns a given number (num) of cards due for review.",
"inputSchema": {
"properties": {
"num": {
"description": "Number of due cards to get",
"type": "number"
}
},
"required": [
"num"
],
"type": "object"
},
"name": "get_due_cards"
},
{
"description": "Returns a given number (num) of new and unseen cards.",
"inputSchema": {
"properties": {
"num": {
"description": "Number of new cards to get",
"type": "number"
}
},
"required": [
"num"
],
"type": "object"
},
"name": "get_new_cards"
}
]