Skip to main content
Glama
README.md
# anki-mcp

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
[![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
[![CI](https://github.com/chaosisnotrandomitisrhythmic/anki-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/chaosisnotrandomitisrhythmic/anki-mcp/actions/workflows/ci.yml)

MCP server for [Anki](https://apps.ankiweb.net/) via [AnkiConnect](https://foosoft.net/projects/anki-connect/) — create, search, and manage flashcards directly from Claude Code or any MCP client.

## Features

- **Card CRUD** — create (bulk with duplicate detection), search, update, delete
- **Deck management** — list, create (supports `::` hierarchy)
- **Archive & sync** — export/import `.apkg` files, trigger AnkiWeb sync
- **Progress analytics** — deck maturity, Interest Heat Score (which topics you retain best), study streak
- **Conversation extraction** — `/anki extract` scans a conversation for learnable moments and proposes cards
- **Daily progress script** — cron-friendly report generator that reads Anki's SQLite directly
- **Claude Code skill** — interactive card creation via `/anki` slash command

## Requirements

- Python 3.13+
- [uv](https://docs.astral.sh/uv/)
- [Anki](https://apps.ankiweb.net/) desktop running
- [AnkiConnect](https://ankiweb.net/shared/info/2055492159) addon installed (addon code `2055492159`)
- [Claude Code](https://claude.ai/code) or any MCP client

## Installation

```bash
git clone https://github.com/chaosisnotrandomitisrhythmic/anki-mcp.git
cd anki-mcp
uv sync
```

## Usage

Add to your MCP config (`~/.claude/settings.json`, project `.mcp.json`, or Claude Desktop config):

```json
{
  "mcpServers": {
    "anki": {
      "command": "uv",
      "args": ["--directory", "/path/to/anki-mcp", "run", "anki-mcp"]
    }
  }
}
```

## Tools

| Tool | Description |
|------|-------------|
| `add_notes` | Create flashcards (bulk, with duplicate detection) |
| `search_notes` | Find cards using Anki query syntax |
| `update_note` | Edit a card's fields or tags |
| `delete_notes` | Remove cards by ID |
| `list_decks` | All decks with card counts (new/learn/review) |
| `create_deck` | Create a deck (supports `::` hierarchy) |
| `export_deck` | Export deck to `.apkg` (optionally archive + delete) |
| `import_deck` | Restore `.apkg` from archive |
| `sync` | Trigger AnkiWeb sync |
| `progress` | Learning report with Interest Heat Score |
| `health` | Check AnkiConnect connectivity |

## Configuration

All configuration is via environment variables with sensible defaults:

| Variable | Description | Default |
|----------|-------------|---------|
| `ANKI_MCP_ARCHIVE_DIR` | Directory for `.apkg` exports/imports | `~/.local/share/anki-mcp/archive` |
| `ANKI_DB_PATH` | Path to Anki's `collection.anki2` | Platform-aware (macOS: `~/Library/Application Support/Anki2/User 1/collection.anki2`, Linux: `~/.local/share/Anki2/User 1/collection.anki2`) |
| `ANKI_MCP_OUTPUT_DIR` | Directory for daily progress reports | `~/Anki Progress` |

## Daily Progress Script

A standalone script that reads Anki's SQLite database and generates a Markdown progress report. Works even when Anki is running (read-only via WAL mode).

```bash
# Run manually
cd /path/to/anki-mcp && uv run python scripts/daily_progress.py

# Cron example (daily at 7:03 AM)
3 7 * * * cd /path/to/anki-mcp && uv run python scripts/daily_progress.py
```

The report includes deck overview, Interest Heat Score, and study streak.

## Claude Code Skill

The `skills/SKILL.md` file provides a Claude Code skill for interactive card creation. It supports:

- `/anki` — manual card creation
- `/anki extract` — scan conversation for extractable knowledge and create cards
- `/anki progress` — show learning progress

## Uninstallation

1. Remove the `anki` entry from `mcpServers` in your MCP config
2. Optionally remove the skill: `rm -rf ~/.claude/skills/anki/`
3. Optionally delete the archive directory (`~/.local/share/anki-mcp/` by default)
4. Remove the repo: `rm -rf /path/to/anki-mcp`

Your Anki cards are stored in Anki itself — nothing is lost by removing this server.

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md).

## Security

See [SECURITY.md](SECURITY.md).

## License

[MIT](LICENSE)

TDQS

A3.8/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct operation (note CRUD, deck management, import/export, sync, progress, health) with no overlapping purposes. Even similar operations like add_notes and update_note are clearly differentiated by their descriptions.

Naming Consistency4/5

The dominant pattern is verb_noun (add_notes, search_notes, list_decks, export_deck), but a few single-word tools (sync, progress, health) deviate. These are still unambiguous and readable, so only a minor inconsistency exists.

Tool Count5/5

11 tools are well-scoped for an Anki MCP server, covering note management, deck operations, backup/restore, sync, and analytics without unnecessary bloat. Count falls comfortably in the ideal range.

Completeness4/5

Core CRUD for notes is complete (add, search, update, delete). Deck management lacks a direct delete_deck tool, though export_deck's archive option provides an indirect workaround. Sync and progress round out the lifecycle, leaving only minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues