Skip to main content
Glama

TalkToAnki

中文 English

License: MIT Python 3.8+ FastMCP AnkiConnect

一个优化的 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插件

  1. 打开Anki桌面版

  2. 进入 工具 > 插件 > 获取插件

  3. 输入插件代码: 2055492159

  4. 重启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. 启动服务

  1. 确保 Anki 桌面版正在运行

  2. 重启 Cursor

  3. 开始使用 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 文件。

🧪 测试

要测试服务器是否正常工作,可以:

  1. 确保 Anki 桌面版正在运行

  2. 启动 MCP 服务器

  3. 在支持 MCP 的客户端中调用任何工具进行验证

基本功能验证:

  • 连接验证:调用 anki_get_server_info

  • 卡组操作:调用 anki_get_deck_names

  • 卡片操作:创建测试卡组并添加卡片

🐛 故障排除

常见问题

  1. "0 tools enabled"

    • 确保 Anki 桌面版正在运行

    • 检查 AnkiConnect 插件是否正确安装

    • 验证 MCP 配置文件路径正确

  2. 连接被拒绝

    • 确认 AnkiConnect 插件已启动

    • 检查防火墙设置

    • 验证端口 8765 未被占用

  3. 工具无响应

    • 检查 Anki 是否有弹窗等待用户操作

    • 重启 Anki 和 MCP 客户端

    • 查看日志文件排查具体错误

调试模式

设置环境变量启用调试:

export LOG_LEVEL=DEBUG

🤝 贡献

欢迎贡献!请查看 CONTRIBUTING.md 了解详细指南。

开发环境设置

# 克隆仓库
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 许可证。详见 LICENSE 文件。

🙏 致谢

  • AnkiConnect - 提供 Anki 集成能力

  • FastMCP - 现代化的 MCP 服务器框架

  • Anki - 优秀的间隔重复学习软件

📈 项目状态

  • 稳定版本: v1.0.0

  • 生产就绪: 经过全面测试

  • 持续维护: 活跃开发和支持

  • 社区友好: 欢迎贡献和反馈


让AI助手帮助你更好地学习! 🚀

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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/muxuuu/TalkToAnki'

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