anki-mcp
MCP-сервер для Anki. Этот сервер позволяет взаимодействовать с Anki через Model Context Protocol (MCP). Он позволяет пользователям программно управлять карточками, колодами и процессами обзора.
Предпосылки
Установлены Node.js и npm.
Плагин AnkiConnect установлен и работает в Anki.
Related MCP server: Anki MCP Server
Настройка и выполнение
Настоятельно рекомендуется запускать локально, так как anki connect работает только локально.
Для локального запуска:
Клонируйте репозиторий:
git clone https://github.com/nietus/anki-mcpУстановить зависимости:
npm installСборка проекта: скрипт
prepareвpackage.jsonдолжен автоматически запустить сборку при установке. Если вам нужно выполнить сборку вручную:npm run buildЭта команда компилирует код TypeScript и делает клиентский скрипт исполняемым.
Интеграция с настройками курсора для Windows
"anki": { "command": "cmd", "args": [ "/c", "node", "c:/Users/-/Downloads/anki-mcp/build/client.js" ] }
Доступные инструменты
Для отладки инструментов используйте
Сервер предоставляет следующие инструменты для взаимодействия с Anki:
update_cards:Описание: После того, как пользователь ответит на вопросы карточек, по которым вы его опрашивали, используйте этот инструмент, чтобы отметить его как ответившего и обновить его оценку.
Ввод: Массив ответов, каждый с
cardId(число) иease(число, 1-4).
add_card:Описание: Создайте новую карточку в Anki. Примечание: содержимое использует HTML.
Разрывы строк:
<br>Код:
<pre style="background-color: transparent; padding: 10px; border-radius: 5px;">Списки:
<ol>и<li>Жирный шрифт:
<strong>Курсив:
<em>
Вход:
fields: (объект) Объект, где ключами являются имена полей (например, «Hanzi», «Pinyin»), а значениями — их HTML-содержимое.modelName: (строка) Имя типа заметки Anki (модели), который будет использоваться.deckName: (необязательная строка) Имя колоды, в которую нужно добавить карту. По умолчанию — текущая колода или «По умолчанию».tags: (необязательный массив строк) Список тегов для добавления в заметку.
get_due_cards:Описание: Возвращает заданное количество карточек, подлежащих проверке.
Ввод:
num(число).
get_new_cards:Описание: Возвращает заданное количество новых и непросмотренных карт.
Ввод:
num(число).
get-deck-names:Описание: Получите список всех названий колод Anki.
Ввод: Нет.
find-cards:Описание: Поиск карточек с помощью необработанного поискового запроса Anki. Возвращает подробную информацию о карточке, включая поля.
Ввод:
query(строка, например,'deck:Default -tag:test'или'"deck:My Deck" tag:important'). Для фильтрации пустых полей используйте'-FieldName:_*'(например,'-Hanzi:_*').
update-note-fields:Описание: Обновление определенных полей заданной заметки Anki.
Ввод:
noteId(число),fields(объект, например,{"Front": "New Q", "Back": "New A"}).
create_deck:Описание: Создайте новую колоду Anki.
Ввод:
deckName(строка).
bulk_update_notes:Описание: Обновление определенных полей для нескольких заметок Anki.
Входные данные: массив
notes, где каждая заметка имеетnoteId(номер) иfields(объект).
get_model_names:Описание: Перечисляет все доступные названия типов/моделей заметок Anki.
Ввод: нет.
get_model_details:Описание: Извлекает поля, шаблоны карточек и стили CSS для указанного типа заметки.
Ввод:
modelName(строка).
get_deck_model_info:Описание: Извлекает информацию о типах (моделях) нот, используемых в указанной колоде. Помогает определить, используется ли одна модель, несколько или колода пуста или отсутствует.
Ввод:
deckName(строка).Вывод: объект с
deckName,status(например, «single_model_found», «multiple_models_found», «no_notes_found», «deck_not_found») и условноmodelName(строка) илиmodelNames(массив строк).
add_note_type_field:Описание: Добавляет новое поле к типу заметки.
Ввод:
modelName(строка),fieldName(строка).
remove_note_type_field:Описание: Удаляет существующее поле из типа заметки.
Ввод:
modelName(строка),fieldName(строка).
rename_note_type_field:Описание: Переименовывает поле в типе заметки.
Ввод:
modelName(строка),oldFieldName(строка),newFieldName(строка).
reposition_note_type_field:Описание: Изменяет порядок (индекс) поля в типе заметки.
Ввод:
modelName(строка),fieldName(строка),index(число).
update_note_type_templates:Описание: Обновляет HTML-шаблоны (например, лицевую и оборотную стороны) для карточек типа заметки.
Ввод:
modelName(строка),templates(объект, например,{"Card 1": {"Front": "html", "Back": "html"}}).
update_note_type_styling:Описание: Обновляет стиль CSS для типа заметки.
Ввод:
modelName(строка),css(строка).
create_model:Описание: Создает новый тип заметки Anki (модель).
Ввод:
modelName(строка),fieldNames(массив строк),cardTemplates(массив объектов, каждый со строками HTMLName,Front,Back),css(необязательная строка),isCloze(необязательная логическая переменная, по умолчанию false),modelType(необязательная строка, по умолчанию «Standard»).
add_bulk:Описание: Добавляет несколько карточек в Anki за одну операцию. Содержимое заметок использует HTML. Этот инструмент предназначен для добавления нескольких заметок (карточек) одновременно.
Входные данные: Массив
notes, где каждый объект заметки имеет:fields: (объект) Объект, где ключи — это имена полей, а значения — их HTML-содержимое.modelName: (строка) Имя типа заметки Anki (модели), используемого для этой заметки.deckName: (необязательная строка) Имя колоды для этой заметки. По умолчанию «Default».tags: (необязательный массив строк) Список тегов для этой заметки.
Более подробную информацию можно найти здесь Интеграция Anki | Smithery