anki-mcp/anki-mcp-desktop

anki-mcp/anki-mcp-desktop

от anki-mcp
Управляет колодами и карточками Anki: создаёт заметки, редактирует поля, проводит повторения по расписанию и синхронизирует с AnkiWeb.

Anki MCP Server

Tests npm version

Anki + MCP Integration

Seamlessly integrate Anki with AI assistants through the Model Context Protocol

Важно

Prefer the AnkiMCP addon for most setups.

The addon (GitHub) runs the MCP server directly inside Anki. There is no Node.js to install, no AnkiConnect to configure, no separate process to keep running: install it with code 124672614, restart Anki, and the server is up every time Anki opens. It covers local HTTP access and remote access through a built-in tunnel.

This repository is the right choice when you specifically need:

  • STDIO transport — Claude Desktop, Claude Code, Cursor, or any client that spawns the server as a subprocess
  • MCPB bundle — the one-click .mcpb install for Claude Desktop

For HTTP, tunnel, or web-based clients (claude.ai, ChatGPT), the addon is the simpler and better-supported path.

This repo is not being deprecated. It stays maintained and released alongside the addon as part of the same ankimcp.ai project.

A Model Context Protocol (MCP) server that enables AI assistants to interact with Anki, the spaced repetition flashcard application.

Часто задаваемые вопросы

Инструменты были проиндексированы:
addModelField

Добавляет новое поле в существующий тип заметки Anki (модель). По умолчанию поле добавляется в конец или вставляется в заданную позицию. У существующих заметок этого типа новое поле будет пустым. modelFieldNames перечисляет текущие поля.

Параметры
  • fieldNamestringобязательный

    Название нового поля для добавления (например, "Grammar", "IPA", "Example")

  • indexinteger

    Позиция для вставки поля (отсчёт с нуля). Если не указано, поле добавляется в конец.

  • modelNamestringобязательный

    Название типа заметки для изменения (например, «Basic», «Latin Vocabulary»)

addNote

Добавляет ОДНУ заметку в Anki. Инструмент пакетного добавления addNotes создаёт несколько заметок за один вызов: AnkiConnect обрабатывает запросы по одному, поэтому повторные (особенно параллельные) вызовы addNote работают медленнее. modelNames перечисляет доступные типы заметок, а modelFieldNames перечисляет их поля. Возвращает ID заметки при успешном выполнении. Заметка и её карточки добавляются в коллекцию пользователя и появляются в его повторениях.

Параметры
  • allowDuplicateboolean

    Разрешать ли добавление повторяющихся заметок

  • deckNamestringобязательный

    Колода, в которую нужно добавить заметку

  • duplicateScopeenum

    Область проверки дубликатов

  • duplicateScopeOptionsobject

    Расширенные параметры проверки дубликатов

  • fieldsobjectобязательный

    Значения полей в виде пар ключ-значение (например, {"Front": "question", "Back": "answer"})

  • modelNamestringобязательный

    Тип/модель заметки для использования (например, «Базовая», «Пропуски»)

  • tagsstring[]

    Необязательные теги для добавления к заметке.

addNotes

Добавляет несколько заметок в Anki одним пакетом - быстрее, чем повторные вызовы addNote, если заметок больше одной. До 100 заметок с одной и той же колодой и моделью. Дубликаты пропускаются по отдельности; ошибки валидации (пустые обязательные поля, неправильные теги) отклоняют весь пакет. Заметки и их карточки добавляются в коллекцию пользователя и появляются в его повторениях.

Параметры
  • allowDuplicateboolean

    Разрешать ли добавление повторяющихся заметок

  • deckNamestringобязательный

    Куда добавлять все заметки

  • duplicateScopeenum

    Область проверки дубликатов

  • modelNamestringобязательный

    Тип/модель заметки для всех заметок (например, «Basic», «Cloze»)

  • notesobject[]обязательный

    Массив заметок для создания (1-100)

  • tagsstring[]

    Теги, применяемые ко всем заметкам (объединяются с тегами отдельных заметок)

addTagsидемпотентный

Добавляет теги к указанным заметкам. Tags - строка с тегами через пробел (например, "tag1 tag2 tag3"). getTags выводит список существующих тегов, что помогает избежать почти одинаковых (например, "roman-empire" против "roman_empire").

Параметры
  • notesnumber[]обязательный

    Массив ID заметок для изменения

  • tagsstringобязательный

    Теги, разделённые пробелами, для добавления (например, "tag1 tag2")

areSuspendedтолько чтениеидемпотентный

Проверяет, приостановлены ли карточки, ничего не изменяя. Идентификаторы карточек (не идентификаторы заметок), используйте get_cards, get_due_cards или notesInfo, чтобы получить их. Ответ сохраняет порядок ввода; идентификатор карточки, которого не существует, возвращается со значением suspended: null, а не отбрасывается и не вызывает ошибку, поэтому один неверный идентификатор не приводит к сбою всего пакета.

Параметры
  • cardsinteger[]обязательный

    Массив идентификаторов карточек (максимум 500). Идентификаторы карточек (не идентификаторы заметок): используйте get_cards, get_due_cards или notesInfo, чтобы получить их.

changeDeckидемпотентный

Перемещает карты в другую колоду. Целевая колода будет создана, если её не существует.

Параметры
  • cardsnumber[]обязательный

    Массив идентификаторов карточек для перемещения

  • deckstringобязательный

    Имя целевой колоды

clearUnusedTagsидемпотентный

Удаляет осиротевшие теги, которые не используются ни одной заметкой в коллекции, сразу по всей коллекции. Удалённые теги исчезают из списка тегов Anki (включая теги, которые пользователь создал, но ещё не применил); заметки не меняются.

Параметры

Без параметров.

collection_statsтолько чтениеидемпотентный

Получает агрегированную статистику по всем колодам в коллекции, включая количество карточек, распределение фактора лёгкости и распределение интервалов. Возвращает ДВА разных представления, которые отвечают на разные вопросы: counts и per_deck - это сегодняшняя очередь изучения, как она показана в браузере колод Anki (карточки, СРОК КОТОРЫХ СЕГОДНЯ, ограниченные дневными лимитами новых/повторяемых карточек каждой колоды, приостановленные/отложенные исключены); states - это истинное количество карточек в каждом состоянии (new / learning / review / suspended / buried) по всей коллекции, без учёта сроков и дневных лимитов. Чтобы ответить на вопрос «сколько у меня карточек», используйте states; чтобы ответить на вопрос «что я буду изучать сегодня», используйте counts. Счётчики по колодам сворачиваются по потомкам (родительская колода включает свои дочерние); counts на уровне коллекции суммирует только КОРНЕВЫЕ колоды, чтобы не считать дочерние дважды. states работает только по всей коллекции (это стоит 5 дополнительных поисков в Anki на каждый вызов) - вызывайте инструмент deckStats для истинных счётчиков состояний отдельной колоды. Для каждой колоды и для коллекции: обычно total === new + learning + review + other; other ограничивается снизу нулём, поэтому в редких случаях с фильтрованными колодами / унаследованными лимитами сумма может превысить total. Корзины фактора лёгкости и интервалов можно настроить, чтобы сосредоточиться на конкретных диапазонах.

Параметры
  • ease_bucketsnumber[]

    Границы корзин для распределения коэффициента лёгкости. По умолчанию: [2.0, 2.5, 3.0]. Пример: [2.0, 2.5, 3.0] создаёт корзины: <2.0, 2.0-2.5, 2.5-3.0, >3.0

  • interval_bucketsnumber[]

    Границы интервалов для распределения по дням. По умолчанию: [7, 21, 90]. Пример: [7, 21, 90] создает интервалы: <7д, 7-21д, 21-90д, >90д

createDeckидемпотентный

Создаёт новую пустую колоду Anki. Использует "::" для структуры родитель::потомок (максимум 2 уровня, например, "Japanese::JLPT N5"). Не перезаписывает существующие колоды.

Параметры
  • deckNamestringобязательный

    Название колоды для создания. Используйте "::" для структуры родитель::потомок (не более 2 уровней).

createModel

Создаёт новый тип заметок (модель) в Anki с пользовательскими полями, шаблонами карточек и стилями. Полезен для создания специализированных моделей, например, моделей для языков с написанием справа налево (RTL), таких как иврит, арабский и т.д. Каждая модель определяет структуру заметок и то, как из них создаются карточки.

Параметры
  • cardTemplatesobject[]обязательный

    Шаблоны карточек (требуется минимум один). Каждый шаблон создаёт одну карточку для каждой заметки.

  • cssstring

    Необязательная CSS-стилизация для карточек. Для RTL-языков добавьте "direction: rtl;" в класс .card.

  • inOrderFieldsstring[]обязательный

    Имена полей по порядку (например, ["Front", "Back"]). Требуется хотя бы одно поле.

  • isClozeboolean

    Создать как модель клозе (по умолчанию: нет)

  • modelNamestringобязательный

    Уникальное имя для новой модели (например, «Basic RTL», «Advanced Vocabulary»)

deckStatsтолько чтениеидемпотентный

Получает подробную статистику по одной колоде: количество карточек, распределение ease и интервалов. Принимает имя колоды (например, "Japanese::JLPT N5") и необязательные границы диапазонов. Возвращает ДВА разных представления, которые отвечают на разные вопросы: counts - это сегодняшняя очередь изучения, как её показывает браузер колод Anki (карточки, СРОК КОТОРЫХ НАСТУПИЛ СЕГОДНЯ, ограниченные дневными лимитами колоды на новые и повторяемые карточки, приостановленные и отложенные исключены); states - это реальное число карточек в каждом состоянии (new / learning / review / suspended / buried), без учёта сроков и дневных лимитов. Чтобы ответить на вопрос "сколько у меня карточек", используй states; чтобы ответить "что я буду учить сегодня" - counts. Оба представления сворачиваются по дочерним колодам (родительские колоды включают свои дочерние). states стоит 5 дополнительных поисков в Anki за вызов. Для counts: обычно total === new + learning + review + other; other ограничен снизу нулём, поэтому в редких случаях с фильтрованными колодами или унаследованными лимитами сумма может превысить total.

Параметры
  • deckstringобязательный

    Название колоды (например, "Japanese::JLPT N5")

  • easeBucketsnumber[]

    Границы корзин для распределения фактора лёгкости. По умолчанию: [2.0, 2.5, 3.0]

  • intervalBucketsnumber[]

    Границы интервалов для распределения по дням. По умолчанию: [7, 21, 90]

deleteMediaFileидемпотентный

Удаляет медиафайл из папки collection.media в Anki (Anki перемещает его в свою корзину медиафайлов). Карточки, которые ссылаются на этот файл, перестают его показывать или воспроизводить; удаление также доходит до других устройств при следующей синхронизации с AnkiWeb.

Параметры
  • filenamestringобязательный

    Имя медиафайла для удаления (например, "old_audio.mp3")

deleteNotesидемпотентный

Удаляет заметки по их ID. Безвозвратно удаляет заметки и ВСЕ их карточки, включая расписание карточек. История отмены в Anki (Правка > Отменить или guiUndo, который откатывает последнее действие) может восстановить их, пока эта история не очищена, например, изменением, которое Anki не записывает для отмены, таким как updateNoteFields; после этого их восстановит только резервная копия. Вызов отклоняется, если confirmDeletion не true.

Параметры
  • confirmDeletionbooleanобязательный

    Подтверждает безвозвратное удаление этих заметок и их карточек; вызов отклоняется, если это не так.

  • notesnumber[]обязательный

    Массив идентификаторов заметок для удаления (максимум 100 за раз для безопасности). Получите эти идентификаторы из инструмента findNotes. ВСЕ карточки, связанные с этими заметками, будут удалены.

findNotesтолько чтениеидемпотентный

Ищет заметки по синтаксису запросов Anki. Возвращает массив ID заметок, соответствующих запросу. Примеры: "deck:Spanish", "tag:verb", "is:due", "front:hello", "added:1" (карточки, добавленные сегодня), "prop:due<=2" (карточки, срок которых наступает в течение 2 дней), "flag:1" (красный флажок), "is:suspended"

Параметры
  • querystringобязательный

    Поисковый запрос Anki. Используйте синтаксис запросов Anki, например "deck:ИмяКолоды", "tag:имятега", "is:due", "is:new", "is:review", "front:текст", "back:текст", или комбинируйте с пробелами для И, OR для альтернатив. Пустая строка возвращает все заметки.

forgetCardsидемпотентный

Сбрасывает карточки в очередь новых, отбрасывая их текущее расписание (интервал, дату повторения и коэффициент лёгкости). Используйте это, когда карточку нужно выучить заново с нуля - например, когда пользователь постоянно не может вспомнить слово, которое Anki запланировал на месяцы вперёд. Предпочтите это оценке карточки «Снова»: оценка фиксирует реальное повторение и считается ошибкой, что искажает и будущее расписание, и статистику коллекции. Журнал повторений сохраняется, поэтому прошлые повторения по-прежнему видны в информации о карточке и статистике. Это меняет только расписание - содержимое заметки, теги и размещение в колоде не затрагиваются. Карточки, которые уже новые, не затрагиваются, поэтому повторный запуск безопасен.

Параметры
  • cardsinteger[]обязательный

    Массив ID карточек для сброса в новые (не более 100). ID карточек (не ID заметок): используйте get_cards, get_due_cards или notesInfo, чтобы получить их.

get_cardsтолько чтениеидемпотентный

Извлекает карточки из Anki с гибкой фильтрацией по колоде и состоянию карточки. Читает локальную коллекцию как есть и не синхронизируется с AnkiWeb, поэтому повторения, сделанные на других устройствах после последней синхронизации, не отражаются. Ответы по умолчанию не включаются (include_answer=false), поэтому обратная сторона карточки не попадает в диалог, пока её не покажет present_card; include_answer=true возвращает и обратные стороны, что подходит для анализа содержимого или редактирования, а не для живого повторения.

Параметры
  • card_stateenum

    Фильтровать по состоянию карточки: 'due' (карточки, ожидающие повторения), 'new' (ещё не просмотренные), 'learning' (в очереди на изучение), 'suspended' (приостановленные вручную), 'buried' (временно скрытые).

  • deck_namestring

    Конкретная колода, из которой нужно получить карточки. Если не указано, карточки берутся из всех колод.

  • include_answerboolean

    Указывает, включать ли ответ (обратную сторону) каждой карточки. По умолчанию false, поэтому ответы не видны, пока пользователь не откроет их через present_card; true подходит для анализа содержимого или редактирования, а не для просмотра в реальном времени.

  • limitnumber

    Максимальное количество возвращаемых карточек

get_due_cardsтолько чтениеидемпотентный

Получает карточки, которые пора повторить, из Anki. Читает локальную коллекцию как есть и не синхронизируется с AnkiWeb, поэтому повторы, сделанные на других устройствах после последней синхронизации, не отражаются. Ответы по умолчанию не включаются (include_answer=false), поэтому обратная сторона карточки не попадает в диалог, пока present_card её не покажет; include_answer=true возвращает и обратные стороны, что подходит для анализа содержимого или редактирования, а не для живого повторения.

Параметры
  • deck_namestring

    Конкретная колода, из которой нужно получить карточки. Если не указано, карточки берутся из всех колод.

  • include_answerboolean

    Указывает, включать ли ответ (обратную сторону) каждой карточки. По умолчанию false, поэтому ответы не видны, пока пользователь не откроет их через present_card; true подходит для анализа содержимого или редактирования, а не для просмотра в реальном времени.

  • include_learningboolean

    Включать карточки на этапе обучения (просмотренные, но ещё не завершившие обучение). По умолчанию: true

  • include_newboolean

    Включать новые карточки (еще не просмотренные). По умолчанию: выкл

  • limitnumber

    Максимальное количество возвращаемых карточек

getMediaFilesNamesтолько чтениеидемпотентный

Перечисляет медиафайлы в папке collection.media программы Anki, опционально отфильтрованные по шаблону в стиле glob.

Параметры
  • patternstring

    Необязательный шаблон фильтра (например, "*.mp3")

getTagsтолько чтениеидемпотентный

Получите все теги в коллекции Anki. Используйте это, чтобы выявить существующие теги перед созданием заметок и тем самым сохранить согласованность и предотвратить дублирование тегов (например, избегая вариантов 'roman-empire' vs 'roman_empire' vs 'RomanEmpire').

Параметры
  • patternstring

    Необязательный шаблон фильтра - возвращает только теги, содержащие эту строку (без учета регистра).

guiAddCardsидемпотентный

Открывает диалог Add Cards в настольном приложении Anki на экране пользователя, заранее заполненный колодой, типом заметки, полями и тегами (заменяя уже открытый диалог Add Cards), и делает эту колоду и этот тип заметки текущими в Anki. Ничего не сохраняется, пока пользователь не нажмёт Add, поэтому возвращаемый noteId не ссылается на сохранённую заметку. Для случаев, когда пользователь хочет просмотреть и доделать заметку вручную в Anki; addNote создаёт заметки напрямую.

Параметры
  • noteobjectобязательный
guiBrowseидемпотентный

Открывает окно Card Browser в десктопном приложении Anki на экране пользователя и запускает в нём поиск (синтаксис запросов Anki). Возвращает ID подходящих карточек. Для случаев, когда пользователь просит открыть браузер, например, чтобы найти и отредактировать заметки вручную; findNotes ищет без открытия окна. Не часть сессии повторения.

Параметры
  • querystringобязательный

    Поисковый запрос Anki со стандартным синтаксисом (например, "deck:Spanish tag:verb", "is:due", "added:7")

  • reorderCardsobject

    Необязательное изменение порядка карточек в браузере

guiCurrentCardтолько чтениеидемпотентный

Читает карточку, которая сейчас показана на экране повторения в десктопном приложении Anki: вопрос, ответ, поля, колоду, тип заметки и кнопки ответа. Ничего не меняет на экране. Результат всегда содержит ответ, поэтому если вызвать инструмент, пока пользователь повторяет в Anki, ответ раскроется до того, как он ответит; present_card умеет показывать карточку без ответа. Когда Anki не в режиме повторения, AnkiConnect сообщает об ошибке ('Gui review is not currently active.').

Параметры

Без параметров.

guiDeckBrowserидемпотентный

Переключает главное окно настольного приложения Anki на экране пользователя на список колод (Deck Browser), при этом окно покидает любой экран, на котором находилось, например незавершённое повторение. Нужен, когда пользователь просит показать свои колоды в Anki; listDecks возвращает список колод, не меняя экран. Не входит в сессию повторения.

Параметры

Без параметров.

guiDeckOverviewидемпотентный

Делает колоду с указанным именем текущей колодой Anki и переключает главное окно настольного приложения Anki на экране пользователя на обзор этой колоды (счётчики к повторению и кнопка Study Now). Возвращает ошибку, если колоды не существует. Для случаев, когда пользователь просит открыть колоду в Anki; deckStats возвращает числа, не меняя экран. Не часть сессии повторения.

Параметры
  • namestringобязательный

    Название колоды для открытия (получить из listDecks)

guiEditNoteидемпотентный

Открывает окно редактора заметки в десктопном приложении Anki на экране пользователя для одной заметки, где пользователь может вручную редактировать её поля и теги. Сам инструмент не меняет содержимое заметки. Для случаев, когда пользователь хочет отредактировать заметку в Anki; updateNoteFields редактирует поля напрямую.

Параметры
  • notenumberобязательный

    ID заметки для редактирования (получить из findNotes или notesInfo)

guiSelectCardидемпотентный

Меняет выделение в окне Card Browser, открытом в настольном приложении Anki на экране пользователя, на одну карточку, сбрасывая предыдущее выделение. Возвращает ошибку, если Card Browser не открыт (guiBrowse открывает его). Для случаев, когда пользователь просит выбрать карточку в браузере. Не часть сессии повторения.

Параметры
  • cardnumberобязательный

    ID карточки для выбора в браузере (получить из результатов guiBrowse)

guiSelectedNotesтолько чтениеидемпотентный

Читает идентификаторы заметок, которые пользователь выбрал в окне Card Browser десктопного приложения Anki. Ничего не меняет на экране. Возвращает пустой список, если ничего не выбрано или окно Card Browser не открыто. Пригодится, когда пользователь ссылается на заметки, которые выбрал в Anki.

Параметры

Без параметров.

guiShowAnswerидемпотентный

Переворачивает карточку на экране повторения в десктопном приложении Anki на сторону ответа, на экране пользователя. Не возвращает содержимое карточки и не записывает повторение. inReview равен false (и ничего не меняется), когда Anki не в режиме повторения. Для случаев, когда пользователь просит показать ответ в Anki; инструменты повторения здесь (present_card, rate_card) запускают повторение без окна Anki.

Параметры

Без параметров.

guiShowQuestionидемпотентный

Переворачивает карточку на экране повторения в настольном приложении Anki обратно на сторону вопроса, на экране пользователя. Не возвращает содержимое карточки и не записывает повторение. inReview имеет значение false (и ничего не меняется), когда Anki не в режиме повторения. Для случаев, когда пользователь просит показать вопрос в Anki; здешние инструменты повторения (present_card, rate_card) запускают повторение без окна Anki.

Параметры

Без параметров.

guiUndo

Запускает в настольном приложении Anki команду Edit > Undo, откатывая то, что история отмены Anki хранит как последнее действие. Это может быть действие, которое пользователь выполнил в Anki, а не изменение, сделанное через этот сервер, а некоторые изменения AnkiConnect (например, updateNoteFields) вообще не записываются в эту историю. AnkiConnect сообщает об успехе, как только команда отправлена, даже если отменять было нечего. Для случаев, когда пользователь просит отменить что-то в Anki.

Параметры

Без параметров.

listDecksтолько чтениеидемпотентный

Перечисляет все колоды Anki, при необходимости со статистикой очереди изучения по каждой колоде. Эта статистика - это цифры из браузера колод Anki: карточки К ПОВТОРЕНИЮ СЕГОДНЯ, ограниченные дневными лимитами новых/повторных карточек для каждой колоды, исключая приостановленные и отложенные карточки, а НЕ суммарные значения по состояниям карточек. Инструмент deckStats (его блок states) и collection_stats возвращают настоящие счётчики по состояниям карточек. Читает локальную коллекцию, которая отражает другие устройства только на момент последней синхронизации с AnkiWeb.

Параметры
  • includeStatsboolean

    Добавь статистику по количеству карт для каждой колоды.

modelFieldNamesтолько чтениеидемпотентный

Получает названия полей для конкретного типа заметки (модели). Используйте это, чтобы узнать, какие поля обязательны при создании заметок этого типа.

Параметры
  • modelNamestringобязательный

    Название модели или типа заметки, для которой нужно получить поля.

modelNamesтолько чтениеидемпотентный

Получите список всех доступных названий типов заметок (моделей) в Anki. Используйте его, чтобы увидеть, какие типы заметок доступны перед созданием заметок.

Параметры

Без параметров.

modelStylingтолько чтениеидемпотентный

Получает стили CSS для конкретного типа заметок (model). Этот CSS используется при рендеринге карточек этого типа.

Параметры
  • modelNamestringобязательный

    Название модели или типа заметки, для которого нужно получить стилизацию.

modelTemplatesтолько чтениеидемпотентный

Получить шаблоны карточек (HTML лицевой и обратной стороны) для конкретного типа заметок (модели). Возвращает HTML-содержимое лицевой и обратной сторон каждого шаблона карточки. Используйте это перед updateModelTemplates, чтобы увидеть текущие шаблоны и спланировать изменения.

Параметры
  • modelNamestringобязательный

    Имя типа модели/заметки, для которого нужно получить шаблоны.

notesInfoтолько чтениеидемпотентный

Получает поля, теги, название типа заметки (модели), ID карточек и время изменения для каждой заметки по ID заметки (из findNotes). CSS хранится для каждого типа заметки и не включается; modelStyling возвращает его.

Параметры
  • notesnumber[]обязательный

    Массив ID заметок, информацию о которых нужно получить (максимум 100 за раз для производительности). Берите эти ID из инструмента findNotes.

present_cardтолько чтениеидемпотентный

Возвращает отрендеренную лицевую сторону карточки, а также её колоду, тип заметки, теги и информацию о расписании. Обратная сторона включается только при show_answer=true, поэтому карточку можно показать пользователю ещё до того, как раскрыт ответ. Чтение карточки не записывает повторение; rate_card записывает.

Параметры
  • card_idnumberобязательный

    Идентификатор карты для получения.

  • show_answerboolean

    Включать ли содержимое ответа/возврата в ответ.

rate_card

Записывает реальное повторение карточки в планировщике Anki: оно добавляется в историю повторений и статистику карточки, а оценка задаёт следующую дату повторения карточки. Оценка должна отражать, насколько хорошо, по мнению самого пользователя, он вспомнил материал, и выставляется после просмотра ответа (present_card с show_answer=true).

Параметры
  • card_idnumberобязательный

    ID карточки, которую нужно оценить

  • ratingnumberобязательный

    Оценка пользователя для карточки: 1=Again (failed), 2=Hard, 3=Good, 4=Easy

removeModelField

Удаляет поле из существующего типа заметок Anki (model). Все данные, хранящиеся в этом поле во всех заметках этого типа, удаляются безвозвратно. Вызов отклоняется, если confirmDeletion не равен true. modelFieldNames перечисляет текущие имена полей.

Параметры
  • confirmDeletionbooleanобязательный

    Подтверждает, что все данные в этом поле будут безвозвратно удалены; вызов отклоняется, если это не так.

  • fieldNamestringобязательный

    Название поля для удаления (например, «Грамматика», «МФА»)

  • modelNamestringобязательный

    Название типа заметки для изменения (например, «Basic», «Latin Vocabulary»)

removeTagsидемпотентный

Удаляет теги из указанных заметок. Теги - это строка, разделённая пробелами (например, "tag1 tag2 tag3").

Параметры
  • notesnumber[]обязательный

    Массив ID заметок для изменения

  • tagsstringобязательный

    Теги, разделенные пробелами, для удаления (например, "tag1 tag2")

renameModelField

Переименовывает поле в существующем типе заметки Anki (model). Anki переписывает ссылки на старое имя в шаблонах карточек типа заметки (например, {{OldName}} становится {{NewName}}); затем Anki проверяет все шаблоны карточек при сохранении типа заметки, и если какой-то из них недействителен (например, не разбирается, ссылается на поле, которого нет в типе заметки, или не содержит поля на лицевой стороне), переименование не срабатывает. Имена полей чувствительны к регистру; modelFieldNames перечисляет текущие имена.

Параметры
  • modelNamestringобязательный

    Название типа заметки для изменения (например, «Basic», «Latin Vocabulary»)

  • newFieldNamestringобязательный

    Новое название для поля (например, «Грамматические заметки»)

  • oldFieldNamestringобязательный

    Текущее имя поля, которое нужно переименовать (например, «Заметки»)

replaceTagsидемпотентный

Переименовать тег в указанных заметках (например, «RomanEmpire» -> «roman-empire»). Только один тег; пробелы запрещены в обоих значениях.

Параметры
  • notesnumber[]обязательный

    Массив ID заметок для изменения

  • replaceWithTagstringобязательный

    Тег, который нужно заменить

  • tagToReplacestringобязательный

    Тег для поиска и замены

repositionModelFieldидемпотентный

Изменяет позицию поля в типе заметки Anki (model). Поля нумеруются с 0: индекс 0 - первое поле. (То, какое поле служит полем сортировки, задаётся отдельной настройкой модели и не меняется при смене позиции.) modelFieldNames перечисляет текущий порядок полей.

Параметры
  • fieldNamestringобязательный

    Название поля для перемещения (например, 'Grammar')

  • indexintegerобязательный

    Новая позиция поля с отсчетом от нуля (0 = первое поле).

  • modelNamestringобязательный

    Название типа заметки для изменения (например, «Basic», «Latin Vocabulary»)

retrieveMediaFileтолько чтениеидемпотентный

Скачивает медиа-файл из папки collection.media в Anki. Возвращает содержимое файла в кодировке base64 или null, если файл не найден.

Параметры
  • filenamestringобязательный

    Имя файла для загрузки (например, "pronunciation.mp3")

review_statsтолько чтениеидемпотентный

Получает анализ истории повторений, включая временные закономерности, метрики удержания и данные о серии занятий. Используйте его, чтобы анализировать прогресс обучения во времени, выявлять закономерности повторений и отслеживать регулярность. Требуется дата начала; колода необязательна - пропустите её, чтобы проанализировать всю коллекцию (все колоды). Дата окончания по умолчанию - сегодня. Дни считаются календарными (от полуночи до полуночи) в часовом поясе машины, где запущен сервер, то есть машины с Anki; час 'next day starts at' из Anki не применяется. Повторения карточек, удалённых позже, не учитываются, поэтому итоги могут быть ниже, чем в собственной статистике Anki.

Параметры
  • deckstring

    Название колоды для фильтрации повторений. Совпадает только с ТОЧНОЙ колодой — подколоды НЕ включаются, поэтому родительская колода всё равно возвращает повторения для карточек, назначенных непосредственно ей (но не для карточек её подколод). Опустите параметр (или передайте пустую строку), чтобы проанализировать всю коллекцию (все колоды).

  • end_datestring

    Дата окончания (по умолчанию — сегодня)

  • start_datestringобязательный

    Дата начала анализа (формат ISO: ГГГГ-ММ-ДД) - ОБЯЗАТЕЛЬНО

setDueDate

Переносит срок показа карточек на заданное количество дней, не записывая повторение. Используйте это, чтобы перенести карточку на более ранний срок (или отложить), когда её текущий интервал не соответствует тому, насколько хорошо пользователь на самом деле её знает: оценка карточки вместо этого запишет фиктивное повторение и исказит её фактор лёгкости. В отличие от forgetCards, этот инструмент сохраняет текущий интервал и лёгкость карточки, если вы не попросите иного, так что это более щадящий вариант, когда историю карточки ещё стоит сохранить. Обратите внимание: применение этого к новой карточке превращает её в карточку для повторения.

Параметры
  • cardsinteger[]обязательный

    Массив идентификаторов карточек, которые нужно перепланировать (максимум 100). Идентификаторы карточек (не заметок): используйте get_cards, get_due_cards или notesInfo, чтобы получить их.

  • daysstringобязательный

    Через сколько дней карточки становятся подлежащими повторению. "0" = сегодня, "1" = завтра, "3-7" = случайный день в этом диапазоне включительно (распределяет пачку по дням, а не складывает всё на один день). Добавьте "!", например "1!", чтобы также перезаписать интервал карточки этим значением, а не оставлять существующий интервал без изменений.

storeMediaFileвнешний мир

Загружает медиафайл в папку collection.media Anki. Поддерживает данные base64, абсолютные пути к файлам и URL-адреса. По умолчанию файл с таким же именем перезаписывается.

Параметры
  • datastring

    Содержимое файла, закодированное в Base64.

  • deleteExistingboolean

    Перезаписывать существующий файл (по умолчанию: true)

  • filenamestringобязательный

    Имя файла, под которым сохранить в Anki (например, "pronunciation.mp3", "image.jpg")

  • pathstring

    Абсолютный путь к локальному медиафайлу (только изображения, аудио, видео)

  • urlstring

    URL для скачивания файла

suspendидемпотентный

Приостанавливает карточки, чтобы они пропускались во время повторения до отмены приостановки. Идентификаторы карточек (не идентификаторы заметок) - используйте get_cards, get_due_cards или notesInfo, чтобы получить их. Идентификаторы карточек сначала проверяются на существование, и ничего не меняется, если какой-либо отсутствует - собственное действие suspend в AnkiConnect обрабатывает несуществующие идентификаторы непоследовательно (обычно ошибка, иногда молчаливый пропуск в зависимости от порядка ввода). Приостановка уже приостановленной карточки - безопасная no-op операция, поэтому повторный запуск с теми же идентификаторами безопасен. Приостановленная карточка молча выпадает из повторений пользователя (в Anki и на синхронизированных устройствах) до тех пор, пока не будет возобновлена.

Параметры
  • cardsinteger[]обязательный

    Массив идентификаторов карточек (максимум 500). Идентификаторы карточек (не идентификаторы заметок): используйте get_cards, get_due_cards или notesInfo, чтобы получить их.

syncидемпотентныйвнешний мир

Синхронизирует локальную коллекцию Anki с AnkiWeb (сетевой вызов; нужно, чтобы десктопное приложение Anki вошло в AnkiWeb). Остальные инструменты работают с локальной коллекцией (кроме скачивания медиа по URL-адресам, переданным в storeMediaFile или updateNoteFields), поэтому повторения, сделанные на других устройствах, появятся только после синхронизации, а изменения, сделанные здесь, дойдут до других устройств только после синхронизации.

Параметры

Без параметров.

unsuspendидемпотентный

Снимает приостановку с карточек, чтобы они вернулись к обычному повторению. Идентификаторы карточек (не заметок) получаются с помощью get_cards, get_due_cards или notesInfo. Сначала проверяется существование идентификаторов карточек, и ничего не изменяется, если какой-либо отсутствует: собственное действие unsuspend в AnkiConnect обрабатывает несуществующие идентификаторы непоследовательно (обычно ошибка, иногда молчаливый пропуск в зависимости от порядка ввода). Снятие приостановки с уже снятой карточки безопасно и не даёт эффекта, поэтому повторный запуск с теми же идентификаторами безопасен.

Параметры
  • cardsinteger[]обязательный

    Массив идентификаторов карточек (максимум 500). Идентификаторы карточек (не идентификаторы заметок): используйте get_cards, get_due_cards или notesInfo, чтобы получить их.

updateModelStylingидемпотентный

Обновляет CSS-оформление для существующего типа заметки (модели). Это меняет то, как карточки этого типа отображаются в Anki. Пригодится для добавления поддержки RTL (справа налево), смены шрифтов, цветов или макета. Переданный CSS заменяет весь существующий CSS типа заметки (modelStyling возвращает текущий CSS). Изменения затрагивают все карточки, использующие эту модель.

Параметры
  • cssstringобязательный

    Новое содержимое CSS-стилей. Для RTL-языков включите "direction: rtl;" в класс .card. Это полностью заменит существующий CSS.

  • modelNamestringобязательный

    Название модели для обновления (например, «Basic», «Basic RTL»)

updateModelTemplatesидемпотентный

Обновляет шаблоны карточек (HTML для Front и Back) для существующего типа заметок (model). Каждый шаблон карточки определяет, как отрисовываются лицевая и обратная стороны карточки. HTML для Front и Back, заданный для каждого именованного шаблона, заменяет существующий HTML; modelTemplates возвращает текущие шаблоны. Изменения применяются ко всем карточкам, которые используют эту модель. Anki проверяет каждый шаблон карточки при сохранении типа заметок и отклоняет обновление, если шаблон недействителен, например если его не удаётся разобрать, он ссылается на поле, которого нет у типа заметок, не имеет поля на лицевой стороне или имеет такую же лицевую сторону, как другой шаблон; в этом случае ничего не меняется. Имена шаблонов карточек сверяются с существующими шаблонами модели (с учётом регистра) - неизвестные имена или имена с неправильным регистром отклоняются до любого обновления. Пустую строку нельзя использовать, чтобы очистить сторону.

Параметры
  • modelNamestringобязательный

    Название модели для обновления (например, "Basic", "Cloze")

  • templatesobjectобязательный

    Шаблоны карточек с ключом по имени карточки (например, { "Card 1": { Front: "...", Back: "..." } }). modelTemplates возвращает текущую структуру в таком виде.

updateNoteFieldsвнешний мир

Обновляет поля существующей заметки. Текущее содержимое указанных полей перезаписывается (HTML поддерживается; CSS типа заметки не затрагивается), а изменение не записывается в историю отмены Anki. Необязательные элементы аудио/изображений скачиваются по своим URL и добавляются к перечисленным полям как теги [sound:...] / <img>, поэтому повторный вызов с медиа добавит их снова, если только эти поля не перезаписываются заодно. Известная проблема AnkiConnect: если заметка открыта в окне Browse в Anki, вызов сообщает об успехе, но поля не сохраняются.

Параметры
  • noteobjectобязательный
0.27.0основная
0.26.0
0.25.1
0.25.0
0.24.2
0.24.1
0.24.0
0.23.0
0.22.5
0.22.3
0.22.2
0.22.1
0.22.0
0.21.0
0.20.1
0.20.0
0.19.2
0.19.1
0.19.0
0.18.5-tunnel.2
0.18.5-tunnel.1
0.18.5-tunnel
0.18.5
0.18.4-tunnel
0.18.4
0.18.3
0.18.0
0.17.0
0.16.0
0.15.1
0.15.0-tunnel.4
0.15.0-tunnel.3
0.15.0-tunnel.2
0.15.0-tunnel.1
0.15.0
0.14.0
0.13.1
0.13.0
0.13.0-tunnel.1
0.12.1
0.12.1-beta.1
0.11.0
0.10.0
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.0

Выберите клиент, чтобы установить anki-mcp/anki-mcp-desktop:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "anki-mcp-anki-mcp-desktop-1wugt1x7n9": {
      "command": "npx",
      "args": [
        "-y",
        "@ankimcp/anki-mcp-server",
        "--stdio"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "anki-mcp-anki-mcp-desktop-1wugt1x7n9": {
      "command": "npx",
      "args": [
        "-y",
        "@ankimcp/anki-mcp-server",
        "--stdio"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "anki-mcp-anki-mcp-desktop-1wugt1x7n9": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@ankimcp/anki-mcp-server",
        "--stdio"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"anki-mcp-anki-mcp-desktop-1wugt1x7n9\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"@ankimcp/anki-mcp-server\",\"--stdio\"],\"env\":{\"ANKI_CONNECT_URL\":\"http://localhost:8765\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "anki-mcp-anki-mcp-desktop-1wugt1x7n9": {
      "command": "npx",
      "args": [
        "-y",
        "@ankimcp/anki-mcp-server",
        "--stdio"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add anki-mcp-anki-mcp-desktop-1wugt1x7n9 --env ANKI_CONNECT_URL=http://localhost:8765 -- npx -y @ankimcp/anki-mcp-server --stdio

Либо через JSON-конфиг:

claude mcp add-json anki-mcp-anki-mcp-desktop-1wugt1x7n9 "{\"command\":\"npx\",\"args\":[\"-y\",\"@ankimcp/anki-mcp-server\",\"--stdio\"],\"env\":{\"ANKI_CONNECT_URL\":\"http://localhost:8765\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add anki-mcp-anki-mcp-desktop-1wugt1x7n9 --env ANKI_CONNECT_URL=http://localhost:8765 -- npx -y @ankimcp/anki-mcp-server --stdio

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.anki-mcp-anki-mcp-desktop-1wugt1x7n9]
command = "npx"
args = ["-y", "@ankimcp/anki-mcp-server", "--stdio"]

[mcp_servers.anki-mcp-anki-mcp-desktop-1wugt1x7n9.env]
ANKI_CONNECT_URL = "http://localhost:8765"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите anki-mcp/anki-mcp-desktop, а в поле команды запуска — строку ниже:
npx -y @ankimcp/anki-mcp-server --stdio

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "anki-mcp-anki-mcp-desktop-1wugt1x7n9": {
      "command": "npx",
      "args": [
        "-y",
        "@ankimcp/anki-mcp-server",
        "--stdio"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "anki-mcp-anki-mcp-desktop-1wugt1x7n9": {
      "command": "npx",
      "args": [
        "-y",
        "@ankimcp/anki-mcp-server",
        "--stdio"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например anki-mcp-anki-mcp-desktop-1wugt1x7n9.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: anki-mcp-anki-mcp-desktop-1wugt1x7n9
    command: npx
    args:
      - "-y"
      - "@ankimcp/anki-mcp-server"
      - "--stdio"
    env:
      ANKI_CONNECT_URL: http://localhost:8765
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "anki-mcp-anki-mcp-desktop-1wugt1x7n9": {
      "command": "npx",
      "args": [
        "-y",
        "@ankimcp/anki-mcp-server",
        "--stdio"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

Похожие MCP-сервера

ujisati/anki-mcp

ujisati/anki-mcp

от ujisati

MCP сервер для работы с флеш-карточками Anki через AnkiConnect. Предоставляет инструменты для управления колодами, заметками, карточками, моделями и медиа. Полезен для автоматизации создания и редактирования карточек, интеграции с ИИ-помощниками.

Python⭐ 7
rember/rember-mcp

rember/rember-mcp

от rember

Сервер Rember через MCP создаёт флеш-карточки для запоминания с интервальными повторениями — прямо из чатов с ИИ или PDF. Полезен студентам и всем, кто учится. Просто попросите «помоги запомнить» или «создай карточки», и инструмент сгенерирует заметки в Rember.

TypeScript⭐ 63
RohanMuppa/brightspace-mcp-server

RohanMuppa/brightspace-mcp-server

от rohanmuppa

MCP сервер для прямого доступа к курсам Brightspace через ИИ-ассистентов. Позволяет запрашивать оценки, дедлайны и объявления. Полезен студентам, работающим с Claude, ChatGPT или Cursor в вузах, использующих D2L.

TypeScript⭐ 59
clouatre-labs/math-mcp-learning-server

clouatre-labs/math-mcp-learning-server

от clouatre-labs

Образовательный MCP сервер с 17 инструментами для математических вычислений, статистики, работы с матрицами и визуализации. Подходит студентам, преподавателям и разработчикам. Поддерживает облачный хостинг и персистентное рабочее пространство.

Python⭐ 5
r-huijts/ethics-check-mcp

r-huijts/ethics-check-mcp

от r-huijts

MCP сервер превращает ИИ в спарринг-партнера, прерывая комфортные беседы и оспаривая ваши предположения. Помогает выявлять когнитивные искажения, избегать предвзятости подтверждения и принимать осознанные решения. Для тех, кто ценит критическое мышление.

TypeScript⭐ 5
jinzcdev/leetcode-mcp-server

jinzcdev/leetcode-mcp-server

от jinzcdev

MCP сервер для LeetCode: поиск задач, получение решений и профилей, отправка кода. Помогает разработчикам автоматизировать подготовку к собеседованиям и отслеживать прогресс в алгоритмах.

TypeScript⭐ 154
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин