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
Бесшовная интеграция Anki с AI-ассистентами через Model Context Protocol
Бета-версия — проект находится в активной разработке. API и функции могут меняться.
Сервер Model Context Protocol (MCP), который позволяет AI-ассистентам взаимодействовать с Anki — приложением для интервального повторения карточек.
Преобразите свой опыт работы с Anki с помощью взаимодействия на естественном языке — как с личным репетитором. AI-ассистент не просто показывает вопросы и ответы; он может объяснять концепции, делать процесс обучения более увлекательным и человечным, предоставлять контекст и адаптироваться к вашему стилю обучения. Он может создавать и редактировать заметки на лету, превращая ваши учебные сессии в динамичные беседы. Скоро появятся новые функции!
Примеры и обучающие материалы
Для получения подробных руководств, реальных примеров и пошаговых инструкций по использованию этого MCP-сервера с Claude Desktop посетите:
ankimcp.ai — полная документация с практическими примерами и вариантами использования
См. docs/ для дополнительной документации, включая руководство по настройке рецензента и образец колоды Anki.
Примеры использования
Три репрезентативных запроса, показывающих потоки инструментов, которые обеспечивает этот сервер:
-
«Помоги мне повторить мою испанскую колоду». — Ассистент синхронизируется с AnkiWeb (
sync), получает карточки, подлежащие повторению (get_due_cardsс фильтром по колоде), показывает каждую карточку (present_card) и записывает вашу оценку (rate_card). Естественный учебный диалог с объяснениями, адаптированными под вас. -
«Создай 10 карточек арабской лексики с RTL-стилизацией». — Ассистент выводит список типов заметок (
modelNames), при необходимости создает пользовательскую RTL-модель (createModel+updateModelStylingдля CSS справа налево), затем пакетно создает карточки (addNotes). -
«Импортируй это изображение из моей папки Загрузки на лицевую сторону выбранной заметки». — Ассистент загружает локальный файл (
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— Загрузка медиафайла как содержимого base64storeMediaFile— Загрузка медиафайла из данных base64, абсолютного пути к файлу или URLdeleteMediaFile— Удаление медиафайла из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:
- Загрузите последний пакет
.mcpbсо страницы Релизы - В Claude Desktop установите расширение:
- Способ 1: Перейдите в Настройки → Расширения, затем перетащите файл
.mcpb - Способ 2: Перейдите в Настройки → Разработчик → Расширения → Установить расширение, затем выберите файл
.mcpb
- Способ 1: Перейдите в Настройки → Расширения, затем перетащите файл
- При необходимости настройте URL AnkiConnect (по умолчанию
http://localhost:8765) - Перезапустите 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(или запускаете за обратным прокси/публичным доменом), сервер по умолчанию принимает только заголовкиHostloopback для защиты от 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_URL | URL WebSocket туннельного сервера (значение флага --tunnel/--login переопределяет это) | wss://tunnel.ankimcp.ai |
TUNNEL_AUTH_CLIENT_ID | OAuth 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_URL | URL AnkiConnect | http://localhost:8765 |
ANKI_CONNECT_API_VERSION | Версия API | 6 |
ANKI_CONNECT_API_KEY | Ключ API, если настроен в AnkiConnect | - |
ANKI_CONNECT_TIMEOUT | Таймаут запроса в мс | 5000 |
READ_ONLY | Включить режим только для чтения (true или 1) | false |
PORT | HTTP-режим: порт для прослушивания (флаг --port имеет приоритет) | 3000 |
HOST | HTTP-режим: адрес для привязки (флаг --host имеет приоритет) | 127.0.0.1 |
ALLOWED_HOSTS | HTTP-режим: дополнительные значения заголовка Host, принимаемые помимо loopback (имена хостов через запятую). Требуется при привязке к LAN/публичному адресу или работе за обратным прокси. См. Конфигурация HTTP-режима. | только loopback |
ALLOWED_ORIGINS | HTTP-режим: разделенный запятыми список разрешенных шаблонов Origin/Referer браузера (поддерживаются подстановочные знаки, например https://*.ngrok.io). | http://localhost:*,http://127.0.0.1:*,https://localhost:*,https://127.0.0.1:* |
TUNNEL_SERVER_URL | URL 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
Эта команда:
- Синхронизирует версию из
package.jsonвmanifest.json - Удаляет старые файлы
.mcpb - Собирает TypeScript-проект
- Упаковывает
dist/иnode_modules/в файл.mcpb - Запускает
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
- Перейдите в Run → Edit Configurations
- Добавьте новую конфигурацию Attach to Node.js/Chrome
- Установите порт на
9229 - Нажмите Debug для подключения
VS Code
- Откройте панель Debug (Ctrl+Shift+D / Cmd+Shift+D)
- Выберите конфигурацию Debug MCP Server (Attach)
- Нажмите 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
- Перейдите в Run → Edit Configurations
- Нажмите кнопку + и выберите Attach to Node.js/Chrome
- Настройте:
- Name:
Attach to Anki MCP (Claude Desktop) - Host:
localhost - Port:
9229 - Attach to:
Node.js < 8илиChrome or Node.js > 6.3(в зависимости от версии WebStorm)
- Name:
- Нажмите OK
- Нажмите Debug (Shift+F9) для подключения
VS Code
- Добавьте в
.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"]
}
]
}
- Откройте панель Debug (Ctrl+Shift+D / Cmd+Shift+D)
- Выберите Attach to Anki MCP (Claude Desktop)
- Нажмите 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 или вы планируете значительно расширить функциональность, архитектурный подход этого проекта упрощает поддержку и масштабирование с течением времени.
Полезные ссылки
- Документация Model Context Protocol
- Документация API AnkiConnect
- Загрузка Claude Desktop
- Создание расширений для Desktop (блог Anthropic)
- Репозиторий MCP-серверов
- Документация NestJS
- Официальный сайт 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. Все товарные знаки, знаки обслуживания, торговые наименования, названия продуктов и логотипы являются собственностью их соответствующих владельцев.