返回市场
ANKI连接-MCP

ANKI连接-MCP

作者:spacholski122513 星标更新:2025-07-21

项目介绍

Anki Connect MCP Server

这是一个通过AnkiConnect插件与Anki无缝集成的模型上下文协议(MCP)服务器。该服务器使AI助手和其他MCP客户端能够以编程方式与您的Anki闪卡集合进行交互。

项目

什么是Anki Connect?

AnkiConnect 是一个强大的Anki插件,它通过REST API公开了Anki的功能。它允许外部应用程序:

  • 创建、修改和删除闪卡
  • 管理卡片组及其配置
  • 通过编程控制Anki的GUI
  • 搜索并检索卡片信息
  • 管理标签和笔记类型
  • 对卡片和笔记执行批量操作

什么是MCP(模型上下文协议)?

模型上下文协议是一种标准化的方式,用于AI助手连接到外部数据源和工具。这个MCP服务器充当MCP客户端(如Claude Desktop)和AnkiConnect之间的桥梁,使AI助手能够通过对话自然地帮助您管理Anki闪卡。

功能

此MCP服务器通过以下工具提供了对AnkiConnect功能的全面访问:

闪卡管理

  • create_flashcard() - 使用正面和背面内容创建新闪卡
  • add_note() - 添加带有自定义字段和标签的笔记
  • add_notes() - 批量添加多个笔记
  • update_note_fields() - 更新现有笔记字段
  • find_notes() - 使用Anki查询语法搜索笔记

卡片组管理

  • deck_names() - 获取所有卡片组名称
  • deck_names_and_ids() - 获取带有ID的卡片组名称
  • change_deck() - 在卡片组之间移动卡片
  • delete_decks() - 删除卡片组及其可选卡片
  • get_deck_config() - 检索卡片组配置设置

卡片操作

  • find_cards() - 搜索卡片
  • cards_info() - 获取详细卡片信息
  • suspend() / unsuspend() - 暂停/取消暂停卡片
  • are_suspended() / are_due() - 检查卡片状态

GUI控制

  • gui_deck_browser() - 打开卡片组浏览器
  • gui_deck_review() - 开始卡片组复习
  • gui_browse() - 使用搜索打开卡片浏览器
  • gui_add_cards() - 打开添加卡片对话框

实用工具

  • version() - 获取AnkiConnect版本
  • get_tags() - 检索所有标签
  • multi() - 批量执行多个AnkiConnect请求

预备条件

1. 安装AnkiConnect插件

  1. 打开Anki
  2. 转到工具插件
  3. 点击获取插件...
  4. 输入代码:2055492159
  5. 点击确定并重新启动Anki

2. 配置AnkiConnect(可选)

AnkiConnect开箱即用,但您可以自定义其设置:

  1. 转到工具插件
  2. 选择AnkiConnect并点击配置
  3. 如有需要,修改设置(默认端口是8765)
  4. 更改后重启Anki

安装

  1. 克隆此仓库:
git clone https://github.com/spacholski1225/anki-connect-mcp.git
cd anki-connect-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

MCP客户端配置

Claude Desktop

要使用此MCP服务器与Claude Desktop,需在您的MCP设置文件中添加以下配置:

MCP配置文件的位置:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

配置选项:

选项1:使用Node.js(本地安装)

{
  "mcpServers": {
    "anki-connect-mcp": {
      "command": "node",
      "args": [
        "dist/index.js"
      ],
      "env": {},
      "disabled": false,
      "alwaysAllow": [
        "deck_names",
        "cards_info",
        "deck_names_and_ids",
        "gui_deck_browser"
      ]
    }
  }
}

选项2:使用npx(NPM包)

然后配置您的MCP客户端:

{
  "mcpServers": {
    "anki-connect": {
      "command": "npx",
      "args": [
        "@spacholski1225/anki-connect-mcp"
      ],
      "env": {},
      "disabled": false,
      "alwaysAllow": [
        "deck_names",
        "cards_info",
        "deck_names_and_ids",
        "gui_deck_browser"
      ]
    }
  }
}

选项3:使用Docker

{
  "mcpServers": {
    "anki-connect": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--network=host",
        "-e", "ANKI_CONNECT_URL=http://host.docker.internal:8765",
        "spacholski/anki-connect-m-最新版"
      ],
      "env": {},
      "disabled": false,
      "alwaysAllow": [
        "deck_names",
        "cards_info",
        "deck_names_and_ids",
        "gui_deck_browser"
      ]
    }
  }
}

Docker特定的AnkiConnect配置:

当使用Docker选项时,必须使用特定设置来配置AnkiConnect,以便允许Docker容器访问:

  1. 在Anki中转到工具插件
  2. 选择AnkiConnect并点击配置
  3. 使用以下设置更新配置:
{
    "apiKey": null,
    "apiLogPath": null,
    "ignoreOriginList": [],
    "webBindAddress": "0.0.0.0",
    "webBindPort": 8765,
    "webCorsOriginList": [
        "http://localhost",
        "http://host.docker.internal",
        "http://host.docker.internal:3000"
    ]
}

关键Docker配置点:

  • webBindAddress: "0.0.0.0" - 允许AnkiConnect接受来自任何IP地址的连接(对于Docker容器是必需的)
  • webCorsOriginList - 必须包括"http://host.docker.internal"及相关来源,以允许来自Docker容器的跨域请求
  • 更改这些配置后重启Anki

重要提示:

  • 对于Node.js选项:用实际构建的index.js文件路径替换args中的路径
  • 对于npx选项:使用已发布的NPM包@spacholski1225/anki-connect-mcp - 不需要本地安装
  • 对于Docker选项:使用预构建的Docker镜像spacholski/anki-connect-mcp:latest
  • alwaysAllow数组包含每次不需要确认的工具
  • 确保在使用MCP服务器之前,Anki正在运行且启用了AnkiConnect
  • 对于Docker选项,--network=host标志允许容器访问主机上的AnkiConnect

使用示例

一旦与类似Claude Desktop的MCP客户端配置好,您可以自然地与您的Anki集合互动:

  • "创建一张关于法国首都的闪卡"
  • "显示我所有的卡片组名称"
  • "查找所有标记为'词汇'的卡片"
  • "暂停'难词'卡片组中的所有卡片"
  • "在Anki中打开卡片组浏览器"

故障排除

常见问题

  1. 连接被拒绝:确保Anki正在运行并且已安装AnkiConnect
  2. 端口冲突:检查端口8765是否可用或配置AnkiConnect使用不同的端口
  3. 权限错误:确保MCP服务器具有正确的文件系统权限
  4. 未找到工具:验证MCP客户端配置并重新启动客户端

贡献

欢迎贡献!请随时提交问题、功能请求或拉取请求。

许可证

ISC许可证

参考资料