AnkiMCP Server
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 安装(推荐)
打开 Anki 并进入 工具 → 插件 → 获取插件...
输入代码:
124672614重启 Anki
从 GitHub Releases 安装
从 Releases 下载
anki_mcp_server.ankiaddon双击安装,或使用 工具 → 插件 → 从文件安装...
重启 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-id、mcp-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— 允许特定主机绕过私有网络拦截
可用工具
基础工具
工具 | 描述 |
| 与 AnkiWeb 同步集合 |
| 列出集合中的所有牌组 |
| 创建新牌组 |
| 使用 Anki 的搜索语法搜索笔记 |
| 获取笔记的详细信息 |
| 向牌组添加新笔记 |
| 批量添加最多 100 条共享相同牌组和模型的笔记。使用 Anki 原生批量 API 进行原子撤销。支持部分成功 — 单个失败不会影响其他笔记 |
| 管理卡片,包含 9 个操作: |
| 管理标签,包含 5 个操作: |
| 筛选牌组生命周期: |
| 更新现有笔记的字段 |
| 从集合中删除笔记 |
| 获取下一张待复习卡片(支持语音模式的 |
| 获取卡片内容以供复习 |
| 复习后对卡片进行评分(重来/困难/良好/简单) |
| 列出可用的笔记类型 |
| 获取笔记类型的字段名称和描述 |
| 获取笔记类型的 CSS 样式 |
| 更新笔记类型的 CSS 样式 |
| 创建新的笔记类型 |
| 通过 base64、文件路径或 URL 存储媒体文件(图像/音频)。文件路径会根据媒体类型白名单进行验证;URL 会进行 SSRF 检查 |
| 列出匹配模式的媒体文件 |
| 将媒体文件移动到 Anki 的回收站(可通过“检查媒体”恢复) |
FSRS 工具
工具 | 描述 |
| 获取牌组预设的 FSRS 调度参数 |
| 更新 FSRS 参数(权重、期望留存率、最大间隔) |
| 获取卡片的 FSRS 记忆状态(稳定性、难度、可提取性) |
| 使用 Anki 内置优化器运行 FSRS 参数优化 |
GUI 工具
这些工具与 Anki 的用户界面交互:
工具 | 描述 |
| 使用搜索查询打开卡片浏览器 |
| 打开“添加卡片”对话框 |
| 打开特定笔记的编辑器 |
| 获取当前显示卡片的信息 |
| 显示当前卡片的问题面 |
| 显示当前卡片的答案面 |
| 在复习器中选择特定卡片 |
| 导航到牌组浏览器 |
| 撤销上一次操作 |
资源
资源 | URI | 描述 |
|
| Anki 版本、配置和调度信息 |
|
| Anki 搜索查询语法参考 |
|
| 数据模型文档(实体、字段、关系) |
|
| 今日学习统计 |
|
| 30 天复习预测 |
|
| 整体集合统计 |
|
| FSRS 配置摘要和参数 |
提示词
提示词 | 描述 |
| 引导式复习会话工作流(交互式、快速或语音模式) |
要求
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 containerCI
E2E 测试在推送到任何分支以及向 main 提交 PR 时自动运行。请参阅 .github/workflows/e2e.yml。
许可证
AGPL-3.0-or-later
链接
ankimcp.ai - 项目主页
MCP 协议 - 模型上下文协议规范
Anki 插件文档 - 官方 Anki 插件开发文档
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.
This server cannot be installed
Maintenance
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
- FlipnemOAuthcom.flipnem
Build and study spaced-repetition flashcards with your agent.
Connect AI to your flomo notes. Search, create, edit notes and manage tags via MCP.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn 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,716467MIT
- AlicenseAqualityDmaintenanceEnables 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.62MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Anki flashcard collections through the AnkiConnect add-on, allowing creation, modification, searching, and management of flashcards and decks.2524MIT
- AlicenseNot gradedqualityCmaintenanceEnables LLMs to interact with Anki flashcard collections, including deck management, note search, viewing contents, and editing fields.16MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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