Skip to main content
Glama

AnkiMCP 服务器 (插件)

一个通过 模型上下文协议 (MCP) 将您的卡片集暴露给 AI 助手的 Anki 插件。

这是什么?

AnkiMCP 服务器在 Anki 内部运行一个本地 MCP 服务器,允许 Claude 等 AI 助手与您的记忆卡片集进行交互。这使得 AI 驱动的学习会话、卡片创建和卡片集管理成为可能。

这是 ankimcp.ai 项目的一部分。

Related MCP server: Anki MCP Server

首次运行说明

首次运行时,此插件会从 PyPI 下载 pydantic_core(约 2MB)。这是必需的,因为 pydantic_core 包含无法打包在单个插件文件中的特定于平台的二进制文件(Windows/macOS/Linux)。

功能

  • 本地 HTTP 服务器 - 默认运行在 http://127.0.0.1:3141/

  • MCP 协议 - 兼容任何 MCP 客户端(Claude Desktop 等)

  • 自动启动 - 服务器在 Anki 打开时自动启动

  • 支持隧道 - 可与 Cloudflare Tunnel、ngrok 等配合使用

  • 跨平台 - 支持 macOS、Windows 和 Linux (x64 和 ARM)

安装

从 AnkiWeb 安装(推荐)

  1. 打开 Anki 并进入 工具 → 插件 → 获取插件...

  2. 输入代码:124672614

  3. 重启 Anki

从 GitHub Releases 安装

  1. Releases 下载 anki_mcp_server.ankiaddon

  2. 双击安装,或使用 工具 → 插件 → 从文件安装...

  3. 重启 Anki

NixOS

使用 flakes(推荐)

添加 flake 输入并使用预构建的包:

# flake.nix
{
  inputs.anki-mcp.url = "github:ankimcp/anki-mcp-server-addon";

  outputs = { nixpkgs, anki-mcp, ... }: {
    # Option A: Standalone — Anki with the addon pre-installed
    environment.systemPackages = [
      anki-mcp.packages.${system}.default
    ];

    # Option B: Composable with other addons via overlay
    nixpkgs.overlays = [ anki-mcp.overlays.default ];
    environment.systemPackages = [
      (pkgs.anki.withAddons [ pkgs.ankiAddons.anki-mcp-server ])
    ];
  };
}

不使用 flakes

# configuration.nix
{ pkgs, ... }:
let
  python3 = pkgs.python3;

  ankiMcpPythonDeps = python3.withPackages (ps: with ps; [
    mcp pydantic pydantic-settings starlette uvicorn anyio httpx websockets
  ]);

  anki-mcp-server = pkgs.anki-utils.buildAnkiAddon (finalAttrs: {
    pname = "anki-mcp-server";
    version = "0.13.0";
    src = pkgs.fetchFromGitHub {
      owner = "ankimcp";
      repo = "anki-mcp-server-addon";
      rev = "v${finalAttrs.version}";
      hash = ""; # nix will tell you the correct hash on first build
    };
    sourceRoot = "${finalAttrs.src.name}/anki_mcp_server";
  });

  ankiWithMcp = pkgs.anki.withAddons [ anki-mcp-server ];

  ankiWrapped = pkgs.symlinkJoin {
    name = "anki-with-mcp";
    paths = [ ankiWithMcp ];
    nativeBuildInputs = [ pkgs.makeWrapper ];
    postBuild = ''
      wrapProgram $out/bin/anki \
        --prefix PYTHONPATH ':' "${ankiMcpPythonDeps}/${python3.sitePackages}"
    '';
  };
in
{
  environment.systemPackages = [ ankiWrapped ];
}

使用方法

服务器在您打开 Anki 时自动启动。通过 工具 → AnkiMCP Server Settings... 查看状态。

连接 Claude Desktop

需要安装 Node.js。添加到您的 Claude Desktop 配置中(macOS 上位于 ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "anki": {
      "command": "npx",
      "args": ["mcp-remote", "http://127.0.0.1:3141"]
    }
  }
}

注意: Claude Desktop 的 JSON 配置原生不支持 HTTP 服务器 — mcp-remote 通过 stdio 桥接连接。

连接 Claude Code

claude mcp add anki --transport http http://127.0.0.1:3141/

配置

通过 Anki 的 工具 → 插件 → AnkiMCP Server → 配置 进行编辑:

{
  "mode": "http",
  "http_port": 3141,
  "http_host": "127.0.0.1",
  "http_path": "",
  "cors_origins": [],
  "cors_expose_headers": ["mcp-session-id", "mcp-protocol-version"],
  "auto_connect_on_startup": true,
  "disabled_tools": [],
  "media_import_dir": "",
  "media_allowed_types": [],
  "media_allowed_hosts": []
}

禁用工具

向 AI 客户端隐藏特定工具或操作以减少 Token 使用:

{
  "disabled_tools": [
    "sync",
    "card_management:bury",
    "card_management:unbury"
  ]
}
  • "tool_name" — 禁用整个工具

  • "tool_name:action" — 禁用多操作工具中的特定操作

禁用的工具将从 MCP 架构中完全移除 — AI 客户端永远看不到它们。工具/操作名称中的拼写错误会在控制台产生警告。

自定义路径

设置 http_path 以在自定义路径下提供 MCP 端点。当通过隧道(Cloudflare、ngrok)暴露 Anki 以避免完全开放的端点时非常有用:

{
  "http_path": "my-secret-path"
}

服务器将可在 http://localhost:3141/my-secret-path/ 访问,而不是根路径。留空则使用默认行为。

CORS 配置

要允许基于浏览器的 MCP 客户端(如基于 Web 的 MCP Inspector),请添加允许的来源:

{
  "cors_origins": ["https://inspector.example.com", "http://localhost:5173"]
}

使用 ["*"] 允许所有来源(不建议用于生产环境)。

cors_expose_headers 设置控制浏览器可以读取哪些响应头。默认值(mcp-session-idmcp-protocol-version)是 MCP Streamable HTTP 协议在浏览器中工作所必需的。

媒体安全

感谢 Hideaki Takahashi(哥伦比亚大学)负责任地披露了媒体路径遍历漏洞。

store_media_file 工具会验证所有输入以防止路径遍历和 SSRF 攻击:

  • 文件路径 通过 MIME 类型检查限制为仅限媒体文件(图像、音频、视频)

  • URL 必须使用 http://https://,且不能指向私有/内部网络

  • 文件名 经过清理以移除路径遍历序列

通过配置进行可选的加固:

{
  "media_import_dir": "/Users/me/anki-media",
  "media_allowed_types": ["application/pdf"],
  "media_allowed_hosts": ["192.168.1.50", "my-nas.local"]
}
  • media_import_dir — 将文件路径导入限制在此目录树内(为空 = 无限制)

  • media_allowed_types — 允许除图像/音频/视频之外的其他 MIME 类型

  • media_allowed_hosts — 允许特定主机绕过私有网络拦截

可用工具

基础工具

工具

描述

sync

与 AnkiWeb 同步集合

list_decks

列出集合中的所有牌组

create_deck

创建新牌组

find_notes

使用 Anki 的搜索语法搜索笔记

notes_info

获取笔记的详细信息

add_note

向牌组添加新笔记

add_notes

批量添加最多 100 条共享相同牌组和模型的笔记。使用 Anki 原生批量 API 进行原子撤销。支持部分成功 — 单个失败不会影响其他笔记

card_management

管理卡片,包含 9 个操作:reposition(设置学习顺序)、change_deck(在牌组间移动)、bury/unbury(隐藏至明天)、suspend/unsuspend(无限期排除在复习之外)、set_flag(颜色标记 0-7)、set_due_date(使用天数 DSL 重新安排日期)、forget_cards(重置为新卡片)

tag_management

管理标签,包含 5 个操作:add_tags/remove_tags(批量添加/移除笔记标签)、replace_tags(替换标签)、get_tags(列出所有)、clear_unused_tags(移除孤立标签)

filtered_deck

筛选牌组生命周期:create_or_update(使用搜索词创建或修改筛选牌组)、rebuild(重新填充)、empty(将卡片归还至原牌组)、delete

update_note_fields

更新现有笔记的字段

delete_notes

从集合中删除笔记

get_due_cards

获取下一张待复习卡片(支持语音模式的 skip_images/skip_audio

present_card

获取卡片内容以供复习

rate_card

复习后对卡片进行评分(重来/困难/良好/简单)

model_names

列出可用的笔记类型

model_field_names

获取笔记类型的字段名称和描述

model_styling

获取笔记类型的 CSS 样式

update_model_styling

更新笔记类型的 CSS 样式

create_model

创建新的笔记类型

store_media_file

通过 base64、文件路径或 URL 存储媒体文件(图像/音频)。文件路径会根据媒体类型白名单进行验证;URL 会进行 SSRF 检查

get_media_files_names

列出匹配模式的媒体文件

delete_media_file

将媒体文件移动到 Anki 的回收站(可通过“检查媒体”恢复)

FSRS 工具

工具

描述

get_fsrs_params

获取牌组预设的 FSRS 调度参数

set_fsrs_params

更新 FSRS 参数(权重、期望留存率、最大间隔)

get_card_memory_state

获取卡片的 FSRS 记忆状态(稳定性、难度、可提取性)

optimize_fsrs_params

使用 Anki 内置优化器运行 FSRS 参数优化

GUI 工具

这些工具与 Anki 的用户界面交互:

工具

描述

gui_browse

使用搜索查询打开卡片浏览器

gui_add_cards

打开“添加卡片”对话框

gui_edit_note

打开特定笔记的编辑器

gui_current_card

获取当前显示卡片的信息

gui_show_question

显示当前卡片的问题面

gui_show_answer

显示当前卡片的答案面

gui_select_card

在复习器中选择特定卡片

gui_deck_browser

导航到牌组浏览器

gui_undo

撤销上一次操作

资源

资源

URI

描述

system_info

anki://system-info

Anki 版本、配置和调度信息

query_syntax

anki://query-syntax

Anki 搜索查询语法参考

schema

anki://schema

数据模型文档(实体、字段、关系)

stats_today

anki://stats/today

今日学习统计

stats_forecast

anki://stats/forecast

30 天复习预测

stats_collection

anki://stats/collection

整体集合统计

fsrs_config

anki://fsrs/config

FSRS 配置摘要和参数

提示词

提示词

描述

review_session

引导式复习会话工作流(交互式、快速或语音模式)

要求

  • Anki 25.07 或更高版本(内置 Python 3.13)

  • Anki 25.02 及更早版本内置 Python 3.9,不支持 — MCP SDK 需要 Python 3.10+ (#8)

架构

该插件在后台线程中运行一个带有 HTTP 传输(FastMCP + uvicorn)的 MCP 服务器。所有 Anki 操作都通过队列系统桥接到主 Qt 线程,遵循与 AnkiConnect 相同的成熟模式。

有关详细信息,请参阅 Anki 插件开发文档

开发

运行端到端 (E2E) 测试

E2E 测试使用 headless-anki 在 Docker 中的真实 Anki 实例上运行。

# Install test dependencies
python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt

# Build the addon
./package.sh

# Start Anki container
cd .docker && docker compose up -d && cd ..

# Run tests (waits for server automatically)
pytest tests/e2e/ -v

# Stop container
cd .docker && docker compose down

或者使用 Makefile 快捷方式:

make e2e        # Build, start container, run tests, stop
make e2e-up     # Just start container
make e2e-test   # Just run tests
make e2e-down   # Just stop container

CI

E2E 测试在推送到任何分支以及向 main 提交 PR 时自动运行。请参阅 .github/workflows/e2e.yml

许可证

AGPL-3.0-or-later

链接

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityActive
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that enables AI assistants to interact with the Anki flashcard application for studying, deck management, and note creation. It supports natural language interaction for reviewing cards, searching content, and managing media files across local and remote environments.
    1,716
    467
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage Anki flashcard collections by creating, searching, and updating cards through a standardized interface. It supports media handling, batch operations, and review scheduling via the AnkiConnect add-on.
    6
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ankimcp/anki-mcp-server-addon'

If you have feedback or need assistance with the MCP directory API, please join our Discord server