
Anki Server
通过 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
安装
-
克隆此仓库:
git clone https://github.com/yourusername/anki-mcp-server.git cd anki-mcp-server
-
安装依赖项:
npm install
-
构建项目:
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: 打开终端并运行
ifconfig
或ipconfig getifaddr en0
(对于 WiFi) - Windows: 打开命令提示符并运行
ipconfig
- Linux: 打开终端并运行
ip addr show
或hostname -I
在输出中查找 IPv4 地址,如 192.168.x.x
或 10.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
使用
- 确保 Anki 正在运行并已安装 AnkiConnect
- 运行 MCP 服务器:
npm start
配置 Claude Desktop
要将此 MCP 服务器与 Claude Desktop 一起使用:
-
打开 Claude Desktop
-
编辑位于以下位置的 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
- macOS:
-
在
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):是否返回全面的卡片数据或仅返回 IDcount
(可选,数字):要返回的随机卡片数量(默认为所有卡片)
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
进行连接:- 如配置部分所述找到您的本地 IP 地址
- 更新您的
.env
文件以使用ANKI_CONNECT_URL=http://YOUR_LOCAL_IP:8765
- 确保 AnkiConnect 配置为允许来自您的 IP 地址的连接
- 在进行这些更改后重新启动 MCP 服务器
- 标签未出现 - 确保您向
tag_reviewed_cards
工具提供了有效的卡片 ID
测试模式
为了在不影响实际 Anki 数据的情况下进行测试,您可以使用模拟模式:
- 在
.env
文件中设置ANKI_MOCK_MODE=true
,或使用提供的.env.test
文件 - 使用
npm run start:test
运行服务器
在模拟模式下,服务器将模拟所有 Anki 操作而不实际连接到 Anki。这对于测试 Claude 集成而不会影响数据非常有用。
开发
要在开发模式下运行服务器并启用热重载:
npm run dev
在启用模拟模式的情况下进行开发:
npm run dev:test
许可证
MIT