Anki智能卡片管理服务

一个基于模型上下文协议(MCP)的服务器,连接Anki与AI工具,实现智能化的卡片管理和学习辅助。

  • by here-tunan
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 here-tunan/anki-mcp-server

使用说明

MCP服务器 Anki

中文文档 | 英语

一个模型上下文协议(MCP)服务器,它作为Anki与AI工具之间的桥梁,实现智能卡片管理和学习辅助。

💡(灯泡图标,常用于表示想法、创意或灵感) 兼容性这台服务器与……一起工作 任何兼容MCP的人工智能工具 包括Claude Code、Cline、Zed AI等。在本文档中,我们以Claude Code为例进行说明,但其他工具的设置过程类似。

🌟 特点

  • 📚 书籍或书本的符号,可直接翻译为“书”或“书籍”,在具体语境中也可保持符号形式以表示书籍的概念。 甲板管理获取牌组列表,查看牌组统计数据
  • 🔍(放大镜图标,常用于表示搜索、查看细节等动作) 卡片搜索使用Anki的高级查询语法搜索卡片
  • 加号 智能创作利用AI辅助创建和管理Anki卡片
  • ✏️ 一支笔 卡片编辑更新现有卡片的字段和内容
  • 🗑️(垃圾桶) 卡片删除删除不需要的卡片和便签
  • 📊(表格/数据图表) 数据分析获取学习统计数据和进度信息
  • 🔧 修理工具、螺丝刀等工具的符号,常用于表示需要修理或维护的物品或场景。 模板管理查看和使用不同的笔记类型

📋 前提条件

  1. Anki 桌面版 - 下载Anki
  2. AnkiConnect 插件 - 在Anki中安装(代码: 2055492159)
  3. Node.js - 版本16或更高
  4. 与MCP兼容的AI工具 - 例如:

🚀 快速入门

1. 安装AnkiConnect

在Anki中:

  1. 工具 → 插件 → 获取插件
  2. 输入代码: 2055492159
  3. 重启Anki

2. 配置您的MCP客户端

以下示例使用的是Claude Code,但其他MCP兼容工具的配置方式类似。

选项A:使用命令行

# For Claude Code
claude mcp add anki -- npx mcp-server-anki

# For other tools, consult their documentation for the equivalent command

选项B:手动配置

将服务器添加到您的MCP客户端配置文件中:

{
  "mcp": {
    "servers": {
      "anki": {
        "command": "npx",
        "args": ["mcp-server-anki"]
      }
    }
  }
}

📖 使用指南

基本工作流程

  1. 启动Anki - 确保Anki已启用AnkiConnect并正在运行
  2. 启动MCP服务器 - 由Claude Code自动启动
  3. 使用AI工具 - 通过Claude代码与Anki进行交互

示例对话

User: Show me the learning progress for my "English Vocabulary" deck

Claude: I'll check the statistics for your "English Vocabulary" deck...
[Calls get_deck_stats tool]

User: Create a new English word card for "ephemeral"

Claude: I'll create this word card for you...
[Calls add_note tool]

🛠️ 可用工具

工具名称 描述 参数
get_deck_names 获取所有牌组名称 无
get_cards_in_deck 从特定牌组中获取卡片 deckName
get_deck_stats 获取牌组统计数据 deckName
search_cards 搜索卡片 query
add_note 添加新笔记 deckName, modelName, fields, tags
update_note 更新现有备注字段 noteId, fields
get_note_info 获取详细的笔记信息 noteId
delete_notes 删除一个或多个备注 noteIds
get_models 获取所有笔记类型 无
get_model_fields 获取笔记类型字段 modelName

🏗️ 项目结构

mcp-server-anki/
├── src/
│   ├── index.ts           # MCP server entry point
│   ├── ankiConnect.ts      # AnkiConnect API client
│   └── tools/              # MCP tool definitions
│       ├── deckTools.ts    # Deck-related tools
│       ├── cardTools.ts    # Card-related tools
│       └── noteTools.ts    # Note-related tools
├── dist/                   # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md

🔧 开发

构建命令

# Development mode (watch for changes)
npm run dev

# Production build
npm run build

建筑学

Claude Code (MCP Client) ←→ Anki MCP Server ←→ AnkiConnect ←→ Anki Desktop

API 文档

获取牌组名称

获取所有牌组名称的列表。

返回值:

["Default", "English Vocabulary", "Programming"]

搜索卡片(query)

使用Anki查询语法搜索卡片。

参数:

  • queryAnki查询字符串(例如。, deck:English is:due)

查询语法示例:

  • deck:DeckName - 特定甲板
  • tag:TagName - 按标签
  • is:due - 两张牌
  • is:new - 新卡片
  • added:7 - 最近7天内添加的卡片

添加备注

在Anki中添加一个新的笔记。

参数:

  • deckName目标牌组名称
  • modelName笔记类型(例如,“基础”、“填空”)
  • fields字段内容对象
  • tags标签数组(可选)

示例:

{
  "deckName": "English Vocabulary",
  "modelName": "Basic",
  "fields": {
    "Front": "ephemeral",
    "Back": "lasting for a very short time"
  },
  "tags": ["vocabulary", "adjective"]
}

更新说明

更新现有笔记中的字段。

参数:

  • noteId要更新的笔记的ID
  • fields具有字段名和新值的对象

示例:

{
  "noteId": 1234567890,
  "fields": {
    "Back": "lasting for an extremely short time"
  }
}

获取笔记信息

获取特定笔记的详细信息。

参数:

  • noteId要查询的笔记的ID

返回值:

{
  "noteId": 1234567890,
  "modelName": "Basic",
  "fields": {
    "Front": "ephemeral",
    "Back": "lasting for a very short time"
  },
  "tags": ["vocabulary", "adjective"]
}

删除笔记

删除一个或多个备注。

参数:

  • noteIds要删除的笔记ID数组

示例:

{
  "noteIds": [1234567890, 9876543210]
}

🔧 从源代码构建

如果您想为服务器做贡献或进行自定义:

# Clone the repository
git clone https://github.com/here-tunan/mcp-server-anki.git
cd mcp-server-anki

# Install dependencies
npm install

# Build TypeScript
npm run build

要使用本地构建的Claude Code,请进行以下配置:

{
  "mcp": {
    "servers": {
      "anki": {
        "command": "node",
        "args": ["/path/to/mcp-server-anki/dist/index.js"]
      }
    }
  }
}

🤝 贡献(或“参与贡献”)

欢迎提出问题和提交拉取请求!

📄 许可证

Apache许可证

🔗 链接

❓ 常见问题解答(FAQ)

问:AnkiConnect 连接失败了?

A: 确保Anki正在运行,并且已安装并启用了AnkiConnect插件。默认端口是8765。

问:如何自定义笔记类型?

A: 在Anki中创建自定义笔记类型后,使用 get_models 并且 get_model_fields 查看可用字段的工具。

问:支持移动设备吗?

A: 目前仅支持桌面版Anki,因为依赖于AnkiConnect。


用心打造,献给Anki学习者和AI爱好者