使用说明
Anki MCP服务器
一种模型上下文协议(MCP)服务器,使LLM能够通过AnkiConnect与Anki闪存卡软件进行交互。
特性
工具
list_decks-列出所有可用的Anki甲板create_deck-创建新的Anki甲板create_note-创建新笔记(基本或完形)batch_create_notes-一次创建多个笔记search_notes-使用Anki查询语法搜索笔记get_note_info-获取有关笔记的详细信息update_note-更新现有注释delete_note-删除注释list_note_types-列出所有可用的笔记类型create_note_type-创建新的笔记类型get_note_type_info-获取笔记类型的详细结构
资源
anki://decks/all-可用甲板的完整列表anki://note-types/all-所有可用笔记类型列表anki://note-types/all-with-schemas-所有笔记类型的详细结构信息anki://note-types/{modelName}-特定笔记类型的详细结构信息
先决条件
- 安基 已安装并正在运行
- AnkiConnect Anki中安装的插件
安装
开发安装
# Clone the repository
git clone <repository-url>
cd anki-tutor
# Create virtual environment and install
uv venv
uv pip install -e ".[dev]"
使用Claude Desktop
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"anki": {
"command": "uv",
"args": ["run", "anki-mcp-server"]
}
}
}
使用自定义AnkiConnect端口
{
"mcpServers": {
"anki": {
"command": "uv",
"args": ["run", "anki-mcp-server", "--port", "8080"]
}
}
}
用法示例
创建基本卡
"Create an Anki card in the 'Default' deck:
Front: What is the capital of France?
Back: Paris"
创建Cloze卡
"Create a cloze card in the 'Programming' deck:
In Python, {{c1::list comprehensions}} provide a concise way to create {{c2::lists}}."
批量创建卡片
"Create 5 vocabulary cards for Spanish in the 'Spanish' deck from this list:
- hello: hola
- goodbye: adiós
- thank you: gracias
- please: por favor
- you're welcome: de nada"
工作流程:PDF到Anki Pipeline
该项目支持将教育PDF转换为Anki抽认卡的完整流程:
第一阶段:PDF处理
PDF → Docling Raw JSON → Intermediate JSON
第一步:将PDF转换为原始文档
- 使用Docling DocumentConverter提取文档结构
- 保留节、表、图像、公式和层次结构
- 输出:
*_docling.json和*_docling.md文件 - 地点:
data/input/intermediate/docling_raw/
步骤2:转换为中间格式
- 将文档输出转换为结构化部分
- 提取层次结构、元数据和内容关系
- 输出:
*.json具有标准化结构的文件 - 地点:
data/input/intermediate/
第2阶段:闪存卡生成和导入
Intermediate JSON → LLM via MCP → Anki (via AnkiConnect)
步骤3:通过LLM生成闪卡
LLM分析中间JSON内容,并生成具有经过验证的发行版的抽认卡:
- 55%的卡 -填写定义、公式、概念的空白处
- 30%KPRIM卡 -四个具有真/假评估的陈述
- 10%多项选择 -可能有多个正确答案
- 5%单选 -一个正确答案
步骤4:批量导入Anki
- 通过以下方式创建甲板结构
create_deck工具 - 通过以下方式批量导入10-12张卡
batch_create_notes - 使用
allow_duplicate=true遇到类似卡片时的参数 - 在中生成导入报告
data/progress/目录
完整示例
1. Source: data/input/pdfs/pgm/exams/midterm-exam.pdf
2. Convert to Docling Raw:
→ data/input/intermediate/docling_raw/midterm-exam_docling.json
→ data/input/intermediate/docling_raw/midterm-exam_docling.md
3. Convert to Intermediate:
→ data/input/intermediate/midterm-exam.json
4. Generate & Import:
→ LLM analyzes content
→ Generates 50 cards (28 Cloze, 15 KPRIM, 5 MC, 2 SC)
→ Creates deck: PGM::MidtermExam
→ Imports in 5 batches (10-12 cards each)
5. Report:
→ data/progress/midterm-exam-import-report.md
最佳实践
批量导入策略:
- 每批处理10-12张卡,以获得最佳可靠性
- 监控成功率,必要时进行调整
- 使用
allow_duplicate=true适用于具有类似图案的KPRIM卡
质量跟踪:
- 每次会话后生成详细的导入报告
- 跟踪卡的分发、覆盖范围和成功率
- 将报告存储在
data/progress/供参考
卡分发:
- 维持55/30/10/5的比例,以促进全面学习
- 平衡理论知识(完形填空)和应用(KPRIM/MC/SC)
- 涵盖源材料中的所有主要主题
发展
运行测试
pytest
代码质量
# Format code
ruff format .
# Lint code
ruff check .
# Auto-fix issues
ruff check --fix .
本地运行
# Default port (8765)
uv run anki-mcp-server
# Custom port
uv run anki-mcp-server --port 8080
# With debug logging
uv run anki-mcp-server --log-level DEBUG
建筑
client.py-AnkiConnect API包装器(反腐败层)tools.py-用于所有Anki操作的MCP工具处理程序resources.py-带缓存的MCP资源处理程序server.py-主MCP服务器实现__main__.py-CLI入口点
故障排除
“无法连接到Anki”
- 确保Anki正在运行
- 验证是否安装了AnkiConnect插件
- 检查AnkiConnect是否在正确的端口上侦听(默认值:8765)
- 重新启动Anki并重试
“未找到甲板”
- 首先在Anki中手动创建甲板,或
- 使用
create_deck创建笔记前的工具
“未找到注释类型”
- 使用
list_note_types查看可用类型 - 使用
get_note_type_info查看必填字段 - 确保字段名称完全匹配(区分大小写)
许可证
MIT许可证