anki-mcp
一个模型上下文协议 (MCP) 服务器,用于通过 AnkiConnect 插件与 Anki 抽认卡进行交互。该服务器将 AnkiConnect 操作以 MCP 工具的形式公开,并组织成逻辑服务。
先决条件
Anki 桌面应用程序
在 Anki 中安装并配置 AnkiConnect 插件
Python 3.8+
uv(用于运行和安装依赖项,可选但推荐)
Related MCP server: Anki MCP Server
安装
用法
要运行 MCP 服务器:
服务器将启动并监听 MCP 请求,通常与http://127.0.0.1:8765上的 AnkiConnect 交互。
检查服务器
您可以使用 MCP 检查器查看可用的工具:
MCP 客户端配置
如果您要将其与 MCP 客户端(例如 AI 助手框架)集成,则需要对其进行配置以找到此服务器。以下是示例配置代码片段:
可用的 MCP 工具
此 MCP 服务器通过按服务分组的工具提供对 Anki 功能的访问。工具名称与 AnkiConnect 操作直接对应。
甲板服务( deck.* )
deck.deckNamesAndIds:获取甲板名称及其各自 ID 的完整列表。deck.getDeckConfig:获取给定甲板名称的配置组对象。deck.deckNames:获取当前用户的卡组名称的完整列表。deck.createDeck:创建一个新的空牌组。deck.deleteDecks:删除指定的甲板。deck.changeDeck:将卡片移至不同的牌组。deck.saveDeckConfig:保存甲板配置组。
注释服务( note.* )
note.findNotes:返回给定 Anki 搜索查询的注释 ID。note.notesInfo:返回指定注释 ID 的信息。note.getNoteTags:获取特定笔记 ID 的标签。note.addNote:创建新注释。note.updateNoteFields:修改现有注释的字段。note.deleteNotes:删除指定的注释。note.addNotes:创建多个注释。note.addTags:为指定的注释添加标签。note.removeTags:从指定注释中删除标签。note.updateNote:修改现有注释的字段和/或标签。
卡服务( card.* )
card.findCards:返回给定 Anki 搜索查询的卡片 ID。card.cardsInfo:返回指定卡 ID 的信息。card.cardsToNotes:返回给定卡片 ID 的注释 ID。card.areSuspended:检查指定的卡是否被暂停。card.cardsModTime:返回指定卡 ID 的修改时间。card.suspended:检查单张卡是否被暂停。card.suspend:暂停指定的卡。card.unsuspend:取消暂停指定的卡。card.setSpecificValueOfCard:设置单张卡的具体值(谨慎使用)。
模型服务( model.* )(注释类型)
model.modelNamesAndIds:获取模型(注释类型)名称及其 ID 的完整列表。model.findModelsByName:获取提供的模型名称的模型定义。model.modelFieldNames:获取给定模型名称的字段名称。model.modelTemplates:获取指定模型的每个卡片的模板内容。model.modelStyling:获取给定模型名称的 CSS 样式。model.createModel:创建一个新模型(注释类型)。model.updateModelTemplates:修改现有模型的模板。model.updateModelStyling:修改现有模型的 CSS 样式。model.modelFieldAdd:向现有模型添加新字段。model.modelFieldRemove:从现有模型中删除一个字段。
媒体服务( media.* )
media.retrieveMediaFile:检索媒体文件的 base64 编码内容。media.getMediaFilesNames:获取与 glob 模式匹配的媒体文件的名称。media.storeMediaFile:存储媒体文件(来自 base64、路径或 URL)。media.deleteMediaFile:删除指定的媒体文件。
发展
为开发进行设置:
运行测试
待办事项
[ ] 完成添加所有 AnkiConnect 工具