该项目提供了一个模型上下文协议(MCP)服务器,作为与通过 Anki-Connect 插件连接的 Anki 间隔重复软件之间的桥梁。它允许兼容MCP的客户端(如AI助手或其他应用程序)与您的Anki收藏进行交互,管理牌组、卡片和笔记。
http://127.0.0.1:8765。pyproject.toml)。git clone <repository-url> # 根据实际情况替换URL
cd anki-mcp-server
uv sync
在启动服务器之前,请确保已启用Anki-Connect插件并正在运行Anki。
您可以使用多种方式运行服务器:
直接执行(使用uv):
uv run python main.py
这将使用标准IO传输启动服务器,适合直接集成或测试。
开发模式(使用MCP Inspector):
uv run mcp dev main.py
这将启动服务器并打开MCP Inspector工具,允许您交互式地测试可用工具和资源。
安装到Claude桌面:
uv run mcp install main.py --name "Anki Bridge"
这将把服务器安装到Claude桌面(如果可用),使Anki工具可以在助手内访问。
一旦服务器运行并与MCP客户端(如通过 mcp install 的Claude桌面或其他使用MCP协议的应用程序)连接:
anki_request_permission。如果客户端的来源未被Anki-Connect信任,将在Anki中弹出确认对话框。main.py 中定义的 ANKICONNECT_URL 常量连接到Anki-Connect(默认: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许可证)。