关于 Anki
anki-mcp 是通过 AnkiConnect 管理 Anki 记忆卡组的 MCP 服务,提供 35 个工具。用户可在对话中复习、查看学习统计、找出反复遗忘的卡片,并批量创建、编辑或暂停卡片。
主要功能
- 01通过对话进行卡片测验,结果写回 Anki
- 02查看到期数量、连续学习天数与复习统计
- 03查找 leech 卡片并查看复习历史
- 04批量添加笔记,并跳过重复项
- 05按标签或牌组暂停卡片,之后可精确恢复
- 06可选的 Azure 文本转语音音频生成
适用场景
- 01每天查看待复习卡片并开始一轮测验
- 02整理反复答错的卡片并批量修正内容
- 03将文章转换为填空卡片并加入指定牌组
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 Anki 的学习、卡片、笔记、牌组与笔记类型相关的工具、资源和提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
anki-mcp
通过与 Claude(或任何 MCP 客户端)对话,学习和管理你的 Anki 集合。借助 AnkiConnect,使用 35 个工具:在聊天中进行测验,查看待复习内容和记忆情况,找出总是忘记的卡片,批量创建和清理笔记,以及暂停整组卡片,直到你想恢复它们。
你可以这样提问
- “我今天要学习什么?”→ 按牌组统计待复习数量、连续学习天数和本周复习次数。
- “用我的西班牙语牌组里的 10 张待复习卡片考考我。”→ 一次一道题,自动评分,并将结果和下次复习间隔记录到 Anki。
- “我总是答错哪些卡片?帮我改进一下。”→ 找出难记卡片及其复习记录,并提供你确认后采用的改写内容。
- “暂停所有带有 HSK5 标签的内容,直到我考试,并让我之后能轻松恢复。”→ 创建命名暂停,精确恢复这些卡片,同时保留原有排程。
- “把这篇文章转换成我生物学牌组里的填空卡片。”→ 批量添加前检查重复项。
- “给这个牌组里所有没有音频的卡片添加音频。”→ 批量使用 Azure TTS。
- “把带有
grammar标签的卡片移到新的子牌组”/“将todo标签重命名为review”/“把积压的复习内容分摊到接下来两周”。
批量更改可以先通过试运行预览;删除操作始终需要确认;如果 Anki 已关闭,助手会提示你打开 Anki,而不是默默失败。
安装
你需要 Node.js 18+、正在运行的 Anki,以及 AnkiConnect 插件(代码 2055492159)。
Claude Desktop
从最新版本下载 anki-mcp.mcpb,并将其拖到设置 → 扩展中。就这么简单。
Claude Code
claude mcp add anki --scope user -- npx -y github:nietus/anki-mcp
Cursor 和其他 MCP 客户端
将以下内容添加到客户端的 MCP 配置中:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["-y", "github:nietus/anki-mcp"]
}
}
}
在 Windows 上,如果客户端无法直接启动 npx,请使用 "command": "cmd" 和 "args": ["/c", "npx", "-y", "github:nietus/anki-mcp"]。
从源代码安装
git clone https://github.com/nietus/anki-mcp
cd anki-mcp
npm install
npm run build
然后将客户端指向 node /path/to/anki-mcp/build/client.js。要自行构建 Claude Desktop 安装包,请运行 npm run pack:mcpb(输出位于 dist/anki-mcp.mcpb)。
配置
所有环境变量均为可选项。将它们放入项目文件夹中的 .env 文件,或通过 MCP 客户端传入。
| 变量 | 默认值 | 用途 |
|---|---|---|
AZURE_API_KEY | – | 启用音频工具(Azure Text-to-Speech)。 |
AZURE_REGION | eastus | Azure Speech 区域。 |
ANKI_CONNECT_HOST | http://127.0.0.1 | AnkiConnect 主机。 |
ANKI_CONNECT_PORT | 8765 | AnkiConnect 端口。 |
ANKI_CONNECT_KEY | – | AnkiConnect API 密钥(如果你在插件配置中设置了密钥)。 |
开发
npm test # unit + in-memory MCP server tests (no Anki needed)
npm run inspector # try the tools interactively
可用工具
每个工具都标注为只读、写入或破坏性操作,因此 Claude Desktop 等客户端可以自动批准读取操作,并在进行破坏性更改前询问。错误(包括“Anki 未运行”)都会以易读的工具结果返回。
大多数批量工具都以相同方式选择卡片或笔记:deckName(包括子牌组)、tags(匹配任意标签)、query(任意 Anki 搜索,条件之间使用 AND),或明确指定 cardIds/noteIds。写入工具支持 dryRun: true,可先预览更改。
学习
| 工具 | 功能 |
|---|---|
get_study_overview | 各牌组今天的新卡、学习卡和复习卡数量、今天已复习的卡片数、连续学习天数,以及 7 天/30 天总计。 |
get_due_cards / get_new_cards | 获取 num 张待学习卡片(可选指定一个 deckName),并显示每个按钮会设置的间隔。 |
answer_cards | 记录答案(cardId、ease 1-4),并获取每张卡片的新间隔。(之前名为 update_cards。) |
find_leeches | 找出最薄弱的卡片(带有 leech 标签或多次遗忘),并按遗忘次数和难度排序。 |
get_card_history | 最多 20 张卡片的完整复习记录。 |
get_retention_stats | 统计某个牌组在 N 天内的真实记忆保留率(新卡/成熟卡)、每日复习次数和耗时。 |
undo | 撤销 Anki 中的上一个操作。 |
选择和安排卡片
| 工具 | 功能 |
|---|---|
find_cards | 分页搜索(query、limit、offset);使用 include 选择要返回的部分:question、answer、fields、stats。 |
suspend_cards / unsuspend_cards | 停用/重新启用卡片,例如停用牌组 Y 中所有带有标签 X 的卡片。保留卡片的排期。停用时传入 label(笔记会添加标签 paused::<label>),之后调用 unsuspend_cards { label } 可准确恢复该组卡片,不会影响因其他原因而停用的卡片。 |
move_cards | 将卡片移至 targetDeck(若不存在则创建)。 |
reschedule_cards | set_due_date(days:0、1!、3-7)、forget(重置为新卡)或 relearn。 |
创建和编辑笔记
| 工具 | 功能 |
|---|---|
add_card | 创建一条笔记。 |
add_bulk | 创建多条笔记;跳过重复或无效的笔记,并说明原因。 |
add_cloze_cards | 根据文本和要隐藏的 terms 创建填空笔记,或根据带有 {{c1::...}} 标记的文本创建。 |
update_note_fields / bulk_update_notes | 编辑现有笔记的字段。 |
find_and_replace | 在笔记中进行普通文本或正则表达式替换,可选限制在某些 fields 中。 |
manage_tags | list(带筛选条件:标签计数)、add、remove、rename、clear_unused。 |
add_image | 从 url、本地 path 或 base64 data 向字段添加图片。 |
delete_notes | 两步删除:首次调用会预览并返回 confirmToken,第二次调用时传入该令牌即可删除。 |
音频(需要 AZURE_API_KEY)
| 工具 | 功能 |
|---|---|
add_card_with_audio | 创建一条笔记,并将根据 sourceField 生成的音频写入 audioField。 |
update_card_with_audio | 为一条现有笔记生成音频。 |
bulk_generate_audio | 为多条笔记生成音频(默认仅处理音频字段为空的笔记),每次调用最多处理 limit 条。 |
支持的语言:en、es、fr、de、it、ja、ko、pt、pt-PT、ru、zh、ar、nl、hi、tr、pl、sv、fi、da、no、cs、hu、el、he、th、vi、id、ms、ro。
牌组和笔记类型
| 工具 | 功能 |
|---|---|
get_deck_names / create_deck | 列出或创建牌组。 |
get_deck_model_info | 查看牌组使用的笔记类型(向该牌组添加卡片前调用)。 |
get_model_names / get_model_details | 列出笔记类型/字段,查看单个笔记类型的模板和 CSS。 |
edit_note_type_field | add、remove、rename 或 reposition 字段。 |
update_note_type_templates / update_note_type_styling | 替换模板或 CSS。 |
create_model | 创建笔记类型。 |
sync | 与 AnkiWeb 同步。 |
提示词
| 提示词 | 功能 |
|---|---|
quiz_me | 学习环节:一次一道题,评分后记录到 Anki。 |
make_cards | 将文本转换为独立的闪卡(添加前可预览)。 |
leech_review | 找出你总是记不住的卡片并加以改进。 |
资源
anki://collection/overview– 学习概览。anki://search/isdue、anki://search/isnew、anki://search/deckcurrent– 每项最多 50 张卡片。anki://deck/{deckName}/overview– 单个牌组的待复习数量。anki://model/{modelName}– 笔记类型的字段、模板和 CSS。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
