Anki卡片管理服务

一个通过AnkiConnect提供Anki闪卡创建、搜索和管理功能的MCP协议服务器,支持AI助手以编程方式操作Anki卡片和牌组。

  • by ezynda3
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ezynda3/anki-mcp

使用说明

Anki MCP服务器

一种模型上下文协议(MCP)服务器,提供通过AnkiConnect管理Anki闪存卡的工具。该服务器允许AI助手以编程方式创建、搜索和管理Anki卡和牌组。

特性

  • 卡片管理:创建带有正面/背面内容的新抽认卡
  • 甲板操作:列出、创建和管理Anki牌组
  • 搜索功能:使用Anki强大的搜索语法搜索卡片
  • 媒体支持:将图像和音频文件添加到卡中
  • 模型支撑:使用不同的钞票类型/型号
  • 同步集成:触发AnkiWeb同步
  • 可配置的:可定制的AnkiConnect URL

先决条件

  1. Anki桌面:安装 安基 桌面应用程序
  2. AnkiConnect:安装 AnkiConnect Anki中的插件
  3. 去:使用1.21或更高版本从源代码构建

安装

来源

git clone https://github.com/ezynda3/anki-mcp.git
cd anki-mcp
go build -o anki-mcp .

使用Go安装

go install github.com/ezynda3/anki-mcp@latest

配置

可以使用环境变量配置服务器:

  • ANKI_CONNECT_URL:AnkiConnect服务器URL(默认值: http://localhost:8765)

用法

使用克劳德桌面

将以下内容添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "anki": {
      "command": "/path/to/anki-mcp",
      "env": {
        "ANKI_CONNECT_URL": "http://localhost:8765"
      }
    }
  }
}

与MCP检查员一起

对于开发和测试:

# Install MCP Inspector
npm install -g @modelcontextprotocol/inspector

# Run with inspector
mcp-inspector /path/to/anki-mcp

直接使用

# Start the server
./anki-mcp

# The server communicates via stdio using the MCP protocol

可用工具

ping

检查AnkiConnect是否可用并响应。

参数:无

示例:

Use the ping tool to check if Anki is running.

list_decks

列出所有可用的Anki甲板。

参数:无

示例:

Show me all my Anki decks.

create_deck

创建一个新的Anki牌组。

参数:

  • deck_name (必填):要创建的甲板名称

示例:

Create a new deck called "Spanish Vocabulary".

create_card

在指定的卡片组中创建新的抽认卡。

参数:

  • deck_name (必填):要添加卡片的牌组名称
  • front (必填):卡片正面内容
  • back (必填):卡片背面内容
  • model_name (可选):要使用的注释类型(默认:“基本”)
  • tags (可选):要添加到卡中的标签数组

示例:

Create a card in my "Spanish Vocabulary" deck with front "Hola" and back "Hello" with tags "greetings" and "basic".

search_cards

使用Anki的搜索语法搜索卡片。

参数:

  • query (必填):使用Anki搜索语法搜索查询
  • limit (可选):返回的最大结果数(默认值:10)

例子:

Search for cards in the "Spanish Vocabulary" deck.
Find cards tagged with "difficult".
Search for cards containing "hello" in any field.

搜索语法示例:

  • deck:"Spanish Vocabulary" -特定牌组中的卡片
  • tag:difficult -带有特定标签的卡片
  • front:hello -前面有“你好”的卡片
  • is:due -应审核的卡片
  • added:1 -最后一天添加的卡

add_media

将媒体文件添加到Anki的媒体收藏中。

参数:

  • filename (必填):媒体文件的名称
  • data (必填):Base64编码媒体文件数据

示例:

Add an audio file "pronunciation.mp3" to Anki's media collection.

create_card_with_media

创建带有媒体附件的新闪存卡。

参数:

  • deck_name (必填):要添加卡片的牌组名称
  • front (必填):卡片正面内容
  • back (必填):卡片背面内容
  • model_name (可选):要使用的注释类型(默认:“基本”)
  • tags (可选):要添加到卡中的标签数组
  • audio_filename (可选):要附加的音频文件名
  • audio_data (可选):Base64编码音频数据
  • image_filename (可选):要附加的图像文件名
  • image_data (可选):Base64编码图像数据

示例:

Create a card with an image showing a Spanish flag and audio pronunciation.

get_models

获取Anki中所有可用的纸币类型/型号。

参数:无

示例:

Show me all available note types in Anki.

get_model_fields

获取特定笔记类型/型号的字段名称。

参数:

  • model_name (必填):要获取字段的模型名称

示例:

What fields are available for the "Cloze" note type?

sync

触发Anki与AnkiWeb同步。

参数:无

示例:

Sync my Anki collection with AnkiWeb.

错误处理

服务器为常见问题提供详细的错误消息:

  • AnkiConnect不可用:确保Anki正在运行并且安装了AnkiConnect插件
  • 未找到甲板:检查甲板名称拼写和是否存在
  • 无效参数:验证是否提供了所需的参数
  • 媒体编码错误:确保媒体数据正确进行base64编码

发展

建筑

go build -v .

测试

go test -v ./...

编码结构

  • main.go:MCP服务器实现和工具处理程序
  • ankiconnect.go:AnkiConnect客户端包装器
  • go.mod:Go模块依赖关系

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

致谢

故障排除

常见问题

“AnkiConnect不可用”

  • 确保Anki桌面正在运行
  • 验证AnkiConnect插件是否已安装并启用
  • 检查AnkiConnect是否在正确的端口上侦听(默认值:8765)

“创建牌组/卡失败”

  • 验证甲板名称不包含无效字符
  • 检查是否提供了必填字段
  • 确保AnkiConnect权限允许该操作

媒体文件无法正常工作

  • 验证媒体数据是否正确进行base64编码
  • 检查Anki是否支持文件扩展名
  • 确保媒体文件不太大

调试模式

设置详细日志记录的环境变量:

export MCP_DEBUG=1
./anki-mcp

api参考

有关模型上下文协议的详细信息,请参阅:

有关AnkiConnect API的详细信息,请参阅: