Anki MCP

официальный

MCP-сервер, который позволяет AI-ассистентам взаимодействовать с Anki — приложением для интервальных повторений флеш-карт.

Что можно делать с Anki MCP?

  • Просмотр карточек к повторению в диалоге — Попросите ассистента показать карточки к повторению с помощью get_due_cards, предъявить каждую через present_card и записать вашу оценку с помощью rate_card.
  • Создание и массовое добавление карточек — Попросите ассистента массово создать заметки с помощью addNotes, при необходимости сначала создав собственную модель через createModel и updateModelStyling.
  • Поиск и редактирование существующих заметок — Используйте findNotes с синтаксисом запросов Anki, просматривайте детали через notesInfo и обновляйте поля с помощью updateNoteFields.
  • Управление колодами и расписанием — Создавайте колоды с помощью createDeck, перемещайте карточки через changeDeck или переносите их расписание с помощью setDueDate и forgetCards.
  • Импорт медиафайлов в заметки — Попросите ассистента загрузить локальное изображение или URL с помощью storeMediaFile и встроить его в поле заметки.
  • Управление графическим интерфейсом Anki — Открывайте браузер или редактор с помощью guiBrowse и guiEditNote или получайте выбранную заметку через guiSelectedNotes.

Документация

Сервер Anki MCP

Tests npm version

Anki + MCP Integration

Бесшовная интеграция Anki с AI-ассистентами через Model Context Protocol

Бета-версия — проект находится в активной разработке. API и функции могут меняться.

Сервер Model Context Protocol (MCP), который позволяет AI-ассистентам взаимодействовать с Anki — приложением для интервального повторения карточек.

Преобразите свой опыт работы с Anki с помощью взаимодействия на естественном языке — как с личным репетитором. AI-ассистент не просто показывает вопросы и ответы; он может объяснять концепции, делать процесс обучения более увлекательным и человечным, предоставлять контекст и адаптироваться к вашему стилю обучения. Он может создавать и редактировать заметки на лету, превращая ваши учебные сессии в динамичные беседы. Скоро появятся новые функции!

Примеры и обучающие материалы

Для получения подробных руководств, реальных примеров и пошаговых инструкций по использованию этого MCP-сервера с Claude Desktop посетите:

ankimcp.ai — полная документация с практическими примерами и вариантами использования

См. docs/ для дополнительной документации, включая руководство по настройке рецензента и образец колоды Anki.

Примеры использования

Три репрезентативных запроса, показывающих потоки инструментов, которые обеспечивает этот сервер:

  1. «Помоги мне повторить мою испанскую колоду». — Ассистент синхронизируется с AnkiWeb (sync), получает карточки, подлежащие повторению (get_due_cards с фильтром по колоде), показывает каждую карточку (present_card) и записывает вашу оценку (rate_card). Естественный учебный диалог с объяснениями, адаптированными под вас.

  2. «Создай 10 карточек арабской лексики с RTL-стилизацией». — Ассистент выводит список типов заметок (modelNames), при необходимости создает пользовательскую RTL-модель (createModel + updateModelStyling для CSS справа налево), затем пакетно создает карточки (addNotes).

  3. «Импортируй это изображение из моей папки Загрузки на лицевую сторону выбранной заметки». — Ассистент загружает локальный файл (storeMediaFile с указанием пути к файлу), считывает выбранную в данный момент заметку из браузера (guiSelectedNotes + notesInfo) и обновляет лицевое поле с тегом <img> (updateNoteFields).

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

Сервер предоставляет 50 MCP-инструментов — 39 основных инструментов для повседневных операций с Anki и 11 GUI-инструментов, которые управляют интерфейсом настольного приложения Anki для рабочих процессов редактирования/создания заметок.

Основные инструменты

Повторение и обучение

  • sync — Синхронизация с AnkiWeb для получения последних данных и отправки изменений
  • get_due_cards — Получение карточек, подлежащих повторению, с возможностью фильтрации по колоде (ответы опущены, если не указано include_answer: true, по умолчанию false)
  • get_cards — Получение карточек с гибкой фильтрацией по состоянию (к повторению, новые, в обучении, отложенные, скрытые) и колоде (ответы опущены, если не указано include_answer: true, по умолчанию false)
  • present_card — Показ карточки для повторения с ее вопросом/лицевой стороной
  • rate_card — Оценка эффективности карточки (Снова, Трудно, Хорошо, Легко) и планирование следующего повторения
  • forgetCards — Сброс карточек в состояние «новые», отмена их расписания без записи повторения
  • setDueDate — Перенос карточек на срок повторения через N дней ("0", "3-7", "1!") без записи повторения

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

Примечание: Содержимое карточки front/back отображается для каждой карточки на основе ее собственного шаблона (как показывает Anki), поэтому перевернутые карточки и карточки с пропусками отображаются в правильном направлении. Статический текст, добавленный шаблонами ваших карточек, также появляется в выводе.

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

  • listDecks — Список всех колод, опционально со статистикой очереди обучения по каждой колоде
  • deckStats — Получение подробной статистики для одной колоды (очередь обучения, фактические подсчеты состояний карточек, распределения легкости/интервалов)
  • createDeck — Создание новой пустой колоды (поддерживает Parent::Child, максимум 2 уровня)
  • changeDeck — Перемещение карточек в другую колоду (создается, если не существует)

Примечание: Статистика колод бывает двух видов. Блок counts (и все, что сообщает listDecks) отражает браузер колод Anki: карточки подлежащие повторению сегодня, ограниченные ежедневными лимитами новых/повторяемых карточек каждой колоды, с исключением отложенных и скрытых карточек — поэтому review — это не «зрелые карточки», а категория other — просто арифметический остаток (в основном карточки для повторения не сегодня плюс новые карточки сверх ежедневного лимита). Для фактических итогов по состояниям используйте блок states на deckStats / collection_stats, который подсчитывает new, learning, review, suspended и buried с помощью поисков Anki, игнорируя даты повторения и ежедневные лимиты.

Управление заметками

  • addNote — Создание одной заметки с указанными полями и тегами
  • addNotes — Пакетное создание до 100 заметок с общей колодой и моделью (поддерживается частичный успех)
  • findNotes — Поиск заметок с использованием синтаксиса запросов Anki (deck:, tag:, is:due и т.д.)
  • notesInfo — Получение подробной информации о заметках (поля, теги, CSS-стилизация)
  • updateNoteFields — Обновление существующих полей заметок (с учетом CSS, поддержка HTML-контента)
  • deleteNotes — Удаление заметок и всех связанных карточек (необратимо, требует подтверждения)

Управление тегами

  • getTags — Получение всех тегов в коллекции (используйте первый, чтобы избежать дублирования)
  • addTags — Добавление тегов, разделенных пробелами, к указанным заметкам
  • removeTags — Удаление тегов, разделенных пробелами, из указанных заметок
  • replaceTags — Переименование тега в указанных заметках
  • clearUnusedTags — Удаление осиротевших тегов, не используемых ни одной заметкой (необратимо)

Управление медиафайлами

  • getMediaFilesNames — Список медиафайлов в collection.media, опционально отфильтрованных по шаблону
  • retrieveMediaFile — Загрузка медиафайла как содержимого base64
  • storeMediaFile — Загрузка медиафайла из данных base64, абсолютного пути к файлу или URL
  • deleteMediaFile — Удаление медиафайла из collection.media (необратимо)

💡 Лучшие практики для изображений:

  • Используйте пути к файлам (например, /Users/you/image.png) — быстро и эффективно
  • Используйте URL (например, https://example.com/image.jpg) — прямая загрузка
  • Избегайте base64 — крайне медленно и неэффективно по токенам

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

Управление моделями/шаблонами

  • modelNames — Список всех доступных типов заметок/моделей
  • modelFieldNames — Получение имен полей для конкретного типа заметок
  • modelStyling — Получение информации о CSS-стилизации для типа заметок
  • modelTemplates — Получение шаблонов карточек (HTML лицевой и обратной сторон) для типа заметок
  • createModel — Создание нового типа заметок с пользовательскими полями, шаблонами карточек и CSS (например, RTL-модели)
  • updateModelStyling — Обновление CSS-стилизации для существующего типа заметок (применяется ко всем его карточкам)
  • updateModelTemplates — Обновление шаблонов карточек (HTML лицевой и обратной сторон) для существующего типа заметок (применяется ко всем его карточкам)
  • addModelField — Добавление нового поля в существующий тип заметок (добавляется в конец или вставляется в определенную позицию)
  • removeModelField — Удаление поля из существующего типа заметок (удаляет его содержимое из всех заметок; требует явного подтверждения)
  • renameModelField — Переименование поля в существующем типе заметок (шаблоны карточек, ссылающиеся на старое имя, должны быть обновлены отдельно)
  • repositionModelField — Изменение позиции поля в существующем типе заметок

Статистика

  • collection_stats — Агрегированная статистика по всем колодам с разбивкой по каждой колоде и подсчетами состояний карточек по всей коллекции
  • review_stats — Анализ истории повторений (временные закономерности, показатели удержания, серии обучения)

GUI-инструменты

Инструменты, управляющие интерфейсом настольного приложения Anki. Предназначены для рабочих процессов редактирования/создания заметок и управления колодами, не для сессий повторения.

  • guiBrowse — Открытие браузера карточек и поиск карточек
  • guiSelectCard — Выбор конкретной карточки в браузере карточек
  • guiSelectedNotes — Получение идентификаторов заметок, выбранных в данный момент в браузере карточек
  • guiAddCards — Открытие диалога добавления карточек с предустановленными деталями заметки
  • guiEditNote — Открытие редактора заметок для конкретной заметки
  • guiDeckOverview — Открытие диалога обзора колоды для конкретной колоды
  • guiDeckBrowser — Открытие диалога браузера колод
  • guiCurrentCard — Получение информации о текущей карточке в режиме повторения
  • guiShowQuestion — Показ лицевой стороны текущей карточки
  • guiShowAnswer — Показ обратной стороны текущей карточки
  • guiUndo — Отмена последнего действия в Anki

Предварительные требования

  • Anki с установленным плагином AnkiConnect
  • Node.js 22.12.0+

Установка

Есть несколько способов установить сервер на вашу машину. После установки перейдите к разделу Подключение AI-клиента, чтобы подключить его к вашему AI-ассистенту — локально или удаленно.

npm (глобально или через npx)

Универсальный способ установки сервера, подходящий для любого MCP-клиента, который запускает его напрямую.

Установите его глобально для клиентов, которые выполняют команду ankimcp:

npm install -g @ankimcp/anki-mcp-server

Или запустите по требованию без установки:

npx @ankimcp/anki-mcp-server

Пакет MCPB (рекомендуется для Claude Desktop)

Самый простой способ установить этот MCP-сервер для Claude Desktop:

  1. Загрузите последний пакет .mcpb со страницы Релизы
  2. В Claude Desktop установите расширение:
    • Способ 1: Перейдите в Настройки → Расширения, затем перетащите файл .mcpb
    • Способ 2: Перейдите в Настройки → Разработчик → Расширения → Установить расширение, затем выберите файл .mcpb
  3. При необходимости настройте URL AnkiConnect (по умолчанию http://localhost:8765)
  4. Перезапустите Claude Desktop

Вот и все! Пакет включает все необходимое для локального запуска сервера.

Для рецензентов каталога Anthropic MCP: пошаговое руководство от нуля до интеграции с предварительно заполненной образцовой колодой находится в docs/reviewer-setup.md.

Установка из исходного кода (для разработки)

Для разработки или продвинутого использования (запуск набора тестов требует Node.js 24.9+ — npm-скрипты тестирования загружают пакеты NestJS 12 только для ESM через require(esm), которые Jest поддерживает только там; требование к среде выполнения для использования сервера остается 22.12.0+):

npm install
npm run build

Подключение AI-клиента

Есть два способа, которыми AI-ассистент может получить доступ к этому серверу, в зависимости от того, где работает ассистент:

  • Локально — сервер работает на той же машине, что и AI-клиент (Claude Desktop, Cursor, Cline, Zed или локальная браузерная сессия). Используйте STDIO для настольных MCP-клиентов, HTTP для локальных веб-инструментов.
  • Удаленно — размещенный/удаленный AI (например, ChatGPT или Claude.ai в облаке) должен получить доступ к Anki, работающему на вашей локальной машине. Используйте управляемый Туннель (✅ рекомендуется — с аутентификацией) или, как более легкую альтернативу без аутентификации, ngrok.

Локально

Сервер работает на том же компьютере, что и ваш AI-клиент, и взаимодействует с AnkiConnect на localhost.

STDIO (основная локальная интеграция)

STDIO — это стандартный транспорт для локальных настольных MCP-клиентов — Claude Desktop, Cursor IDE, Cline, Zed Editor и других. Клиент запускает сервер как подпроцесс и взаимодействует через стандартный ввод/вывод. Поддерживаемые клиенты:

  • Claude Desktop
  • Cursor IDE — AI-редактор кода
  • Cline — расширение VS Code для AI-ассистента
  • Zed Editor — быстрый современный редактор кода
  • Другие MCP-клиенты, поддерживающие STDIO-транспорт

Для Claude Desktop пакет MCPB — самый простой путь. Для других клиентов настройте npm-пакет с флагом --stdio.

Конфигурация — выберите один из способов:

Способ 1: Использование npx (рекомендуется — установка не требуется)

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

Способ 2: Глобальная установка

Сначала установите глобально:

npm install -g @ankimcp/anki-mcp-server

Затем настройте:

{
  "mcpServers": {
    "anki-mcp": {
      "command": "ankimcp",
      "args": ["--stdio"],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

Расположение файлов конфигурации:

  • Cursor IDE: ~/.cursor/mcp.json (macOS/Linux) или %USERPROFILE%\.cursor\mcp.json (Windows)
  • Cline: доступно через интерфейс настроек в VS Code
  • Zed Editor: установите как MCP-расширение через маркетплейс расширений

Для функций, специфичных для клиента, и устранения неполадок обратитесь к документации вашего MCP-клиента. См. также Подключение к Claude Desktop для конфигурации, которая напрямую указывает на собранный dist/main-stdio.js.

HTTP (локальный веб-интерфейс для AI)

Режим HTTP запускает сервер как локальный веб-сервер, использующий протокол MCP Streamable HTTP. Это транспорт, с которым общается веб-инструмент AI, когда он указывает на вашу машину, и именно его опции Remote открывают для внешнего мира. Сам по себе режим HTTP привязывается только к localhost.

Привязка за пределами localhost? Если вы передаете --host 0.0.0.0 (или запускаете за обратным прокси/публичным доменом), сервер по умолчанию принимает только заголовки Host loopback для защиты от DNS-rebinding — установите ALLOWED_HOSTS на имя(имена) хоста, которые используют клиенты. См. Конфигурация HTTP-режима.

Настройка — выберите один из способов:

Способ 1: Использование npx (рекомендуется — установка не требуется)

# Quick start
npx @ankimcp/anki-mcp-server

# With custom options
npx @ankimcp/anki-mcp-server --port 8080 --host 0.0.0.0
npx @ankimcp/anki-mcp-server --anki-connect http://localhost:8765

Способ 2: Глобальная установка

# Install once
npm install -g @ankimcp/anki-mcp-server

# Run the server
ankimcp

# With custom options
ankimcp --port 8080 --host 0.0.0.0
ankimcp --anki-connect http://localhost:8765

Способ 3: Установка из исходного кода (для разработки)

npm install
npm run build
npm run start:prod:http

Чтобы сделать локальный HTTP-сервер доступным для облачного AI, используйте одну из опций Remote ниже.

Remote

Удаленный/облачный AI (например, ChatGPT или Claude.ai, работающие в облаке) не может напрямую обратиться к localhost. Эти опции открывают вашу локальную Anki в интернет, чтобы удаленный ассистент мог с ней работать.

Tunnel (✅ Рекомендуется)

Рекомендуемый удаленный путь — аутентифицированный и безопасный. В отличие от открытого публичного порта, туннельный режим требует входа в систему (OAuth 2.0 device flow), поэтому конечная точка не открыта для любого, кто угадает URL.

Туннельный режим позволяет веб-интерфейсам AI-ассистентов получать доступ к вашей локальной Anki без запуска собственного туннеля. Сервер подключается к управляемому туннельному сервису AnkiMCP (wss://tunnel.ankimcp.ai) через WebSocket и получает публичный URL. Аутентификация встроена — не требуется учетная запись ngrok или отдельный туннельный процесс, и вы входите в систему один раз.

Вход в систему (OAuth device flow):

Туннельный режим использует OAuth 2.0 Device Authorization Grant. Вход автоматически открывает ваш браузер на странице подтверждения с уже встроенным кодом в URL — ничего вводить не нужно, просто подтвердите. (Если браузер не может открыться, терминал выведет URL для проверки и код для ручного ввода в качестве запасного варианта.) В случае успеха учетные данные сохраняются в ~/.ankimcp/credentials.json (права доступа к файлу 0600).

# Pre-authenticate (optional — --tunnel will trigger this automatically if needed)
ankimcp --login
npx @ankimcp/anki-mcp-server --login

# Clear saved credentials
ankimcp --logout

Запуск туннеля:

# Connect to the managed tunnel service (wss://tunnel.ankimcp.ai)
ankimcp --tunnel
npx @ankimcp/anki-mcp-server --tunnel

# Override the tunnel server URL (must be ws:// or wss://) — e.g. for self-hosting
ankimcp --tunnel wss://my-tunnel.example.com

Если учетные данные отсутствуют, --tunnel автоматически запускает процесс входа, а затем продолжает работу туннеля. Этот автоматический вход требует интерактивного терминала — когда stdout не является TTY (systemd, headless Docker, CI), сервер быстро завершает работу и просит сначала запустить ankimcp --login. После подключения выводится публичный URL туннеля; нажмите Ctrl+C для отключения. Поделитесь этим URL с вашим AI-ассистентом.

Переменные окружения туннельного режима:

ПеременнаяОписаниеПо умолчанию
TUNNEL_SERVER_URLURL WebSocket туннельного сервера (значение флага --tunnel/--login переопределяет это)wss://tunnel.ankimcp.ai
TUNNEL_AUTH_CLIENT_IDOAuth client ID для device flow. Продвинутый — нужен только при указании на самостоятельно размещенный туннель/сервис аутентификации.(встроенный)

Конечные точки аутентификации device-flow (/auth/device, /auth/token) выводятся из TUNNEL_SERVER_URL, поэтому указание --tunnel (или TUNNEL_SERVER_URL) на другой хост также перемещает аутентификацию на этот хост.

Как это работает: Туннельный режим запускает MCP-сервер в процессе за транспортом в памяти (TunnelTransport). Этот транспорт владеет MCP-сервером и превращает каждый пересылаемый запрос в ответ, а TunnelClient связывает его с удаленным туннельным сервисом через WebSocket — пересылая MCP-запросы внутрь и ответы наружу. AnkiConnect по-прежнему доступен только на вашей локальной машине.

Версии протокола: Поскольку туннель подключает MCP-сервер в процессе, туннельный режим обслуживает только редакцию 2025 протокола MCP, в то время как режимы STDIO и HTTP обслуживают как 2025, так и более новую редакцию 2026-07-28. Каждый инструмент ведет себя одинаково в любом случае — но клиент, который говорит только на 2026-07-28, будет отклонен через туннель с ошибкой версии протокола; запустите режим STDIO или HTTP для такого клиента.

ngrok (неаутентифицированная альтернатива)

Если вы предпочитаете открыть локальный HTTP-режим публично без учетной записи в управляемом туннеле, встроенный флаг --ngrok запускает подпроцесс ngrok (src/services/ngrok.service.ts) и выводит публичный URL в стартовом баннере:

# One-time ngrok setup, then:
ankimcp --ngrok

Этот путь не аутентифицирован — любой, у кого есть URL, может получить доступ к вашей Anki, поэтому он менее безопасен, чем Tunnel. Предпочитайте Tunnel, если у вас нет особой причины управлять собственной конечной точкой ngrok. (Требуется глобальная установка ngrok и authtoken.)

Флаг --ngrok запускает ngrok с --host-header=rewrite, поэтому ngrok переписывает вышестоящий Host на localhost перед пересылкой. Это сохраняет запросы в пределах разрешенного списка Host loopback (см. Защита от DNS-rebinding) без необходимости добавлять публичный домен *.ngrok в ALLOWED_HOSTS. Если вы запускаете ngrok вручную, используйте тот же флаг — ngrok http --host-header=rewrite 3000 — иначе ngrok пересылает публичное имя хоста ngrok как Host, и сервер отклоняет его с 403.

Параметры CLI (все режимы)

ankimcp [options]

Options:
  --stdio                        Run in STDIO mode (for MCP clients)
  --tunnel [url]                 Connect via the managed tunnel (authenticated)
  --login                        Authenticate for tunnel mode (OAuth device flow)
  --logout                       Clear saved tunnel credentials
  -p, --port <number>            Port to listen on (HTTP mode; default: 3000, or PORT env var)
  -h, --host <address>           Host to bind to (HTTP mode; default: 127.0.0.1, or HOST env var)
  -a, --anki-connect <url>       AnkiConnect URL (default: http://localhost:8765, or ANKI_CONNECT_URL env var)
  --ngrok                        Start ngrok tunnel (requires global ngrok installation)
  --read-only                    Run in read-only mode (blocks all write operations)
  --help                         Show help message

Usage with npx (no installation needed):
  npx @ankimcp/anki-mcp-server                        # HTTP mode
  npx @ankimcp/anki-mcp-server --port 8080            # Custom port
  npx @ankimcp/anki-mcp-server --stdio                # STDIO mode
  npx @ankimcp/anki-mcp-server --tunnel               # Managed tunnel mode
  npx @ankimcp/anki-mcp-server --ngrok                # HTTP mode with ngrok tunnel
  npx @ankimcp/anki-mcp-server --read-only            # Read-only mode

Usage with global installation:
  npm install -g @ankimcp/anki-mcp-server             # Install once
  ankimcp                                             # HTTP mode
  ankimcp --port 8080                                 # Custom port
  ankimcp --stdio                                     # STDIO mode
  ankimcp --tunnel                                    # Managed tunnel mode
  ankimcp --ngrok                                     # HTTP mode with ngrok tunnel
  ankimcp --read-only                                 # Read-only mode

Режим только для чтения (все режимы)

Флаг --read-only предотвращает любые изменения вашей коллекции Anki. При включении:

  • Все операции чтения работают нормально (просмотр колод, просмотр карточек, поиск заметок)
  • Операции обзора разрешены (sync, answerCards, suspend/unsuspend)
  • Изменения содержимого заблокированы (addNote, deleteNotes, createDeck, updateNoteFields и т. д.)
  • Полезно для безопасного изучения данных Anki без риска случайных изменений
# HTTP mode with read-only
ankimcp --read-only

# STDIO mode with read-only
ankimcp --stdio --read-only

# Can combine with other flags
ankimcp --ngrok --read-only

Вы также можете включить режим только для чтения через переменную окружения:

READ_ONLY=true ankimcp

Или в конфигурации MCP-клиента:

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

Подключение к Claude Desktop (локальный режим)

Вы можете настроить сервер в Claude Desktop одним из способов:

  • Перейдите: Настройки → Разработчик → Изменить конфигурацию
  • Или вручную отредактируйте файл конфигурации

Конфигурация

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

{
  "mcpServers": {
    "anki-mcp": {
      "command": "node",
      "args": ["/path/to/anki-mcp-server/dist/main-stdio.js"],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

Замените /path/to/anki-mcp-server на фактический путь к вашему проекту.

Расположение файлов конфигурации

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

Для получения дополнительных сведений см. официальную документацию MCP.

Переменные окружения (необязательно)

ПеременнаяОписаниеПо умолчанию
ANKI_CONNECT_URLURL AnkiConnecthttp://localhost:8765
ANKI_CONNECT_API_VERSIONВерсия API6
ANKI_CONNECT_API_KEYКлюч API, если настроен в AnkiConnect-
ANKI_CONNECT_TIMEOUTТаймаут запроса в мс5000
READ_ONLYВключить режим только для чтения (true или 1)false
PORTHTTP-режим: порт для прослушивания (флаг --port имеет приоритет)3000
HOSTHTTP-режим: адрес для привязки (флаг --host имеет приоритет)127.0.0.1
ALLOWED_HOSTSHTTP-режим: дополнительные значения заголовка Host, принимаемые помимо loopback (имена хостов через запятую). Требуется при привязке к LAN/публичному адресу или работе за обратным прокси. См. Конфигурация HTTP-режима.только loopback
ALLOWED_ORIGINSHTTP-режим: разделенный запятыми список разрешенных шаблонов Origin/Referer браузера (поддерживаются подстановочные знаки, например https://*.ngrok.io).http://localhost:*,http://127.0.0.1:*,https://localhost:*,https://127.0.0.1:*
TUNNEL_SERVER_URLURL WebSocket туннельного сервера (только туннельный режим)wss://tunnel.ankimcp.ai
MEDIA_ALLOWED_TYPESДополнительные типы MIME для разрешения импорта файловых путей (через запятую, например application/pdf)-
MEDIA_IMPORT_DIRОграничить импорт файловых путей этим каталогом-
MEDIA_ALLOWED_HOSTSРазрешить определенные хосты частной сети для импорта URL (через запятую, например 192.168.1.50,my-nas)-

Примеры использования

Поиск и обновление заметок

# Search for notes in a specific deck
findNotes(query: "deck:Spanish")

# Get detailed information about notes
notesInfo(notes: [1234567890, 1234567891])

# Update a note's fields (HTML content supported)
updateNoteFields(note: {
  id: 1234567890,
  fields: {
    "Front": "<b>¿Cómo estás?</b>",
    "Back": "How are you?"
  }
})

# Delete notes (requires confirmation)
deleteNotes(notes: [1234567890], confirmDeletion: true)

Примеры синтаксиса запросов Anki

Инструмент findNotes поддерживает мощный синтаксис запросов Anki:

  • "deck:DeckName" — Все заметки в конкретной колоде
  • "tag:important" — Заметки с тегом "important"
  • "is:due" — Карточки, которые должны быть повторены
  • "is:new" — Новые карточки, которые еще не изучены
  • "added:7" — Заметки, добавленные за последние 7 дней
  • "front:hello" — Заметки со словом "hello" в поле front
  • "flag:1" — Заметки с красным флагом
  • "prop:due<=2" — Карточки, которые должны быть повторены в течение 2 дней
  • "deck:Spanish tag:verb" — Заметки испанской колоды с тегом verb (AND)
  • "deck:Spanish OR deck:French" — Заметки из любой из двух колод

Важные примечания

Обработка CSS и HTML

  • Инструмент notesInfo возвращает информацию о стилях CSS для правильного отображения
  • Инструмент updateNoteFields поддерживает HTML-содержимое в полях и сохраняет стили CSS
  • Каждая модель заметок имеет собственные стили CSS — используйте modelStyling, чтобы получить CSS для конкретной модели

Предупреждение об обновлении

⚠️ ВАЖНО: При использовании updateNoteFields НЕ просматривайте заметку в браузере Anki во время обновления, иначе поля не обновятся должным образом. Закройте браузер или переключитесь на другую заметку перед обновлением. См. Известные проблемы для получения дополнительной информации.

Безопасность удаления

Инструмент deleteNotes требует явного подтверждения (confirmDeletion: true) для предотвращения случайного удаления. Удаление заметки навсегда удаляет ВСЕ связанные карточки.

Безопасность

Проверка путей к медиафайлам и URL

Инструменты для работы с медиа (storeMediaFile, retrieveMediaFile, deleteMediaFile) и поля updateNoteFields audio/picture включают проверку безопасности для предотвращения злоупотреблений через инъекцию подсказок:

  • Импорт файловых путей ограничен только типами медиафайлов (изображения, аудио, видео). Не-медиафайлы (например, SSH-ключи, учетные данные, конфигурации оболочки) отклоняются на основе типа MIME. Настройте MEDIA_ALLOWED_TYPES, чтобы разрешить дополнительные типы файлов, или MEDIA_IMPORT_DIR, чтобы ограничить импорт конкретным каталогом.
  • Импорт URL проверяется на атаки SSRF. Запросы к частным сетям (10.x, 172.16.x, 192.168.x), loopback (127.x), link-local (169.254.x) и не-HTTP(S) схемы блокируются. Настройте MEDIA_ALLOWED_HOSTS, чтобы разрешить конкретные хосты частной сети.
  • Имена файлов очищаются для предотвращения path traversal (например, последовательности ../../ удаляются).

Эти защиты применяются к storeMediaFile, retrieveMediaFile, deleteMediaFile и полям updateNoteFields audio/picture.

Уязвимость path traversal сообщена Hideaki Takahashi.

Защита от DNS-Rebinding (HTTP-транспорт)

При работе в HTTP-режиме сервер проверяет заголовок Host в каждом запросе. По умолчанию принимаются только loopback-хосты (localhost, 127.0.0.1, ::1), независимо от порта. Host — это заголовок, запрещённый для браузеров, поэтому вредоносная веб-страница не может его подделать — это закрывает путь DNS-rebinding, когда переадресованная страница достигает локального сервера с подделанным Host и без Origin, и получает доступ к MCP-инструментам. Неразрешённый Host отклоняется с ошибкой 403.

Если вы привязываетесь к 0.0.0.0, работаете за обратным прокси или открываете публичный туннельный домен, установите ALLOWED_HOSTS (список хостов через запятую), чтобы разрешить эти хосты. При использовании туннеля ngrok сервер использует --host-header=rewrite, поэтому вышестоящий сервер всё равно видит loopback-Host. Полный список опций см. в Конфигурация HTTP-режима.

Уязвимость DNS-rebinding сообщена avishaigo-commits и yotampe-pluto.

Политика конфиденциальности

Этот MCP-сервер работает локально на вашем компьютере и не собирает телеметрию, аналитику или данные об использовании.

Полная политика: https://ankimcp.ai/privacy/

  • Сбор данных: Сервер ничего не собирает. Он проксирует запросы между вашим ИИ-ассистентом и локальным плагином AnkiConnect.
  • Использование / хранение: Серверное хранение отсутствует. Все данные карточек остаются в вашей установке Anki на вашем устройстве.
  • Передача третьим лицам: Нет. Сервер взаимодействует только с настроенным URL AnkiConnect (по умолчанию: localhost). Если вы включите встроенную синхронизацию AnkiWeb, она будет происходить напрямую между вашей установкой Anki и AnkiWeb — вне области действия этого сервера.
  • Хранение данных: Не применимо — сервер не хранит данные.
  • Контакт: support@ankimcp.ai

Известные проблемы

Полный список известных проблем и ограничений см. в нашей документации:

Документация по известным проблемам

Критические ограничения

Обновление заметок не работает при просмотре в браузере

⚠️ ВАЖНО: При обновлении заметок с помощью updateNoteFields обновление будет молча завершаться ошибкой, если заметка в данный момент просматривается в окне браузера Anki. Это ограничение вышестоящего AnkiConnect.

Обходной путь: Всегда закрывайте браузер или переходите к другой заметке перед обновлением.

Дополнительные сведения и другие известные проблемы см. в полной документации.

Устранение неполадок

Ошибка ERR_REQUIRE_ESM

Если вы видите ошибку, подобную этой:

Error [ERR_REQUIRE_ESM]: require() of ES Module not supported

Это означает, что ваша версия Node.js не поддерживается. Сервер требует Node.js 22.12.0+.

Примечание: Минимальная поддерживаемая среда выполнения — Node.js 22.12.0. Node.js 20 (Iron) достиг конца жизненного цикла 30.04.2026 и больше не поддерживается.

Проверьте свою версию:

node --version

Решение: Обновите Node.js до версии 22.12.0+. Вы можете скачать её с nodejs.org или использовать менеджер версий, например nvm.

Разработка

Режимы транспорта

Этот сервер поддерживает три режима транспорта MCP через отдельные точки входа:

Режим STDIO (по умолчанию)

  • Для локальных MCP-клиентов, таких как Claude Desktop
  • Использует стандартный ввод/вывод для связи
  • Точка входа: dist/main-stdio.js
  • Запуск: npm run start:prod:stdio или node dist/main-stdio.js
  • MCPB-пакет: использует режим STDIO

HTTP-режим (Streamable HTTP)

  • Для удалённых MCP-клиентов и веб-интеграций
  • Использует протокол MCP Streamable HTTP
  • Точка входа: dist/main-http.js
  • Запуск: npm run start:prod:http или node dist/main-http.js
  • Порт по умолчанию: 3000 (настраивается через переменную окружения PORT)
  • Хост по умолчанию: 127.0.0.1 (настраивается через переменную окружения HOST)
  • MCP-эндпоинт: http://127.0.0.1:3000/ (корневой путь)

Туннельный режим (управляемый WebSocket-туннель)

  • Для веб-ИИ-ассистентов через управляемый туннельный сервис AnkiMCP со встроенной аутентификацией
  • MCP-сервер работает в процессе за транспортом в памяти; TunnelTransport владеет MCP-сервером, а TunnelClient соединяет его с туннельным сервисом через WebSocket
  • Протокол: обслуживает только ревизию MCP 2025 (STDIO и HTTP также обслуживают 2026-07-28)
  • Точка входа: dist/main-tunnel.js
  • Запуск: node dist/main-tunnel.js --tunnel (или ankimcp --tunnel)
  • Аутентификация: ankimcp --login / ankimcp --logout; учётные данные хранятся в ~/.ankimcp/credentials.json (0600)
  • Разработка: npm run start:dev:tunnel (режим наблюдения, запускает --tunnel --debug)

Сборка

npm run build  # Builds once, creates dist/ with all three entry points

main-stdio.js, main-http.js и main-tunnel.js собираются в одну и ту же директорию dist/. Выбирайте, что запускать, в зависимости от ваших потребностей.

Конфигурация HTTP-режима

Переменные окружения:

  • PORT — порт HTTP-сервера (по умолчанию: 3000)
  • HOST — адрес привязки (по умолчанию: 127.0.0.1 для localhost)
  • ALLOWED_HOSTS — дополнительные значения заголовка Host через запятую, принимаемые помимо встроенного набора loopback (localhost, 127.0.0.1, ::1). Только имена хостов, без учёта порта. По умолчанию: только loopback.
  • ALLOWED_ORIGINS — список разрешённых шаблонов Origin/Referer браузера через запятую; поддерживаются подстановочные знаки (например, https://*.ngrok.io). По умолчанию: http://localhost:*,http://127.0.0.1:*,https://localhost:*,https://127.0.0.1:*.
  • LOG_LEVEL — уровень журналирования (по умолчанию: info)

Безопасность:

  • Проверка заголовка Host (защита от DNS-rebinding) — каждый HTTP-запрос должен содержать заголовок Host, соответствующий списку разрешённых. По умолчанию принимаются только loopback-хосты (localhost, 127.0.0.1, ::1), независимо от порта. Host — это заголовок, запрещённый для браузеров, поэтому вредоносная веб-страница не может его подделать — это закрывает путь DNS-rebinding, когда переадресованная страница достигает сервера с подделанным Host и без Origin. Неразрешённый Host отклоняется с ошибкой 403.
  • Проверка заголовка Origin — браузерные запросы с присутствующим, но неразрешённым Origin/Referer отклоняются. Запросы без Origin (curl, Postman, MCP-over-HTTP клиенты) разрешены; проверка Host является защитой от rebinding.
  • По умолчанию привязывается к localhost (127.0.0.1).
  • В текущей версии аутентификация отсутствует (планируется поддержка OAuth).

Открытие HTTP-режима за пределами localhost — если вы привязываетесь к LAN/публичному адресу или размещаете сервер за обратным прокси или публичным доменом, вы обязаны установить ALLOWED_HOSTS на имя(имена) хоста(ов), которые будут использовать клиенты, иначе каждый не-loopback запрос будет отклонён с ошибкой 403:

# Bind to all interfaces and accept the machine's LAN name + a public domain
ALLOWED_HOSTS=my-nas.local,anki.example.com PORT=8080 HOST=0.0.0.0 node dist/main-http.js

Когда вы привязываетесь к 0.0.0.0/:: без ALLOWED_HOSTS, сервер записывает предупреждение при запуске о том, что будут приниматься только loopback-заголовки Host.

Docker / обратный прокси / публичный домен: применяется то же правило. В Docker запросы обычно приходят с опубликованным именем хоста контейнера или Host прокси, поэтому установите ALLOWED_HOSTS соответствующим образом. Обратный прокси (nginx, Caddy, Traefik) должен либо пересылать исходный Host и иметь это имя хоста в списке ALLOWED_HOSTS, либо переписывать вышестоящий Host на localhost. Встроенная интеграция --ngrok обрабатывает это автоматически (см. ниже).

Пример: режимы запуска

# Development - STDIO mode (watch mode with auto-rebuild)
npm run start:dev:stdio

# Development - HTTP mode (watch mode with auto-rebuild)
npm run start:dev:http

# Production - STDIO mode
npm run start:prod:stdio
# or
node dist/main-stdio.js

# Production - HTTP mode
npm run start:prod:http
# or
PORT=8080 HOST=0.0.0.0 node dist/main-http.js

Создание MCPB-пакета

Чтобы создать распространяемый MCPB-пакет:

npm run mcpb:bundle

Эта команда:

  1. Синхронизирует версию из package.json в manifest.json
  2. Удаляет старые файлы .mcpb
  3. Собирает TypeScript-проект
  4. Упаковывает dist/ и node_modules/ в файл .mcpb
  5. Запускает mcpb clean для удаления devDependencies (оптимизирует пакет с ~47MB до ~10MB)

Выходной файл будет назван anki-mcp-server-X.X.X.mcpb и может распространяться для установки в один клик.

Что входит в пакет

MCPB-пакет включает:

  • Скомпилированный JavaScript (директория dist/ — включает все три точки входа)
  • Только производственные зависимости (node_modules/ — devDependencies удалены с помощью mcpb clean)
  • Метаданные пакета (package.json)
  • Конфигурацию манифеста (manifest.json — настроен на использование main-stdio.js)
  • Иконку (icon.png)

Исходные файлы, тесты и конфигурации разработки автоматически исключаются через .mcpbignore.

Журналирование в Claude Desktop

При работе как расширение MCPB в Claude Desktop журналы записываются в:

Расположение журналов: ~/Library/Logs/Claude/ (macOS)

Журналы разделены на несколько файлов:

  • main.log — общие журналы приложения Claude Desktop
  • mcp-server-Anki MCP Server.log — сообщения протокола MCP для этого расширения
  • mcp.log — объединённые MCP-журналы всех серверов

Примечание: Вывод pino-логгера (сообщения INFO, ERROR, WARN из кода сервера) направляется в stderr и появляется в файлах журналов, специфичных для MCP. Claude Desktop определяет, какой файл журнала получает какие сообщения, но в целом:

  • Запуск приложения и связь по протоколу MCP → журнал, специфичный для MCP
  • Внутреннее журналирование сервера (pino) → как журнал, специфичный для MCP, так и иногда main.log

Для просмотра журналов в реальном времени:

tail -f ~/Library/Logs/Claude/mcp-server-Anki\ MCP\ Server.log

Отладка MCP-сервера

Вы можете отлаживать MCP-сервер с помощью MCP Inspector и подключения отладчика из вашей IDE (WebStorm, VS Code и т. д.).

Примечание для HTTP-режима: При тестировании HTTP-режима (Streamable HTTP) с MCP Inspector используйте «Connection Type: Via Proxy», чтобы избежать ошибок CORS.

Шаг 1: Настройка отладочного сервера в MCP Inspector

mcp-inspector-config.json уже включает конфигурацию отладочного сервера:

{
  "mcpServers": {
    "stdio-server-debug": {
      "type": "stdio",
      "command": "node",
      "args": ["--inspect-brk=9229", "dist/main-stdio.js"],
      "env": {
        "MCP_SERVER_NAME": "anki-mcp-stdio-debug",
        "MCP_SERVER_VERSION": "1.0.0",
        "LOG_LEVEL": "debug"
      },
      "note": "Anki MCP server with debugging enabled on port 9229"
    }
  }
}

Шаг 2: Запуск отладочного сервера

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

npm run inspector:debug

Это запустит сервер с включённой отладкой Node.js на порту 9229 и приостановит выполнение на первой строке.

Шаг 3: Подключение отладчика из вашей IDE

WebStorm
  1. Перейдите в Run → Edit Configurations
  2. Добавьте новую конфигурацию Attach to Node.js/Chrome
  3. Установите порт на 9229
  4. Нажмите Debug для подключения
VS Code
  1. Откройте панель Debug (Ctrl+Shift+D / Cmd+Shift+D)
  2. Выберите конфигурацию Debug MCP Server (Attach)
  3. Нажмите F5 для подключения

Шаг 4: Установка точек останова и отладка

После подключения вы можете:

  • Устанавливать точки останова в исходных файлах TypeScript
  • Выполнять код по шагам
  • Проверять переменные и стек вызовов
  • Использовать консоль отладки для вычисления выражений

Отладчик будет работать с source maps, позволяя отлаживать исходный код TypeScript, а не скомпилированный JavaScript.

Отладка с Claude Desktop

Вы также можете отлаживать MCP-сервер, пока он работает внутри Claude Desktop, включив отладчик Node.js и подключив вашу IDE.

Шаг 1: Настройка Claude Desktop для отладки

Обновите конфигурацию Claude Desktop, чтобы включить отладку:

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

{
  "mcpServers": {
    "anki-mcp": {
      "command": "node",
      "args": [
        "--inspect=9229",
        "<path_to_project>/anki-mcp-server/dist/main-stdio.js"
      ],
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

Ключевое изменение: Добавьте --inspect=9229 перед путём к dist/main-stdio.js

Параметры отладки:

  • --inspect=9229 — запустить отладчик немедленно, не блокируя (рекомендуется)
  • --inspect-brk=9229 — приостановить выполнение до подключения отладчика (для отладки проблем запуска)

Шаг 2: Перезапуск Claude Desktop

После сохранения конфигурации перезапустите Claude Desktop. MCP-сервер теперь будет работать с включённой отладкой на порту 9229.

Шаг 3: Подключение отладчика из вашей IDE

WebStorm
  1. Перейдите в Run → Edit Configurations
  2. Нажмите кнопку + и выберите Attach to Node.js/Chrome
  3. Настройте:
    • Name: Attach to Anki MCP (Claude Desktop)
    • Host: localhost
    • Port: 9229
    • Attach to: Node.js < 8 или Chrome or Node.js > 6.3 (в зависимости от версии WebStorm)
  4. Нажмите OK
  5. Нажмите Debug (Shift+F9) для подключения
VS Code
  1. Добавьте в .vscode/launch.json:
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Attach to Anki MCP (Claude Desktop)",
      "port": 9229,
      "skipFiles": ["<node_internals>/**"],
      "sourceMaps": true,
      "outFiles": ["${workspaceFolder}/dist/**/*.js"]
    }
  ]
}
  1. Откройте панель Debug (Ctrl+Shift+D / Cmd+Shift+D)
  2. Выберите Attach to Anki MCP (Claude Desktop)
  3. Нажмите F5 для подключения

Шаг 4: Отладка в реальном времени

После подключения вы можете:

  • Устанавливать точки останова в ваших TypeScript-исходных файлах (например, src/mcp/primitives/essential/tools/create-model.tool.ts)
  • Использовать Claude Desktop как обычно — точки останова сработают при вызове инструментов
  • Пошагово выполнять код
  • Проверять переменные и стек вызовов
  • Использовать консоль отладки

Пример: Установите точку останова в create-model.tool.ts на строке 119, затем попросите Claude создать новую модель. Отладчик остановится на вашей точке останова!

Примечание: Отладчик остаётся подключённым, пока работает Claude Desktop. Вы можете отключить/подключить его в любой момент без перезапуска Claude Desktop.

Команды сборки

npm run build              # Build the project (compile TypeScript to JavaScript)
npm run start:dev:stdio    # STDIO mode with watch (auto-rebuild)
npm run start:dev:http     # HTTP mode with watch (auto-rebuild)
npm run type-check         # Run TypeScript type checking
npm run lint               # Run ESLint
npm run mcpb:bundle        # Sync version, clean, build, and create MCPB bundle

Локальное тестирование npm-пакета

Протестируйте npm-пакет локально перед публикацией:

# 1. Create local package
npm run pack:local         # Builds and creates @ankimcp/anki-mcp-server-*.tgz

# 2. Install globally from local package
npm run install:local      # Installs from ./@ankimcp/anki-mcp-server-*.tgz

# 3. Test the command
ankimcp                    # Runs HTTP server on port 3000

# 4. Uninstall when done testing
npm run uninstall:local    # Removes global installation

Как это работает:

  • npm pack создаёт файл .tgz, идентичный тому, что создал бы npm publish
  • Установка из .tgz имитирует то, что получают пользователи из npm install -g ankimcp
  • Это позволяет протестировать полный пользовательский опыт перед публикацией в npm

Команды тестирования

npm test              # Run all tests
npm run test:unit     # Run unit tests only
npm run test:tools    # Run tool-specific tests
npm run test:workflows # Run workflow integration tests
npm run test:e2e      # Run end-to-end tests
npm run test:cov      # Run tests with coverage report
npm run test:watch    # Run tests in watch mode
npm run test:debug    # Run tests with debugger
npm run test:ci       # Run tests for CI (silent, with coverage)

Покрытие тестами

Проект поддерживает минимальные пороги покрытия 70% для:

  • Ветвей
  • Функций
  • Строк
  • Операторов

Отчёты о покрытии создаются в каталоге coverage/.

Версионирование

Этот проект следует Семантическому версионированию с подходом разработки до версии 1.0:

  • 0.x.x — Бета/разработочные версии (текущая фаза)

    • 0.1.x — Исправления ошибок и патчи
    • 0.2.0+ — Новые функции или незначительные улучшения
    • Критические изменения допустимы в версиях 0.x
  • 1.0.0 — Первый стабильный релиз

    • Будет выпущен, когда API станет стабильным и протестированным
    • Критические изменения потребуют увеличения мажорной версии (2.0.0 и т.д.)

Текущий статус: 0.22.0 — активная бета-разработка. Недавние функции включают анализ повторений по всей коллекции (review_stats теперь агрегирует данные по всем колодам, когда deck опущен), управление полями моделей (addModelField, removeModelField, renameModelField, repositionModelField), массовое создание заметок (addNotes), интегрированные ngrok-туннели (флаг --ngrok), управление медиафайлами, управление моделями/шаблонами и комплексная статистика колод. API может меняться на основе отзывов и тестирования.

Эволюция спецификации MCPB

Этот проект нацелен на спецификацию пакета MCPB от Anthropic, которая всё ещё развивается. Мы отслеживаем спецификацию на https://github.com/modelcontextprotocol/mcpb и можем вводить критические изменения для соответствия. Критические изменения разрешены в рамках схемы версионирования 0.x.x.

Похожие проекты

Если вы изучаете интеграции Anki MCP, вот другие проекты в этой области:

scorzeth/anki-mcp-server

  • Статус: Похоже, заброшен (нет недавних обновлений)
  • Ранняя реализация интеграции Anki MCP

nailuoGG/anki-mcp-server

  • Подход: Лёгкая реализация в одном файле
  • Архитектура: Процедурная структура кода со всеми инструментами в одном файле
  • Подходит для: Простых случаев использования, минимальных зависимостей

Чем этот проект отличается:

  • Архитектура корпоративного уровня: Построен на NestJS с внедрением зависимостей
  • Модульный дизайн: Каждый инструмент — отдельный класс с чётким разделением ответственности
  • Поддерживаемость: Легко расширять новыми функциями без изменения существующего кода
  • Тестирование: Комплексный набор тестов с требованием покрытия 70%
  • Безопасность типов: Строгий TypeScript с валидацией Zod
  • Обработка ошибок: Надёжная обработка ошибок с полезной обратной связью для пользователя
  • Готовность к продакшену: Правильное логирование, отчёты о прогрессе и поддержка пакетов MCPB
  • Масштабируемость: Может легко расти от базовых инструментов до сложных рабочих процессов

Случай использования: Если вам нужна надёжная основа для создания продвинутых интеграций Anki или вы планируете значительно расширить функциональность, архитектурный подход этого проекта упрощает поддержку и масштабирование с течением времени.

Полезные ссылки

Лицензия и атрибуция

Этот проект лицензирован под лицензией MIT — см. LICENSE для полного текста.

Copyright © 2026 Anatoly Tarnavsky.

Атрибуции третьих сторон

  • Anki® является зарегистрированным товарным знаком Ankitects Pty Ltd. Этот проект — неофициальный сторонний инструмент и не аффилирован с Ankitects Pty Ltd, не одобрен и не спонсируется ею. Логотип Anki используется по альтернативной лицензии для ссылки на Anki с указанием https://apps.ankiweb.net. Для официального приложения Anki посетите https://apps.ankiweb.net.

  • Model Context Protocol (MCP) — открытый стандарт от Anthropic. Логотип MCP взят из официального репозитория документации MCP и используется по лицензии MIT. Для получения дополнительной информации о MCP посетите https://modelcontextprotocol.io.

  • Это независимый проект, соединяющий технологии Anki и MCP. Все товарные знаки, знаки обслуживания, торговые наименования, названия продуктов и логотипы являются собственностью их соответствующих владельцев.