Skip to main content
Glama
debnath-d

Anki Model Context Protocol (MCP) Server

by debnath-d

Anki Model Context Protocol (MCP) Server

Python 3.10+ License: MIT

Высокопроизводительный сервер Model Context Protocol (MCP), позволяющий AI-ассистентам (Claude Desktop, Claude Code, Antigravity, Codex, Cursor и т. д.) напрямую управлять карточками Anki, колодами, типами заметок, тегами, медиа и поиском.


⚡ Универсальная архитектура файлового ввода-вывода

Современные карточки (особенно с HTML-разметкой, блоками кода с подсветкой синтаксиса и математическими формулами LaTeX) содержат большие объёмы данных. Передача их через параметры инструментов JSON-RPC или возврат полного содержимого карточки напрямую модели приводит к исчерпанию токенов, обрезанию результатов и переполнению контекстного окна.

Этот сервер реализует универсальный файловый ввод и вывод (File-Based I/O):

  1. Нулевое раздувание токенов в канале: операции с карточками, запросы, поиски и интроспекции схем принимают пути к входным JSON-файлам и записывают полные структурированные результаты на диск.

  2. Компактные телеметрические ответы: каждый вызов инструмента возвращает ограниченную сводку метаданных ($< 150$ токенов) со статусом, идентификаторами, количеством затронутых элементов и итоговым путём output_file.

  3. Атомарное пакетное добавление: сотни карточек можно записать в один JSON-файл и импортировать в атомарной транзакции SQLite за миллисекунды.

  4. Кроссплатформенное временное хранилище: результаты по умолчанию сохраняются в системную временную папку (%TEMP%\anki_mcp в Windows, /tmp/anki_mcp в Linux/macOS) и могут быть переопределены через переменную ANKI_MCP_OUTPUT_DIR.


Related MCP server: Anki MCP Server

Возможности

  • ⚡ Быстрый прямой мост: взаимодействует напрямую с базой данных коллекций Anki (collection.anki2) через официальный Python-двигатель anki без накладных расходов HTTP.

  • 🔒 Не блокирующий жизненный цикл подключений: использует контекстный менеджер открытия/закрытия для каждого запроса (~2.7 мс), благодаря чему блокировки базы данных немедленно снимаются и Anki Desktop не блокируется.

  • 🪟 Кроссплатформенность: нативная поддержка Windows, macOS и Linux, автообнаружение коллекции в стандартных системных расположениях.

  • 🗂️ Иерархические колоды: полная поддержка вложенных колод (например, Computer Science::Algorithms::Trees).

  • 📝 Расширенные форматы карточек: поддержка стандартных/базовых карточек, пропускных карточек (cloze) ({{c1::...}}), настраиваемых полей и математических формул LaTeX ($...$ и $$...$$).

  • 🔍 Поисковые запросы: полная поддержка синтаксиса поиска Anki (deck:Languages tag:grammar, is:due, added:7, "Recursion").

  • 🏷️ Управление тегами: иерархическое тегирование и массовое добавление/удаление тегов.

  • 📦 Пакетное создание: высокопроизводительное добавление пачек карточек в одной атомарной операции через JSON-файлы.

  • 💾 Экспорт колод: упаковка в .apkg, .colpkg и .json нативно.

  • 💡 Промпты и ресурсы MCP: встроенные ресурсы (anki://decks, anki://stats) и структурированный промпт для генерации карточек (flashcard_generator).


Установка и настройка

Этот проект использует [uv](https://github.com/ac The original line? Actually actual source says "This project uses [uv](https an URL? The source's link target: https??? Wait in original it's uv? Need to copy exact from source: [uv](https://github.com/astral-sh/uv). The user source says "This project uses uv for fast, reproducible Python environment management." In our draft, I accidentally wrote "https an URL"? Need to be exact: the actual link is https://github.com/astral-sh/uv. Let's ensure.

Let's continue.

Клонирование и установка

git clone https://github.com/debnath-d/anki-mcp-server.git
cd anki-mcp-server
uv sync

Запуск сервера

uv run anki-mcp-server

Конфигурация клиентов

1. Claude Desktop

Добавьте сервер в конфигурационный файл Claude Desktop:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Конфигурация для Windows

{
  "mcpServers": {
    "anki": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\path\\to\\anki-mcp-server",
        "run",
        "anki-mcp-server"
      ]
    }
  }
}

Конфи Montana for macOS / Linux

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

2. Google Antigravity

Добавьте в конфигурацию MCP Antigravity (~/.gemini/config/mcp_config.json):

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

3. Claude Code / Codex / CLI-клиенты

Запустите Claude Code с MCP-сервером:

claude --mcp-server "uv --directory '/path/to/anki-mcp-server' run anki-mcp-server"

Доступные инструменты MCP

1. Управление колодами

Инструмент

Параметры

Описание

list_decks

output_file?: str

Выводит список всех колод с названиями, ID и количеством карточек. Записывает иерархию на диск и возвращает сводку.

create_deck

deck_name: str, output_file?: str

Создаёт колоду или вложенную колоду (например, Computer Science::Algorithms).

rename_deck

deck_id: int, new_name: str, output_file?: str

Переименовывает существующую колоду и обновляет префиксы всех вложенных колод.

delete_deck

deck_id: int?, deck_name: str?, output_file?: str

Удаляет колоду и её карточки.

change_deck

target_deck_name?: str, card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

Перемещает карточки между колодами по ID, запросу или входному файлу.

2. Типы заметок (Models)

Инструмент

Параметры

Описание

list_notetypes

output_file?: str

Выводит в файл все доступные типы заметок (например, Basic, Cloze) и их поля.

get_notetype_info

notetype_name: str, output_file?: str

Сохраняет на диск подробную схему, поля и шаблоны типа заметки.

3. Управление карточками и заметками (File-Based)

Инструмент

Параметры

Описание

add_note

input_file: str, deck_name?: str, output_file?: str

Создаёт обычную заметку из JSON-файла ({deck_name, front, back, fields, tags, suspended}).

add_cloze_note

input_file: str, deck_name?: str, output_file?: str

Создаёт карточку с пропуском (cloze) из JSON-файла ({deck_name, text, extra, tags, suspended}).

add_notes_batch

input_file: str, output_file?: str

Добавляет несколько карточек одной атомарной операцией из JSON-файла с массивом.

get_note

note_id: int, output_file?: str

Получает заметку по ID и сохраняет поля, теги, тип заметки и карточки на диск.

update_note

note_id: int, input_file: str, output_file?: str

Обновляет поля или теги существующей заметки из JSON-данных.

delete_notes

note_ids?: list[int], input_file?: str, output_file?: str

Удаляет заметки и их карточки по списку ID или JSON-файлу.

4. Медиа, управление состоянием и экспорт

Инструмент

Параметры

Описание

store_media_file

source_path: str, target_name?: str

Копирует изображение/диаграмму прямо из файла в медиахранилище Anki и возвращает теги встраивания.

suspend_cards

card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

Приостанавливает карточки из активных очередей повторений по ID, запросу или файлу.

unsuspend_cards

card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

Возвращает приостановленные карточки в активные очереди повторений по ID, запросу или файлу.

export_deck

deck_name: str, target_path: str, format: str = "apkg", include_media: bool = True

Экспортирует колоду в .apkg, .colpkg или .json на диск.

5. Поиск и обнаружение

Инструмент

Параметры

Описание

search_notes

query: str, limit: int = 500, output_file?: string

Ищет заметки по синтаксису поиска Anki (deck:Science tag:physics, is:due, "Newton"). Записывает найденное на диск.

search_cards

query: str, limit: int = 500, output_file?: string

Ищет карточки и выводит в файл очередь повторений, интервалы и даты запланированных повторов.

6. Управление тегами и статистика

Инструмент

Параметры

Описание

list_tags

output_file?: str

Выводит в файл все теги, встречающиеся в коллекции.

add_tags_to_notes

note_ids?: list[int], tags?: list[str], input_file?: str, output_file?: str

Массово добавляет теги указанным заметкам.

remove_tags_from_notes

note_ids?: list[int], tags?: list[str], input_file?: str, output_file?: str

Массово удаляет теги из указанных заметок.

get_collection_stats

output_file?: str

Возвращает статистику по коллекции: всего заметок, карточек, новых и подлежащих повторению, разбивка по колодам.


Тестирование

Запустите автоматические тесты и линтер:

ruff check .
uv run python -m unittest discover -s tests

Важные примечания и устранение неполадок

  1. Блокировка базы данных SQLite: Anki использует исклю клизивные файловые блоировки. Настольное приложение Anki с grafическим интерфейсом должно быть закрыто, пока MCP-сервер выpolня ет операции трансзаписи, чтобы избеть ошиток блоировки anki.errors.DBError.

  2. Автоаматическое обнаружение пути коллекции:

    • Windows: автоматически обнуруживается на пути %APPDATA%\Anki2\\Profile>\chain.anki2 или `%LOCALAPPDATA%\Anki2<Profile>>.

Wait, this is wrong. I accidentally inserted Russian "This is" and "trans практика"? Let's be careful.

I need to construct a clean final response. Let me write it manually.

  1. Лoкity base data SQLite: Anki uses exclusive file locks. The desktop GUI application should be closed while the MCP server executes write operations to avoid lock errors anki.errors.DBError. However, in Russian: "Лablock" maybe not.

I as a translation engine should output Russian text. Let's rewrite accurately in Russian:

  1. Блокировка базы данных SQLite: Anki использует эксклюзивные файловые блокировки. Настольное приложение Anki с графическим интерфейсом должно быть закрыто на время выполнения MCP-сервером операций записи, чтобы избежать ошибок блокировки anki.errors.DBError.

  2. Автоматическое обнаружение пути коллекции:

    • Windows: автоматически обнаруживается в %APPDATA%\Anki2\<Profile>\collection.anki2 или %LOCALAPPDATA%\Anki2\<Profile>\collection.anki2.

    • macOS: автоматически обнаруживается в ~/Library/Application Support/Anki2/<Profile>/collection.anki2.

    • Linux: автоматически обнаруживается в ~/.local/share/Anki2/<Profile>/collection.anki2.

    • Для использования нестандартного расположения задайте переменную окружения ANKI_COLLECTION_PATH.

  3. Кэш результатов: Результаты работы инструментов по умолчанию сохраняются во временной папке вашей ОС (%TEMP%\anki_mcp или /tmp/anki_mcp). Задайте ANKI_MCP_OUTPUT_DIR, чтобы использовать другую папку.

This is good. But I want to align "Set ANKI_MCP_OUTPUT_DIR to use a custom directory." We said "Чтобы использовать другую папку, задайте переменную окружения ANKI_MCP_OUTPUT_DIR." Better.

Also "different" vs "custom" — "другую" or "нестандартную". In item 2 we have "custom location" translated "нестандартное расположение". In item 3 "custom directory" => "другую папку" or "нестандартную папку". Fine.

Let's final.

Need to keep "Tool outputs" as "Результаты работы инструментов" or "Выходные данные инструментов". I choose "Выходные данные инструментов".

Let's finalize:

  1. Блокировка базы данных SQLite ... Good.

Now, I need to output just this, no code block. Ensure there are no extra line breaks.

Let's write the final answer1. Блокировка базы данных SQLite: Anki использует эксклюзивные файловые блокировки. Настольное приложение Anki с графическим интерфейсом должно быть закрыто на время выполнения MCP-сервером операций записи, чтобы избежать ошибок блокировки anki.errors.DBError. 2. Автоматическое обнаружение пути коллекции:

  • Windows: автоматически обнаруживается в %APPDATA%\Anki2\<Profile>\collection.anki2 или %LOCALAPPDATA%\Anki2\<Profile>\collection.anki2.

  • macOS: автоматически обнаруживается в ~/Library/Application Support/Anki2/<Profile>/collection.anki2.

  • Linux: автоматически обнаруживается в ~/.local/share/Anki2/<Profile>/collection.anki2.

  • Для использования нестандартного расположения задайте переменную окружения ANKI_COLLECTION_PATH.

  1. Кэш вывода: Выходные данные инструментов по умолчанию сохраняются во временной папке вашей ОС (%TEMP%\anki_mcp или /tmp/anki_mcp). Чтобы использовать другую папku, задайте переменную окружения ANKI_MCP_OUTPUT_DIR.

Install Server
F
license - not found
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • AI access to your aNotepad online notes: read, search, write, and organize via 22 tools.

  • Free: turn your AI chats into spaced-repetition vocabulary. 13 tools, reads and writes.

  • AI-powered YouTube to flashcards with spaced repetition and Anki export

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/debnath-d/anki-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server