MCP ExplorerExplorer

Anki

@scorzethon 13 days ago
126 MIT
FreeCommunity
Knowledge Base
#Anki#Cards#Review
An MCP server for interacting with your [Anki](https://apps.ankiweb.net/) decks and cards.

Overview

What is Anki

The Anki MCP Server is an implementation that interfaces with the local Anki desktop application via the Anki-Connect add-on. It provides functionalities for card review and creation, streamlining users’ interaction with their Anki decks.

Use cases

This server can be used to automate the review process by fetching due cards, creating new cards, and updating card statuses. It is particularly useful for users looking to enhance their learning efficiency by programmatically managing their flashcards.

How to use

To use the server, first ensure the Anki-Connect add-on is installed in Anki. After that, install the necessary dependencies, build the server, and configure it to work with Claude Desktop. Users can then utilize specific resources and tools provided by the server for card management.

Key features

Key features include retrieving cards from the current deck, getting all due and new cards, updating card statuses with ease scores, and creating new cards in the default Anki deck. The server supports various commands, making it a versatile tool for flashcard management.

Where to use

The Anki MCP Server is best used in personal study setups where Anki is employed for spaced-repetition learning. It can be integrated into desktop applications to enhance learning workflows, making it suitable for anyone using Anki for educational purposes.

Content

Anki MCP Server

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.

Resources

  • anki://search/deckcurrent
    • Returns all cards from current deck
    • Equivalent of deck:current in Anki
  • anki://search/isdue
    • Returns cards in review and learning waiting to be studied
    • Equivalent of is:due in Anki
  • anki://search/isnew
    • Returns all unseen cards
    • Equivalent of is:new in Anki

Tools

  • update_cards

    • Marks cards with given card IDs as answered and gives them an ease score between 1 (Again) and 4 (Easy)
    • Inputs:
      • answers (array): Array of objects with cardId (number) and ease (number) fields
  • add_card

    • Creates a new card in the Default Anki deck
    • Inputs:
      • front (string): Front of card
      • back (string): Back of card
  • get_due_cards

    • Returns n number of cards currently due for review
    • Inputs:
      • num (number): Number of cards
  • get_new_cards

    • Returns n number of cards from new
    • Inputs:
      • num (number): Number of cards

Development

Install dependencies:

npm install

Build the server:

npm run build

For development with auto-rebuild:

npm run watch

Configuration

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"
    }
  }
}

Debugging

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.

Tools

update_cards
After the user answers cards you've quizzed them on, use this tool to mark them answered and update their ease
add_card
Create a new flashcard in Anki for the user. Must use HTML formatting only. IMPORTANT FORMATTING RULES: 1. Must use HTML tags for ALL formatting - NO markdown 2. Use <br> for ALL line breaks 3. For code blocks, use <pre> with inline CSS styling 4. Example formatting: - Line breaks: <br> - Code: <pre style="background-color: transparent; padding: 10px; border-radius: 5px;"> - Lists: <ol> and <li> tags - Bold: <strong> - Italic: <em>
get_due_cards
Returns a given number (num) of cards due for review.
get_new_cards
Returns a given number (num) of new and unseen cards.

Comments