muxuuu/TalkToAnki
If you are the rightful owner of TalkToAnki and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
TalkToAnki is an optimized Model Context Protocol (MCP) tool that seamlessly integrates with Anki via AnkiConnect, providing powerful Anki operation capabilities for AI assistants.
anki_get_deck_names
Retrieve a list of all deck names.
anki_create_deck
Create a new deck.
anki_get_deck_stats
Get statistics for a specific deck.
anki_add_note
Add a new note to a deck.
anki_find_notes
Find notes based on a query.
TalkToAnki
一个优化的 MCP (Model Context Protocol) 工具,通过 AnkiConnect 与 Anki 无缝集成,为AI助手提供强大的 Anki 操作能力。
✨ 功能特性
- 🔍 智能查询: 查询卡片和卡组信息
- ➕ 内容管理: 创建卡片和卡组
- 📊 数据分析: 获取复习统计和学习数据
- 🔄 同步支持: 完整的同步操作支持
- 🛡️ 错误处理: 完善的错误处理和重试机制
- ⚡ 性能优化: 连接池、并发控制和资源管理
- 📦 单文件部署: 所有功能集成在一个文件中,部署简单
- 🚀 零配置启动: 无需复杂的模块管理和导入
🏗️ 项目结构
TalkToAnki/
├── talktoanki_server.py # ⭐ 完整的单文件服务器(包含所有功能)
├── requirements.txt # 项目依赖
├── pyproject.toml # 现代Python包配置
├── README.md # 项目文档
├── README_EN.md # 英文文档
├── CONTRIBUTING.md # 贡献指南
├── CHANGELOG.md # 变更日志
├── LICENSE # MIT许可证
├── .gitignore # Git忽略文件
└── examples/ # 配置示例
└── cursor_mcp_config.json
🛠️ 系统要求
- Python: 3.8+
- Anki: 桌面版(需要安装 AnkiConnect 插件)
- MCP客户端: Cursor 或其他支持MCP的AI客户端
🚀 快速开始
1. 克隆项目
git clone https://github.com/your-username/TalkToAnki.git
cd TalkToAnki
2. 安装依赖
pip install -r requirements.txt
3. 安装AnkiConnect插件
- 打开Anki桌面版
- 进入 工具 > 插件 > 获取插件
- 输入插件代码:
2055492159
- 重启Anki
4. 配置MCP客户端
Cursor配置
将以下配置添加到Cursor的MCP配置文件 (~/.cursor/mcp.json
):
{
"mcpServers": {
"anki": {
"command": "python",
"args": ["/path/to/your/project/TalkToAnki/talktoanki_server.py"],
"env": {
"ANKI_CONNECT_URL": "http://localhost:8765",
"ANKI_CONNECT_VERSION": "6",
"LOG_LEVEL": "INFO"
}
}
}
}
💡 提示: 将
/path/to/your/project/TalkToAnki/
替换为实际的项目路径
5. 启动服务
- 确保 Anki 桌面版正在运行
- 重启 Cursor
- 开始使用 Anki MCP 工具!
🛠️ 支持的工具
卡组管理
anki_get_deck_names
: 获取所有卡组列表anki_create_deck
: 创建新卡组anki_get_deck_stats
: 获取卡组统计信息
卡片操作
anki_add_note
: 添加新卡片anki_find_notes
: 查询卡片anki_get_note_info
: 获取卡片详细信息
系统操作
anki_sync
: 同步Anki数据库anki_get_server_info
: 获取服务器状态和配置信息
🆕 高级卡片管理(新增)
anki_update_note
: 更新现有卡片内容和标签anki_delete_notes
: 批量删除卡片anki_move_notes
: 将卡片移动到指定卡组anki_suspend_notes
: 暂停或恢复卡片学习
📊 学习进度分析(新增)
anki_get_due_cards
: 获取到期需要复习的卡片信息anki_get_study_progress
: 获取详细的学习进度统计anki_get_review_history
: 获取复习历史数据和成功率分析
⚡ 批量操作(新增)
anki_batch_add_notes
: 批量添加多张卡片anki_batch_update_tags
: 批量更新卡片标签anki_export_deck
: 导出指定卡组为.apkg文件
🔧 模板管理(新增)
anki_change_note_type
: 更改卡片的笔记类型(模板)anki_get_note_types
: 获取所有可用的笔记类型列表
📊 使用示例
创建卡组并添加卡片
{
"action": "create_deck",
"deck_name": "我的新卡组",
"success": true,
"message": "卡组 '我的新卡组' 创建成功"
}
查找卡片
{
"action": "find_notes",
"query": "deck:我的新卡组",
"note_ids": [1234567890],
"count": 1,
"success": true
}
🆕 批量添加卡片
{
"action": "batch_add_notes",
"deck_name": "英语单词",
"total_attempted": 3,
"successful_count": 3,
"failed_count": 0,
"successful_note_ids": [1234567890, 1234567891, 1234567892],
"success": true,
"message": "批量添加完成:成功 3 张,失败 0 张"
}
🆕 学习进度统计
{
"action": "get_study_progress",
"deck_name": "英语单词",
"analysis_period_days": 7,
"total_cards": 150,
"new_cards": 20,
"young_cards": 30,
"mature_cards": 100,
"recent_reviews": 45,
"mature_percentage": 66.67,
"new_percentage": 13.33,
"success": true
}
🆕 复习历史分析
{
"action": "get_review_history",
"deck_name": "英语单词",
"period_days": 30,
"total_reviews": 120,
"again_count": 10,
"hard_count": 15,
"good_count": 70,
"easy_count": 25,
"success_rate_percentage": 79.17,
"total_studied_cards": 100,
"success": true
}
🆕 模板更改
{
"action": "change_note_type",
"original_note_ids": [1234567890, 1234567891],
"new_note_ids": [1234567900, 1234567901],
"original_model": "Cloze",
"target_model": "挖空模板",
"total_processed": 2,
"successful_count": 2,
"failed_count": 0,
"field_mapping_used": "auto",
"success": true,
"message": "成功将 2 张卡片从 'Cloze' 更改为 '挖空模板'"
}
🆕 笔记类型查询
{
"action": "get_note_types",
"total_count": 5,
"note_types": ["Basic", "Cloze", "挖空模板", "Basic (reversed)", "Image Occlusion"],
"detailed_info": [
{
"name": "Basic",
"fields": ["Front", "Back"]
},
{
"name": "Cloze",
"fields": ["Text", "Extra"]
}
],
"success": true,
"message": "找到 5 个笔记类型"
}
🔧 配置选项
环境变量
变量名 | 默认值 | 说明 |
---|---|---|
ANKI_CONNECT_URL | http://localhost:8765 | AnkiConnect服务地址 |
ANKI_CONNECT_VERSION | 6 | AnkiConnect API版本 |
LOG_LEVEL | INFO | 日志级别 |
REQUEST_TIMEOUT | 30.0 | 请求超时时间(秒) |
CONNECTION_TIMEOUT | 10.0 | 连接超时时间(秒) |
MAX_RETRIES | 3 | 最大重试次数 |
高级配置
更多配置选项请参考 config.py
文件。
🧪 测试
要测试服务器是否正常工作,可以:
- 确保 Anki 桌面版正在运行
- 启动 MCP 服务器
- 在支持 MCP 的客户端中调用任何工具进行验证
基本功能验证:
- 连接验证:调用
anki_get_server_info
- 卡组操作:调用
anki_get_deck_names
- 卡片操作:创建测试卡组并添加卡片
🐛 故障排除
常见问题
-
"0 tools enabled"
- 确保 Anki 桌面版正在运行
- 检查 AnkiConnect 插件是否正确安装
- 验证 MCP 配置文件路径正确
-
连接被拒绝
- 确认 AnkiConnect 插件已启动
- 检查防火墙设置
- 验证端口 8765 未被占用
-
工具无响应
- 检查 Anki 是否有弹窗等待用户操作
- 重启 Anki 和 MCP 客户端
- 查看日志文件排查具体错误
调试模式
设置环境变量启用调试:
export LOG_LEVEL=DEBUG
🤝 贡献
欢迎贡献!请查看 了解详细指南。
开发环境设置
# 克隆仓库
git clone https://github.com/your-username/TalkToAnki.git
cd TalkToAnki
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装开发依赖
pip install -e ".[dev]"
# 验证安装
python talktoanki_server.py --help
📝 许可证
本项目采用 MIT 许可证。详见 文件。
🙏 致谢
- AnkiConnect - 提供 Anki 集成能力
- FastMCP - 现代化的 MCP 服务器框架
- Anki - 优秀的间隔重复学习软件
📈 项目状态
- ✅ 稳定版本: v1.0.0
- ✅ 生产就绪: 经过全面测试
- ✅ 持续维护: 活跃开发和支持
- ✅ 社区友好: 欢迎贡献和反馈
让AI助手帮助你更好地学习! 🚀