A Model Context Protocol (MCP) server that enables LLMs to interact with Anki flashcard software through AnkiConnect (with custom features).
list_decks- List all available Anki deckscreate_deck- Create a new Anki deckcreate_note- Create a new note (Basic or Cloze)batch_create_notes- Create multiple notes at oncesearch_notes- Search for notes using Anki query syntaxget_note_info- Get detailed information about a noteupdate_note- Update an existing notedelete_note- Delete a notelist_note_types- List all available note typescreate_note_type- Create a new note typeget_note_type_info- Get detailed structure of a note typesync- NEW! Synchronize Anki collection with AnkiWeb server (useful for headless Anki deployments or programmatic workflows)
anki://decks/all- Complete list of available decksanki://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 type
- Anki installed on your system
- AnkiConnect add-on installed in Anki
Add the server to your claude_desktop_config.json:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes","@murphylo/anki-mcp-server"]
}
}
}Add the server to your Cline MCP settings file inside VSCode's settings cline_mcp_settings.json
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes","@murphylo/anki-mcp-server"]
}
}
}- Install dependencies:
npm install- Build the server:
npm run build- For development with auto-rebuild:
npm run watchRun the test suite:
npm testThis executes tests for:
- Server initialization
- AnkiConnect communication
- Note operations (create/read/update/delete)
- Deck management
- Error handling
Since MCP servers communicate over stdio, we recommend using the MCP Inspector:
npm run inspectorThis provides a browser-based interface for:
- Monitoring MCP messages
- Testing tool invocations
- Viewing server logs
- Debugging communication issues
- Create a new deck:
Create a new Anki deck called "Programming"
- Add a basic card:
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.
- Add a cloze deletion card:
Create a cloze card in the "Programming" deck with:
Text: In JavaScript, {{c1::const}} declares a block-scoped variable that cannot be {{c2::reassigned}}.
- Sync your collection with AnkiWeb:
Please sync my Anki collection with AnkiWeb
- Fork the repository
- Create your feature branch
- Run tests:
npm test - Submit a pull request
Icon courtesy of macOS Icons
MIT License - see LICENSE file for details