Anki MCP
Enables AI assistants like Claude to interact with Anki flashcard decks through AnkiConnect. Supports creating and managing decks, basic and cloze deletion cards, searching existing cards, and organizing content with tags.
README
Anki MCP - Enhanced Anki Integration for Claude
An enhanced MCP server that enables AI assistants like Claude to interact with Anki flashcard decks through the Model Context Protocol (MCP).
Based on: jasperket/clanki
Features
Core Features (from original clanki)
- Create and manage Anki decks
- Create basic flashcards with front/back content
- Create cloze deletion cards
- Update existing cards and cloze deletions
- Add and manage tags
- View deck contents and card information
- Full integration with AnkiConnect
Enhancements Added
- ๐ Card Search Tool: Search for existing notes using Anki's query language with customizable result limits
- ๐งช Unit Testing: Comprehensive test suite using Vitest for reliability
- ๐๏ธ Modular Architecture: Refactored code with extracted utility functions (
ankiUtils.ts) for better maintainability - ๐ Bug Fixes: Fixed deck name handling to properly support special characters and spaces
Prerequisites
- Anki installed and running
- AnkiConnect plugin installed in Anki
- Node.js 16 or higher
Installation
- Clone this repository:
git clone https://github.com/liuyixin-louis/anki-mcp.git
cd anki-mcp
- Install dependencies:
npm install
- Build the project:
npm run build
Setup
-
Make sure Anki is running and the AnkiConnect plugin is installed and enabled
-
Configure Claude for Desktop to use the server by editing
claude_desktop_config.json:
{
"mcpServers": {
"clanki": {
"command": "node",
"args": ["/absolute/path/to/clanki/build/index.js"]
}
}
}
Replace /absolute/path/to/clanki with the actual path to your clanki installation.
Available Tools
create-deck
Creates a new Anki deck
- Parameters:
name: Name for the new deck
create-card
Creates a new basic flashcard in a specified deck
- Parameters:
deckName: Name of the deck to add the card tofront: Front side content of the cardback: Back side content of the cardtags: (Optional) Array of tags for the card
create-cloze-card
Creates a new cloze deletion card in a specified deck
- Parameters:
deckName: Name of the deck to add the card totext: Text containing cloze deletions using {{c1::text}} syntaxbackExtra: (Optional) Extra information to show on the back of the cardtags: (Optional) Array of tags for the card
update-card
Updates an existing basic flashcard
- Parameters:
noteId: ID of the note to updatefront: (Optional) New front side contentback: (Optional) New back side contenttags: (Optional) New tags for the card
update-cloze-card
Updates an existing cloze deletion card
- Parameters:
noteId: ID of the note to updatetext: (Optional) New text with cloze deletionsbackExtra: (Optional) New extra information for the backtags: (Optional) New tags for the card
search-cards โญ NEW
Search for existing notes using Anki's query language
- Parameters:
query: Anki search query (e.g.,deck:MyDeck tag:biology,is:due,tag:important)limit: (Optional) Maximum number of notes to return (defaults to all matches, capped at 100)
Example queries:
deck:MyDeck tag:biology- Find all biology cards in MyDeckis:due- Find all cards due for reviewadded:7- Find cards added in the last 7 daystag:important rated:1- Find important cards rated 1 star
Development
To modify or extend the server:
- Make changes to
src/index.tsorsrc/ankiUtils.ts - Run tests with
npm testto ensure everything works - Rebuild with
npm run build - Debug with
npx @modelcontextprotocol/inspector node build/index.js
Running Tests
This project includes a comprehensive test suite using Vitest:
# Run all tests
npm test
# Run tests in watch mode
npm test -- --watch
# Run tests with coverage
npm test -- --coverage
What's Different from Original Clanki?
This fork adds several enhancements over jasperket/clanki:
- Card Search: New
search-cardstool allows you to find existing cards using Anki's powerful query syntax - Better Code Organization: Utility functions extracted to
ankiUtils.tsmodule with proper TypeScript types - Test Coverage: Unit tests ensure code reliability and make future changes safer
- Bug Fixes: Deck names with spaces and special characters now work correctly
- Developer Experience: Testing infrastructure makes it easier to contribute and extend
License
ISC
Credits
- Original project: jasperket/clanki
- Enhanced by: liuyixin-louis
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
