使用说明
Anki MCP服务器
概述
该项目提供了一个模型上下文协议(MCP)服务器,充当到 安基 通过间隔重复软件 Anki Connect 它允许MCP兼容的客户端(如AI助手或其他应用程序)与您的Anki收藏进行交互,管理套牌、卡片和笔记。
特性
- 将一套全面的Anki操作作为MCP工具公开。
- 管理与本地Anki Connect实例的通信。
- 提供以下工具:
- 牌组管理(列表、创建、删除、移动卡片、获取统计数据)
- 卡片管理(查找、获取信息、暂停、取消暂停、检查状态、忘记、重新学习)
- 笔记管理(添加、更新、查找、获取信息、管理标签、删除)
- 模型管理(列表名称、列表字段)
- 其他操作(请求权限、获取版本、同步)
先决条件
- 安基: 您必须在系统上安装并运行Anki。
- Anki Connect附加组件: Anki Connect插件必须安装在Anki中并运行。默认情况下,它会监听
http://127.0.0.1:8765. - python 兼容的Python版本(参见
pyproject.toml). - 紫外线: 建议用于管理Python环境和依赖关系(紫外线装置).
安装
- 克隆存储库:
git clone <repository-url> # Replace with the actual URL if applicable cd anki-mcp-server - 安装依赖项:
uv sync
运行服务器
在启动服务器之前,确保Anki在启用Anki Connect插件的情况下运行。
您可以通过多种方式运行服务器:
-
直接执行(使用uv):
uv run python main.py这将使用stdio传输启动服务器,适用于直接集成或测试。
-
开发模式(使用MCP检查器):
uv run mcp dev main.py这将启动服务器并打开MCP检查器工具,允许您交互式地测试可用的工具和资源。
-
为Claude Desktop安装:
uv run mcp install main.py --name "Anki Bridge"这将服务器安装到Claude Desktop(如果可用)中,使Anki工具可以在助手中访问。
用法
一旦服务器运行并连接到MCP客户端(如Claude Desktop通过 mcp install 或使用MCP协议的另一个应用程序):
- 请求权限: 第一个动作通常应该是
anki_request_permission。如果Anki Connect不信任客户端的来源,Anki中将会出现一个确认弹出窗口。 - 使用工具: 调用下面列出的可用工具与您的Anki系列进行交互。
配置
- Anki连接URL: 服务器使用由定义的URL连接到Anki Connect
ANKICONNECT_URL常数inmain.py(默认值:http://127.0.0.1:8765).如果您的Anki Connect设置使用了不同的地址或端口,请修改此设置。
可用工具
服务器公开以下工具,镜像Anki-Connect API操作:
甲板动作
anki_deck_names:获取甲板名称的完整列表。anki_deck_names_and_ids:获取甲板名称及其ID。anki_create_deck(deck_name: str):创建新的空甲板。anki_change_deck(card_ids: List[int], deck_name: str):将卡片移动到不同的牌组。anki_delete_decks(deck_names: List[str]):删除指定的牌组及其卡片。anki_get_deck_stats(deck_names: List[str]):获取指定甲板的统计信息。
卡片操作
anki_find_cards(query: str):使用Anki搜索查询查找卡片。anki_cards_info(card_ids: List[int]):获取有关多张卡的详细信息。anki_cards_to_notes(card_ids: List[int]):获取给定卡ID的注释ID。anki_suspend_cards(card_ids: List[int]):暂停指定的卡。anki_unsuspend_cards(card_ids: List[int]):取消使用指定的卡。anki_are_suspended(card_ids: List[int]):检查卡是否被暂停。anki_are_due(card_ids: List[int]):检查卡片是否需要审核。anki_forget_cards(card_ids: List[int]):将指定的卡重置为新卡。anki_relearn_cards(card_ids: List[int]):将指定的卡片置于重新学习状态。
注释操作
anki_add_note(...):使用指定的面板、模型、字段、选项、标记和介质创建新的Anki注释。anki_update_note_fields(...):修改现有注释的字段和介质。anki_find_notes(query: str):使用Anki搜索查询查找笔记。anki_notes_info(note_ids: List[int]):获取有关多个笔记的详细信息。anki_get_note_tags(note_id: int):获取特定注释的标记。anki_add_tags(note_ids: List[int], tags: str):在笔记中添加空格分隔的标记。anki_remove_tags(note_ids: List[int], tags: str):从笔记中删除空格分隔的标记。anki_update_note_tags(note_id: int, tags: List[str]):设置注释的标签,替换旧标签。anki_delete_notes(note_ids: List[int]):删除指定的笔记及其卡片。
模型动作
anki_model_names():获取模型(注释类型)名称的列表。anki_model_field_names(model_name: str):获取给定模型的字段名列表。
其他操作
anki_request_permission():请求使用Anki-Connect API的权限。应该先打电话。anki_version():获取Anki-Connect API的版本。anki_sync():将本地Anki集合与AnkiWeb同步。
贡献
欢迎投稿!请参阅项目的贡献指南(如有)。
许可证
指定分发此项目所依据的许可证(例如,MIT许可证)。
