AnkiMCP Server
AnkiMCP Server (Аддон)
Аддон для Anki, который предоставляет доступ к вашей коллекции для ИИ-ассистентов через Model Context Protocol (MCP).
Что это такое?
AnkiMCP Server запускает локальный MCP-сервер внутри Anki, позволяя ИИ-ассистентам, таким как Claude, взаимодействовать с вашей коллекцией карточек. Это открывает возможности для учебных сессий с ИИ, создания карточек и управления коллекцией.
Часть проекта ankimcp.ai.
Related MCP server: Anki MCP Server
Примечание при первом запуске
При первом запуске этот аддон загружает pydantic_core (~2 МБ) из PyPI. Это необходимо, так как pydantic_core содержит специфичные для платформы бинарные файлы (Windows/macOS/Linux), которые невозможно включить в один файл аддона.
Возможности
Локальный HTTP-сервер — по умолчанию работает на
http://127.0.0.1:3141/Протокол MCP — совместим с любым MCP-клиентом (Claude Desktop и др.)
Автозапуск — сервер запускается автоматически при открытии Anki
Поддержка туннелей — работает с Cloudflare Tunnel, ngrok и т.д.
Кроссплатформенность — работает на macOS, Windows и Linux (x64 и ARM)
Установка
Из AnkiWeb (рекомендуется)
Откройте Anki и перейдите в Инструменты → Дополнения → Получить дополнения...
Введите код:
124672614Перезапустите Anki
Из GitHub Releases
Скачайте
anki_mcp_server.ankiaddonиз ReleasesДважды щелкните для установки или используйте Инструменты → Дополнения → Установить из файла...
Перезапустите Anki
NixOS
С использованием flakes (рекомендуется)
Добавьте входные данные flake и используйте предварительно собранный пакет:
# flake.nix
{
inputs.anki-mcp.url = "github:ankimcp/anki-mcp-server-addon";
outputs = { nixpkgs, anki-mcp, ... }: {
# Option A: Standalone — Anki with the addon pre-installed
environment.systemPackages = [
anki-mcp.packages.${system}.default
];
# Option B: Composable with other addons via overlay
nixpkgs.overlays = [ anki-mcp.overlays.default ];
environment.systemPackages = [
(pkgs.anki.withAddons [ pkgs.ankiAddons.anki-mcp-server ])
];
};
}Без flakes
# configuration.nix
{ pkgs, ... }:
let
python3 = pkgs.python3;
ankiMcpPythonDeps = python3.withPackages (ps: with ps; [
mcp pydantic pydantic-settings starlette uvicorn anyio httpx websockets
]);
anki-mcp-server = pkgs.anki-utils.buildAnkiAddon (finalAttrs: {
pname = "anki-mcp-server";
version = "0.13.0";
src = pkgs.fetchFromGitHub {
owner = "ankimcp";
repo = "anki-mcp-server-addon";
rev = "v${finalAttrs.version}";
hash = ""; # nix will tell you the correct hash on first build
};
sourceRoot = "${finalAttrs.src.name}/anki_mcp_server";
});
ankiWithMcp = pkgs.anki.withAddons [ anki-mcp-server ];
ankiWrapped = pkgs.symlinkJoin {
name = "anki-with-mcp";
paths = [ ankiWithMcp ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/anki \
--prefix PYTHONPATH ':' "${ankiMcpPythonDeps}/${python3.sitePackages}"
'';
};
in
{
environment.systemPackages = [ ankiWrapped ];
}Использование
Сервер запускается автоматически при открытии Anki. Проверить статус можно через Инструменты → AnkiMCP Server Settings...
Подключение к Claude Desktop
Требуется установленный Node.js. Добавьте в конфигурацию Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json на macOS):
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["mcp-remote", "http://127.0.0.1:3141"]
}
}
}Примечание: Claude Desktop не поддерживает HTTP-серверы в своем JSON-конфиге напрямую —
mcp-remoteобеспечивает соединение через stdio.
Подключение к Claude Code
claude mcp add anki --transport http http://127.0.0.1:3141/Конфигурация
Редактируется через Инструменты → Дополнения → AnkiMCP Server → Config в Anki:
{
"mode": "http",
"http_port": 3141,
"http_host": "127.0.0.1",
"http_path": "",
"cors_origins": [],
"cors_expose_headers": ["mcp-session-id", "mcp-protocol-version"],
"auto_connect_on_startup": true,
"disabled_tools": [],
"media_import_dir": "",
"media_allowed_types": [],
"media_allowed_hosts": []
}Отключение инструментов
Скройте определенные инструменты или действия от ИИ-клиентов, чтобы уменьшить использование токенов:
{
"disabled_tools": [
"sync",
"card_management:bury",
"card_management:unbury"
]
}"tool_name"— отключает весь инструмент целиком"tool_name:action"— отключает конкретное действие внутри многофункционального инструмента
Отключенные инструменты полностью удаляются из схемы MCP — ИИ-клиенты их не видят. Опечатки в названиях инструментов/действий вызовут предупреждения в консоли.
Пользовательский путь
Установите http_path, чтобы обслуживать MCP-эндпоинт по пользовательскому пути. Полезно при публикации Anki через туннель (Cloudflare, ngrok), чтобы избежать полностью открытого эндпоинта:
{
"http_path": "my-secret-path"
}Сервер будет доступен по адресу http://localhost:3141/my-secret-path/ вместо корня. Оставьте пустым для поведения по умолчанию.
Конфигурация CORS
Чтобы разрешить браузерным MCP-клиентам (например, веб-версии MCP Inspector) доступ, добавьте разрешенные источники:
{
"cors_origins": ["https://inspector.example.com", "http://localhost:5173"]
}Используйте ["*"], чтобы разрешить все источники (не рекомендуется для продакшена).
Настройка cors_expose_headers определяет, какие заголовки ответа могут читать браузеры. Значения по умолчанию (mcp-session-id, mcp-protocol-version) необходимы для работы протокола MCP Streamable HTTP в браузерах.
Безопасность медиафайлов
Спасибо Hideaki Takahashi (Колумбийский университет) за ответственное раскрытие уязвимости обхода пути к медиафайлам.
Инструмент store_media_file проверяет все входные данные для предотвращения атак типа path traversal и SSRF:
Пути к файлам ограничены только медиафайлами (изображения, аудио, видео) через проверку MIME-типа
URL-адреса должны использовать
http://илиhttps://и не могут указывать на частные/внутренние сетиИмена файлов очищаются от последовательностей обхода пути
Дополнительная защита через конфигурацию:
{
"media_import_dir": "/Users/me/anki-media",
"media_allowed_types": ["application/pdf"],
"media_allowed_hosts": ["192.168.1.50", "my-nas.local"]
}media_import_dir— ограничить импорт файлов этим деревом каталогов (пусто = без ограничений)media_allowed_types— разрешить дополнительные MIME-типы помимо изображений/аудио/видеоmedia_allowed_hosts— разрешить определенным хостам обходить блокировку частных сетей
Доступные инструменты
Основные инструменты
Инструмент | Описание |
| Синхронизация коллекции с AnkiWeb |
| Список всех колод в коллекции |
| Создание новой колоды |
| Поиск заметок с использованием синтаксиса поиска Anki |
| Получение подробной информации о заметках |
| Добавление новой заметки в колоду |
| Пакетное добавление до 100 заметок в одну колоду с одной моделью. Использует нативный пакетный API Anki для атомарной отмены. Поддерживает частичный успех — отдельные ошибки не влияют на остальные |
| Управление карточками с 9 действиями: |
| Управление тегами с 5 действиями: |
| Жизненный цикл фильтруемых колод: |
| Обновление полей существующих заметок |
| Удаление заметок из коллекции |
| Получение следующей карточки для повторения (поддерживает |
| Получение содержимого карточки для повторения |
| Оценка карточки после повторения (Снова/Трудно/Хорошо/Легко) |
| Список доступных типов заметок |
| Получение имен полей и описаний для типа заметки |
| Получение CSS-стилей для типа заметки |
| Обновление CSS-стилей для типа заметки |
| Создание нового типа заметки |
| Сохранение медиафайла (изображение/аудио) через base64, путь к файлу или URL. Пути к файлам проверяются по списку разрешенных типов; URL проверяются на SSRF |
| Список медиафайлов, соответствующих шаблону |
| Перемещение медиафайла в корзину Anki (можно восстановить через Check Media) |
Инструменты FSRS
Инструмент | Описание |
| Получение параметров планировщика FSRS для пресетов колод |
| Обновление параметров FSRS (веса, желаемое удержание, максимальный интервал) |
| Получение состояния памяти FSRS (стабильность, сложность, извлекаемость) для карточек |
| Запуск оптимизации параметров FSRS с использованием встроенного оптимизатора Anki |
Инструменты GUI
Эти инструменты взаимодействуют с пользовательским интерфейсом Anki:
Инструмент | Описание |
| Открытие браузера карточек с поисковым запросом |
| Открытие диалога добавления карточек |
| Открытие редактора для конкретной заметки |
| Получение информации о текущей отображаемой карточке |
| Показать сторону вопроса текущей карточки |
| Показать сторону ответа текущей карточки |
| Выбор конкретной карточки в режиме повторения |
| Переход к браузеру колод |
| Отмена последнего действия |
Ресурсы
Ресурс | URI | Описание |
|
| Версия Anki, профиль и информация о планировщике |
|
| Справочник синтаксиса поисковых запросов Anki |
|
| Документация модели данных (сущности, поля, связи) |
|
| Статистика обучения за сегодня |
|
| Прогноз повторений на 30 дней |
|
| Общая статистика коллекции |
|
| Сводка конфигурации и параметров FSRS |
Промпты
Промпт | Описание |
| Управляемый рабочий процесс сессии повторения (интерактивный, быстрый или голосовой режим) |
Требования
Anki 25.07 или новее (поставляется с Python 3.13)
Anki 25.02 и более ранние версии поставляются с Python 3.9, который не поддерживается — MCP SDK требует Python 3.10+ (#8)
Архитектура
Аддон запускает MCP-сервер в фоновом потоке с использованием HTTP-транспорта (FastMCP + uvicorn). Все операции Anki передаются в основной поток Qt через систему очередей, следуя той же проверенной схеме, что и AnkiConnect.
Подробности см. в Документации по разработке дополнений Anki.
Разработка
Запуск E2E-тестов
E2E-тесты запускаются против реального экземпляра Anki в Docker с использованием headless-anki.
# Install test dependencies
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
# Build the addon
./package.sh
# Start Anki container
cd .docker && docker compose up -d && cd ..
# Run tests (waits for server automatically)
pytest tests/e2e/ -v
# Stop container
cd .docker && docker compose downИли используйте сокращения Makefile:
make e2e # Build, start container, run tests, stop
make e2e-up # Just start container
make e2e-test # Just run tests
make e2e-down # Just stop containerCI
E2E-тесты запускаются автоматически при пуше в любую ветку и при создании PR в main. См. .github/workflows/e2e.yml.
Лицензия
AGPL-3.0-or-later
Ссылки
ankimcp.ai - Домашняя страница проекта
MCP Protocol - Спецификация Model Context Protocol
Anki Add-on Docs - Официальная документация по разработке дополнений Anki
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- FlipnemOAuthcom.flipnem
Build and study spaced-repetition flashcards with your agent.
Connect AI to your flomo notes. Search, create, edit notes and manage tags via MCP.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables AI assistants to interact with the Anki flashcard application for studying, deck management, and note creation. It supports natural language interaction for reviewing cards, searching content, and managing media files across local and remote environments.1,716467MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Anki flashcard collections by creating, searching, and updating cards through a standardized interface. It supports media handling, batch operations, and review scheduling via the AnkiConnect add-on.62MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Anki flashcard collections through the AnkiConnect add-on, allowing creation, modification, searching, and management of flashcards and decks.2524MIT
- AlicenseNot gradedqualityCmaintenanceEnables LLMs to interact with Anki flashcard collections, including deck management, note search, viewing contents, and editing fields.26MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ankimcp/anki-mcp-server-addon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server