关于 Anki MCP Server
Anki MCP Server 是一个 MCP 服务,通过 AnkiConnect 让 LLM 管理 Anki 抽认卡软件中的牌组、笔记、标签和笔记类型。适合希望用 AI 辅助制作和整理记忆卡片的用户。
主要功能
- 01牌组、笔记与标签的增删改查
- 02支持按 Anki 查询语法搜索笔记
- 03批量创建笔记
- 04笔记类型结构查询与创建
- 05通过 AnkiWeb 触发同步,需显式确认
适用场景
- 01让 Agent 根据学习材料批量生成抽认卡
- 02按标签或查询条件整理已有笔记
- 03查询牌组与笔记类型结构,辅助制作卡片
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 anki_* 系列工具和 anki:// 资源,用于读取和修改 Anki 集合。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Anki MCP 服务
一个模型上下文协议(MCP)服务,可通过 AnkiConnect 让大模型与 Anki 闪卡软件交互。
![]()
功能
工具
anki_check_connection- 检查 AnkiConnect 是否可访问anki_list_decks- 列出所有可用的 Anki 牌组,可选择同时显示牌组 IDanki_create_deck- 创建新的 Anki 牌组anki_list_tags- 列出当前牌组集合中使用的所有标签anki_add_note_tags- 为一个或多个笔记添加标签anki_remove_note_tags- 从一个或多个笔记中移除标签anki_create_note- 创建新笔记anki_batch_create_notes- 一次创建多条笔记anki_search_notes- 使用 Anki 查询语法搜索笔记anki_get_note_info- 获取笔记的详细信息anki_update_note- 更新现有笔记的字段和/或标签anki_delete_note- 删除一条或多条笔记anki_list_note_types- 列出所有可用的笔记类型anki_create_note_type- 创建新的笔记类型anki_get_note_type_info- 获取笔记类型的详细结构anki_sync- 触发 AnkiWeb 同步;由于完整同步可能合并或覆盖本地和远程集合,必须提供{"confirm": true}。成功表示 Anki 已接受请求,并不代表 AnkiWeb 已收到数据;Anki 中阻塞的对话框可能会导致同步请求静默排队
为兼容现有客户端,仍可调用 create_note 和 list_decks 等不带前缀的旧工具名称,但新的 Agent 集成应使用 anki_* 名称。
资源
anki://decks/all- 包含牌组 ID 的完整可用牌组列表anki://tags/all- 完整标签列表anki://note-types/all- 所有可用笔记类型的列表anki://note-types/all-with-schemas- 所有笔记类型的详细结构信息anki://note-types/{modelName}- 特定笔记类型的详细结构信息
前置条件
- 系统已安装 Anki
- Anki 中已安装 AnkiConnect 插件
- Node.js 20.11 或更高版本
配置
通过桌面扩展安装(.mcpb)
本仓库支持 Anthropic 桌面扩展(MCPB)。在 Claude Desktop 中使用此服务的最简单方式是安装打包好的 .mcpb 文件。
- 使用提供的脚本在本地生成
.mcpb文件:
npm run mcpb
- 打开 Claude Desktop 设置 → 扩展,将生成的
.mcpb文件拖入,然后点击安装。
此操作会验证 manifest.json 并生成 .mcpb 归档文件,随后即可按上述步骤安装。有关桌面扩展的更多信息,请参阅 Anthropic 的公告:桌面扩展:一键为 Claude Desktop 安装 MCP 服务。
在 Claude Desktop 中使用
将服务添加到 claude_desktop_config.json:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server"]
}
}
}
使用自定义 AnkiConnect 端口
如果 AnkiConnect 运行在其他端口,可使用 --port 参数指定:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server", "--port", "8080"]
}
}
}
Cline 配置
在 VSCode 的设置文件 cline_mcp_settings.json 中,将服务添加到 Cline MCP 设置中。
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server"]
}
}
}
使用自定义 AnkiConnect 端口
对于 Cline,也可以指定自定义端口:
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["--yes", "anki-mcp-server", "--port", "8080"]
}
}
}
Agent 技能(Claude Code)
安装 Anki 技能,为 Claude Code 提供所有 Anki 工具和工作流的内置知识:
npx skills add nailuoGG/anki-mcp-server@anki
安装后,当你要求 Claude Code 创建闪卡、管理牌组或批量导入笔记时,它会自动使用此技能。
注意: 请勿将打包好的
.mcpb版本用作 MCP 服务——它会将 Electron 元数据输出到 stdout,从而破坏 MCP stdio 协议。请改用npx -y anki-mcp-server。
开发
打包桌面扩展(.mcpb)
为 Claude Desktop 创建可分发的桌面扩展包:
npm run mcpb
这会构建项目,并从当前仓库生成 .mcpb 压缩包,同时验证 manifest.json。将其拖入 Claude Desktop 的扩展设置中进行测试。参考:桌面扩展:一键安装 MCP 服务到 Claude Desktop。
发布到 MCP Registry
此服务会在发布新版本时自动发布到 MCP Registry。发布流程包括:
- 自动化 CI/CD:成功发布后,GitHub Actions 会自动将其发布到 NPM 和 MCP Registry
- 架构验证:发布前,会根据 MCP 架构验证
server.json文件 - 版本同步:确保
package.json、manifest.json和server.json中的版本保持同步 - 全面测试:发布前进行多版本 Node.js 测试、代码检查和验证
- Beta 支持:自动发布 Beta 版本以测试新功能
手动验证
你可以在本地验证 MCP 服务配置:
npm run validate-mcp
这会下载最新的 MCP 架构并验证你的 server.json 文件。
手动发布
如果需要手动发布,可以使用 MCP Publisher CLI:
# Install MCP Publisher
curl -L "https://github.com/modelcontextprotocol/registry/releases/download/v1.1.0/mcp-publisher_1.1.0_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
chmod +x mcp-publisher
sudo mv mcp-publisher /usr/local/bin/
# Login to MCP Registry
mcp-publisher login github-oidc
# Publish to MCP Registry
mcp-publisher publish
设置
- 安装依赖:
npm install
- 构建服务:
npm run build
- 在开发期间自动重新构建:
npm run watch
测试
运行测试套件:
npm test
这会对 MCP 工具架构、结构化工具结果、笔记创建、搜索/更新/删除工作流以及错误处理执行单元测试。这些测试使用模拟的 AnkiConnect 客户端;如需手动进行集成检查,请在运行中的 Anki 实例上使用 MCP Inspector。
MCP 评估
只读 Agent 评估资源位于 evals/。将测试数据加载到一次性 Anki 配置文件中,然后针对 MCP 服务运行 XML 问题,以验证 Agent 能否发现牌组、标签、笔记类型架构、资源和结构化工具结果。
调试
由于 MCP 服务通过 stdio 通信,我们建议使用 MCP Inspector:
npm run inspector
它提供基于浏览器的界面,可用于:
- 监控 MCP 消息
- 测试工具调用
- 查看服务日志
- 调试通信问题
使用示例
- 创建一个新牌组:
Create a new Anki deck called "Programming"
- 添加一张基础卡片:
Create an Anki card in the "Programming" deck with:
Front: What is a closure in JavaScript?
Back: A closure is the combination of a function and the lexical environment within which that function was declared.
- 添加一张填空删除卡片:
Create a cloze card in the "Programming" deck with:
Text: In JavaScript, {{c1::const}} declares a block-scoped variable that cannot be {{c2::reassigned}}.
- 删除一条笔记:
Delete note ID 1234567890
- 一次删除多条笔记:
Delete note IDs 1234567890, 9876543210, and 1122334455
- 为笔记添加标签:
Add tags "review" and "mcp" to note IDs 1234567890 and 9876543210
贡献
- Fork 此仓库
- 创建你的功能分支
- 运行测试:
npm test - 提交拉取请求
Star 历史
致谢
图标由 macOS Icons 提供
许可证
MIT 许可证 - 详情请参阅 LICENSE 文件
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。