小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
0
最近更新:1个月前

通过 AnkiConnect API 将 Claude Desktop 连接到 Anki,从而能够检索和分析“顽固”卡片以改进间隔重复学习习惯。

Anki MCP 服务器

一个用于 Claude Desktop 的 MCP(Model Context Protocol)服务器,通过 AnkiConnect 连接到 Anki 并检索带有 "leech" 标签的卡片。

功能

  • 通过 AnkiConnect API 连接到 Anki
  • 检索带有 "leech" 标签的卡片
  • 为卡片添加带有日期戳的复习标签
  • 提供全面的卡片数据供 Claude 分析
  • 可与 Claude Desktop 一起使用

前提条件

  • Anki 安装并运行
  • 在 Anki 中安装 AnkiConnect 插件
  • Node.js 和 npm

安装

  1. 克隆此仓库:

    复制代码
    git clone https://github.com/yourusername/anki-mcp-server.git
    cd anki-mcp-server
  2. 安装依赖项:

    复制代码
    npm install
  3. 构建项目:

    复制代码
    npm run build

配置

服务器可以通过环境变量进行配置。复制提供的示例文件以创建您自己的配置:

复制代码
cp .env.example .env

然后编辑 .env 文件以自定义您的设置:

环境变量 描述 默认值
ANKI_CONNECT_URL Anki Connect API 的 URL http://localhost:8765
ANKI_CONNECT_VERSION 要使用的 Anki Connect API 版本 6
ANKI_MOCK_MODE 启用测试模式 (true/false) false

如果未设置环境变量,服务器将使用默认值。

查找 AnkiConnect 的本地 IP 地址

如果连接到 localhost 不起作用,您需要使用计算机的本地 IP 地址。在 .env 文件中配置:

复制代码
ANKI_CONNECT_URL=http://YOUR_LOCAL_IP:8765

查找本地 IP 地址的方法:

  • macOS: 打开终端并运行 ifconfigipconfig getifaddr en0(对于 WiFi)
  • Windows: 打开命令提示符并运行 ipconfig
  • Linux: 打开终端并运行 ip addr showhostname -I

在输出中查找 IPv4 地址,如 192.168.x.x10.x.x.x

测试配置

为了测试,提供了一个单独的配置文件 .env.test

复制代码
cp .env.example .env.test

编辑 .env.test 以设置特定于测试的值:

复制代码
ANKI_CONNECT_URL=http://localhost:8765
ANKI_CONNECT_VERSION=6
ANKI_MOCK_MODE=true

要以测试模式运行:

复制代码
npm run start:test

使用

  1. 确保 Anki 正在运行并已安装 AnkiConnect
  2. 运行 MCP 服务器:
    复制代码
    npm start

配置 Claude Desktop

要将此 MCP 服务器与 Claude Desktop 一起使用:

  1. 打开 Claude Desktop

  2. 编辑位于以下位置的 Claude Desktop 配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  3. mcpServers 部分添加以下配置:

json 复制代码
{
  "mcpServers": {
    "anki": {
      "command": "node",
      "args": ["path/to/anki-mcp-server/dist/index.js"]
    }
  }
}

"path/to/anki-mcp-server" 替换为您克隆此仓库的实际路径。

MCP 工具使用

配置完成后,您可以在 Claude 中使用以下工具:

示例用法

复制代码
Could you analyze my Anki leech cards and suggest ways to improve my study?

Claude 将使用 MCP 服务器检索您的 leech 卡片并进行分析。

可用工具

get_leech_cards

从 Anki 检索标记为 leech 的卡片。

参数:

  • detailed(可选,布尔值,默认:true):是否返回全面的卡片数据或仅返回 ID
  • count(可选,数字):要返回的随机卡片数量(默认为所有卡片)

tag_reviewed_cards

为指定的卡片添加带有日期戳的 "reviewed" 标签。这允许您跟踪哪些卡片已在 Claude 中复习过。

参数:

  • card_ids(必需,数字数组):要标记为已复习的卡片 ID 数组
  • custom_tag_prefix(可选,字符串,默认:"見直し"):标签的自定义前缀

标签格式为 見直し::YYYYMMDD(如果您指定了自定义前缀,则使用该前缀)。

在 Claude 中的示例用法:

复制代码
I've reviewed these cards, please tag them as reviewed: [1234567890, 1234567891]

故障排除

  • "Could not connect to Anki" - 确保 Anki 正在运行并且 AnkiConnect 已正确安装
  • "No leech cards found" - 您在 Anki 中没有标记为 "leech" 的卡片
  • 与 localhost 的连接问题 - 如果您无法使用 localhost 进行连接:
    1. 如配置部分所述找到您的本地 IP 地址
    2. 更新您的 .env 文件以使用 ANKI_CONNECT_URL=http://YOUR_LOCAL_IP:8765
    3. 确保 AnkiConnect 配置为允许来自您的 IP 地址的连接
    4. 在进行这些更改后重新启动 MCP 服务器
  • 标签未出现 - 确保您向 tag_reviewed_cards 工具提供了有效的卡片 ID

测试模式

为了在不影响实际 Anki 数据的情况下进行测试,您可以使用模拟模式:

  1. .env 文件中设置 ANKI_MOCK_MODE=true,或使用提供的 .env.test 文件
  2. 使用 npm run start:test 运行服务器

在模拟模式下,服务器将模拟所有 Anki 操作而不实际连接到 Anki。这对于测试 Claude 集成而不会影响数据非常有用。

开发

要在开发模式下运行服务器并启用热重载:

复制代码
npm run dev

在启用模拟模式的情况下进行开发:

复制代码
npm run dev:test

许可证

MIT