A Model Context Protocol (MCP) server that enables LLMs to interact with Anki flashcard software through AnkiConnect.
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 type
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
This repository supports Anthropic Desktop Extensions (MCPB). The easiest way to use this server in Claude Desktop is by installing the packaged .mcpb
bundle.
- Generate the
.mcpb
file locally using the provided script:
npm run pack
- Open Claude Desktop Settings → Extensions and drag the generated
.mcpb
file in, then click Install.
This validates manifest.json
and outputs a .mcpb
archive you can install as above. Learn more about Desktop Extensions in Anthropic's announcement: Desktop Extensions: One-click MCP server installation for Claude Desktop.
Add the server to your claude_desktop_config.json:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server"]
}
}
}
If your AnkiConnect is running on a different port, you can specify it using the --port
parameter:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server", "--port", "8080"]
}
}
}
Add the server to your Cline MCP settings file inside VSCode's settings cline_mcp_settings.json
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server"]
}
}
}
For Cline, you can also specify a custom port:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server", "--port", "8080"]
}
}
}
Create a distributable Desktop Extension bundle for Claude Desktop:
npm run pack
This will build the project and generate a .mcpb
archive from the current repository, validating manifest.json
. Test by dragging it into Claude Desktop's Extensions settings. Reference: Desktop Extensions: One-click MCP server installation for Claude Desktop.
This server is automatically published to the MCP Registry when a new version is released. The publishing process includes:
- Automated CI/CD: GitHub Actions automatically publishes to both NPM and MCP Registry on successful releases
- Schema Validation: The
server.json
file is validated against the MCP schema before publishing - Version Synchronization: Versions are kept in sync between
package.json
,manifest.json
, andserver.json
- Comprehensive Testing: Multi-version Node.js testing, linting, and validation before publishing
- Beta Support: Automated beta releases for testing new features
You can validate the MCP server configuration locally:
npm run validate-mcp
This will download the latest MCP schema and validate your server.json
file.
If you need to publish manually, you can use the MCP Publisher CLI:
# Install MCP Publisher
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
chmod +x mcp-publisher
sudo mv mcp-publisher /usr/local/bin/
# Login to MCP Registry
mcp-publisher login github-oidc
# Publish to MCP Registry
mcp-publisher publish
- Install dependencies:
npm install
- Build the server:
npm run build
- For development with auto-rebuild:
npm run watch
Run the test suite:
npm test
This 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 inspector
This 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}}.
- 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