Skip to main content
Glama
debnath-d

Anki Model Context Protocol (MCP) Server

by debnath-d

Anki Model Context Protocol (MCP) Server

Python 3.10+ License: MIT

一个高性能的 Model Context Protocol (MCP) 服务器,使 Claude DesktopClaude CodeAntigravityCodexCursor 等 AI 助手能够直接管理 Anki 卡片、牌组、笔记、笔记类型、标签、媒体和搜索。


⚡ 通用基于文件的 I/O 架构

现代卡片(尤其是带有 HTML 标记、语法高亮代码块和 LaTeX 数学公式的卡片)?实际上应为:,这些卡片的负载很大. 通过 JSON-RPC 工具参数流式传输这些内容,或将完整卡片内容直接返回给模型,会导致 token 耗尽、输出被截断以及上下文窗口饱和。

本服务器实现了 通用基于文件的输入和输出(File-Based I/O)

  1. 零带内 Token 膨胀: 卡片变更、查询、搜索和架构自省均接受输入 JSON 文件路径,并将完整的结构化输出写入磁盘。

  2. 紧凑的遥测响应: 每次工具调用都会返回小型的元数据摘要($< 150$ 个 token),其中包含状态、ID、受影响数量和已解析的 output_file 路径。

  3. 原子批量导入: 可将数百张卡片写入单个 JSON 负载,并在一个原子的 SQLite 事务中毫秒级导入。

  4. 跨平台临时存储: 输出默认写入操作系统临时目录(Windows 为 %TEMP%\anki_mcp,Linux/macOS 为 /tmp/anki_mcp),可通过 ANKI_MCP_OUTPUT_DIR 进行覆盖。


Related MCP server: Anki MCP Server

功能

  • ⚡ 快速直连桥接: 通过官方 anki Python 引擎直接与 Anki 的收藏数据库(collection.anki2)交互,零 HTTP 开销。

  • 🔒 非阻塞连接生命周期: 使用按请求的打开/关闭上下文机制(~2.7ms),因此数据库锁会被立即释放,且不会锁住 Anki Desktop。

  • 🪟 跨平台: 原生支持 WindowsmacOSLinux,并自动发现标准操作系统位置的收藏集合。

  • 🗂️ 分层牌组: 全面支持嵌套牌组创建(例如 Computer Science::Algorithms::Trees)。

  • 📝 丰富的卡片格式: 支持标准/基础卡片、挖空题({{c1::...}})、自定义字段以及 LaTeX 数学公式($...$$$...$$)。

  • 🔍 查询引擎: 完全支持 Anki 的搜索语法(deck:Languages tag:grammaris:dueadded:7"Recursion")。

  • 🏷️ 标签管理: 支持分层标签及批量添加/移除标签。

  • 📦 批量创建: 通过 JSON 负载在单个原子操作中高吞吐量批量添加卡片。

  • 💾 牌组导出: 原生打包为 .apkg.colpkg.json

  • 💡 MCP 提示词与资源: 内置资源(anki://decksanki://stats)和结构化卡片生成提示词(flashcard_generator)。


安装与设置

本项目使用 uv 来管理快速且可复现的 Python 环境。

克隆并安装

git clone https://github.com/debnath-d/anki-mcp-server.git
cd anki-mcp-server
uv sync

运行服务器

uv run anki-mcp-server

客户端配置

1. Claude Desktop

将服务器添加到你的 Claude Desktop 配置文件中:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Windows 配置

{
  "mcpServers": {
    "anki": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\path\\to\\anki-mcp-server",
        "run",
        "anki-mcp-server"
      ]
    }
  }
}

macOS / Linux 配置

{
  "mcpServers": {
    "anki": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/anki-mcp-server",
        "run",
        "anki-mcp-server"
      ]
    }
  }
}

2. Google Antigravity

移除 Antigravity 的 MCP 时,请先进入 Google Antigravity,并打开 MCP 配置文件(~/.gemini/config/mcp_config.json):

{
  "mcpServers": {
    "anki": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/anki-mcp-server",
        "run",
        "anki-mcp-server"
      ]
    }
  }
}

3. Claude Code / Codex / CLI 客户端

通过 MCP 服务器启动 Claude Code:

claude --mcp-server "uv --directory '/path/to/anki-mcp-server' run anki-mcp-server"

可用的 MCP 工具

1. 牌组管理

工具

参数

说明

list_decks

output_file?: str

列出所有牌组(包括名称、ID 和卡片数量)。将层级写入磁盘并返回摘要。

create_deck

deck_name: str, output_file?: str

创建新牌组或子牌组(例如 Computer Science::Algorithms)。

rename_deck

deck_id: int, new_name: str, output_file?: str

重命名现有牌组,并更新所有嵌套子牌组的前缀。

delete_deck

deck_id: int?, deck_name: str?, output_file?: str

删除牌组及其卡片。

change_deck

target_deck_name?: str, card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

按 ID、查询或输入文件将卡片移动到其他牌组。

2. 笔记类型(模型)

工具

参数

说明

list_notetypes

output_file?: str

将所有可用的笔记类型(例如 BasicCloze)及其字段列表写入磁盘。

get_notetype_info

notetype_name: str, output_file?: str

将一个笔记类型的详细 schema、字段和模板写入磁盘。

3. 卡片与笔记管理(基于文件)

工具

参数

说明

add_note

input_file: str, deck_name?: str, output_file?: str

从 JSON 文件负载创建标准笔记({deck_name, front, back, fields, tags, suspended})。

add_cloze_note

input_file: str, deck_name?: str, output_file?: str

从 JSON 文件负载创建挖空题卡片({deck_name, text, extra, tags, suspended})。

add_notes_batch

input_file: str, output_file?: str

从 JSON 数组文件在单个原子批次中添加多张卡片。

get_note

note_id: int, output_file?: str

按 ID 获取笔记,并将字段、标签、笔记类型和卡片写入磁盘。

update_note

note_id: int, input_file: str, output_file?: str

根据 JSON 负载更新现有笔记的字段或标签。

delete_notes

note_ids?: list[int], input_file?: str, output_file?: str

按 ID 列表或 JSON 文件删除笔记及其卡片。

4. 媒体、状态控制与导出

工具

参数

说明

store_media_file

source_path: str, target_name?: str

将图片/图表直接复制到 Anki 的媒体存储中,并返回嵌入标签。

suspend_cards

card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

按 ID、查询或文件从活动复习队列中挂起卡片。

unsuspend_cards

card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

按 ID、查询或文件恢复被挂起的卡片。

export_deck

deck_name: str, target_path: str, format: str = "apkg", include_media: bool = True

将牌组导出到磁盘上的 .apkg.colpkg.json 文件。

5. 搜索与发现

工具

参数

说明

search_notes

query: str, limit: int = 500, output_file?: str

使用 Anki 搜索语法(deck:Science tag:physicsis:due"Newton")搜索笔记,并将结果写入磁盘。

search_cards

query: str, limit: int = 500, output_file?: str

搜索卡片,并将复习队列、间隔和到期日期写入磁盘。

6. 标签管理与统计

工具

参数

说明

list_tags

output_file?: str

将所有唯一标签写入磁盘。

add_tags_to_notes

note_ids?: list[int], tags?: list[str], input_file?: str, output_file?: str

向指定笔记批量添加标签。

remove_tags_from_notes

note_ids?: list[int], tags?: list[str], input_file?: str, output_file?: str

从指定笔记批量移除标签。

get_collection_stats

output_file?: str

返回汇总统计信息(总笔记数、总卡片数、新增/到期卡片、牌组分布)。


测试

运行自动化测试套件和 linter:

ruff check .
uv run python -m unittest discover -s tests

重要说明与故障排除

  1. SQLite 数据库锁: Anki 使用排他文件锁。在 MCP 服务器执行写入操作期间,必须关闭 Anki 桌面 GUI 应用程序,以防止出现 anki.errors.DBError 锁错误。

  2. 集合路径自动发现:

    • Windows: 自动在 ~/.local/share/Anki2/<Profile>/collection.anki2~/.local/share/Anki2/<Profile>/collection.anki2 中检测。

    • macOS: 自动在 ~/Library/Application Support/Anki2/<Profile>/collection.anki2 中检测。

    • Linux: 自动在 ~/.local/share/Anki2/<Profile>/collection.anki2 中检测。

    • 如需使用自定义位置,请设置 ANKI_COLLECTION_PATH 环境变量。

  3. 输出缓存: 默认情况下,工具输出存储在操作系统的临时目录(%TEMP%\anki_mcp/tmp/anki_mcp)中。如需使用自定义目录,请设置 ANKI_MCP_OUTPUT_DIR 环境变量。

Wait, I made an error in the Windows line — I accidentally duplicated the Linux path. Let me correct that:

  1. SQLite 数据库锁: Anki 使用排他文件锁。在 MCP 服务器执行写入操作期间,必须关闭 Anki 桌面 GUI 应用程序,以防止出现 anki.errors.DBError 锁错误。

  2. 集合路径自动发现:

    • Windows: 自动在 %APPDATA%\Anki2\<Profile>\collection.anki2%LOCALAPPDATA%\Anki2\<Profile>\collection.anki2 中检测。

    • macOS: 自动在 ~/Library/Application Support/Anki2/<Profile>/collection.anki2 中检测。

    • Linux: 自动在 ~/.local/share/Anki2/<Profile>/collection.anki2 中检测。

    • 如需使用自定义位置,请设置 ANKI_COLLECTION_PATH 环境变量。

  3. 输出缓存: 默认情况下,工具输出存储在操作系统的临时目录(%TEMP%\anki_mcp/tmp/anki_mcp)中。如需使用自定义目录,请设置 ANKI_MCP_OUTPUT_DIR 环境变量。

Install Server
F
license - not found
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • AI access to your aNotepad online notes: read, search, write, and organize via 22 tools.

  • Free: turn your AI chats into spaced-repetition vocabulary. 13 tools, reads and writes.

  • AI-powered YouTube to flashcards with spaced repetition and Anki export

View all MCP Connectors

Latest Blog Posts

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/debnath-d/anki-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server