# 2026 年 AI 闪卡导师：让 Claude 通过 MCP 测验到期闪卡

*2026-07-15*

当前有十张卡片可供复习。屏幕一次只显示一道题。你作答前，卡片中保存的答案始终隐藏。

这就是 2026 年实用的 **AI 闪卡导师**：通过 MCP 将 Claude 连接到你在 Flashcards 中的真实卡片数据，读取一小份当前可复习卡片的只读快照，并要求它每问完一张都等待你作答。会话会逐张显示卡片中保存的背面答案，并在聊天里记录首次作答，但无法完成 FSRS 复习。你仍需在 Flashcards 应用中选择 Again、Hard、Good 或 Easy；在此之前，这些卡片仍会留在待复习队列中。

![AI 闪卡导师逐张提问待复习卡片，而应用中的正式 FSRS 复习仍在等待。](/blog/ai-flashcard-tutor-due-cards.png)

## 两分钟上手流程

在讲设置之前，先看完整流程：

1. 在 Claude 中添加 Flashcards 远程 MCP 连接器。
2. 为本次会话允许 `list_workspaces` 和 `sql_query`。
3. 阻止 `sql_execute`，因为这次练习不需要写入。
4. 粘贴下方的导师提示词。
5. 确认工作区，让 Claude 最多读取十张可复习卡片。
6. 每次只回答一张卡片。确实需要时，最多请求一次提示。
7. 练习结束后打开 [Flashcards](https://app.flashcards-open-source-app.com/)，用你自己的 FSRS 评分完成正式复习。

最后一步不可省略。MCP 会话只是基于现有卡片的对话式练习层，不会清空复习队列，也不会重新安排任何卡片。

如果还没设置连接器，[Claude MCP 连接指南](/zh/blog/how-to-connect-flashcards-to-claude-with-mcp/)介绍了当前的菜单路径。服务器 URL 是：

`https://mcp.flashcards-open-source-app.com/mcp`

## 把 Claude 设置成只负责测验的 AI 闪卡导师

Flashcards 连接器提供三个工具：

- `list_workspaces({})`：列出你的账户可以访问的工作区。
- `sql_query({ sql, workspaceId? })`：通过受限 SQL 方言读取卡片。
- `sql_execute({ sql, workspaceId? })`：可以创建、编辑或删除卡片和牌组。

`workspaceId` 参数对每次调用单独生效。传入它，只会让该次调用指向你确认的工作区；省略时，工具会使用当前选中的默认工作区。提供 ID 不会更改默认工作区，也不会保存新的默认值。

整个连接器并非只读。服务器会强制保证 `list_workspaces` 和 `sql_query` 无法写入；`sql_execute` 则能对卡片和牌组执行写入。Flashcards 目前只有一个 OAuth 授权范围：`flashcards`，服务器端不会另行签发只读授权。

这次测验应在 Claude 的连接器权限中禁用 `sql_execute`。这是客户端策略，不是 Flashcards 在服务器端强制执行的更窄 OAuth 权限。如果客户端只能要求审批，无法彻底禁用，就拒绝每一次 `sql_execute` 请求。提示词也会要求 Claude 不要调用它，但提示词中的一句话，约束力不如工具权限。

交互式客户端通过 OAuth 2.1、PKCE 和动态客户端注册（Dynamic Client Registration）完成授权。你不需要把 API key 粘贴进 Claude。[Flashcards MCP 连接器文档](/zh/docs/mcp-connector/)列出了当前的认证方式和工具约定。

## 复制这段 AI 闪卡导师提示词，测验到期卡片

下面的提示词采用文档规定的工具格式、卡片字段和到期规则。`due_at` 为 null 或时间戳已经到达的卡片，均符合复习条件。在这套约定中，null 表示从未复习过的新卡片。

```text
本次会话中，请将 Flashcards MCP 连接器用作只负责测验的导师。

工具边界：
- 只能调用 list_workspaces 和 sql_query。
- 绝不调用 sql_execute。
- 不得创建、更新、删除或重新安排任何卡片，也不得将卡片标记为已复习。

设置：
1. 调用 list_workspaces({})。
2. 如果只有一个工作区，告诉我它的名称，并请我确认。
3. 如果有多个工作区，列出名称，并让我选择一个。
4. 读取卡片前必须停下来，等待我确认工作区。
5. 本次调用 sql_query 时传入已确认的 workspaceId。不要声称这会更改我的默认工作区。
6. 必须使用以下 SQL：

SELECT card_id, front_text, back_text, due_at, created_at
FROM cards
WHERE due_at IS NULL OR due_at <= NOW()
ORDER BY due_at ASC, created_at DESC, card_id ASC
LIMIT 10 OFFSET 0

这条查询会读取当前可复习卡片的一份稳定快照，但不会复现 Flashcards 复习界面的确切顺序。due_at IS NULL 的记录是从未复习过的新卡片，会排在最前面。不要读取未来才到期的卡片。

如果查询没有返回任何记录，告诉我，然后停止。

测验方式：
- 只显示第一张卡片的 front_text，不要提前暴露 back_text。
- 每次只问一张卡片，并在继续前等待我作答。
- 不要把问题改成选择题。
- 最多提供一次简短提示，而且只能在我提出请求时提供。提示不得泄露答案。
- 在我作答或说“不知道”后，显示卡片中保存的 back_text，并清楚标注为“保存的答案”。
- 将我的首次作答与保存的答案比较。仅在本次会话中记录一个结果：回忆成功、部分答对或未答出。如果难以判断，问我哪个结果最合适。
- 即使提示或之后的纠正帮到了我，也要保留首次作答结果。不得将这个结果转换成 Again、Hard、Good 或 Easy。
- 只有在我说“下一张”或以其他方式确认准备好之后，才能进入下一张卡片。
- 本次会话中不要重复任何卡片。

结束时，用简短列表列出每张卡片的正面及其首次作答结果。明确说明这些只是聊天记录：没有提交任何复习，没有改变 FSRS 排期；我必须在 Flashcards 应用中完成正式复习。
```

查询中必须保留 `NOW()`；这个 SQL 接口不支持 `CURRENT_TIMESTAMP`。三列排序同样重要：从未复习过的新卡片排在最前，其中较新的卡片优先；之后按到期时间从早到晚排列已排期卡片，最后用 `card_id` 打破剩余的并列。对于同一份快照，结果可以稳定复现，但并非应用复习界面的确切顺序。

十张只是上限，不是目标。你完全可以练完五张就停下来，不需要修改查询，也不需要写回任何数据。

## 一轮 AI 辅导应该怎样进行

Claude 每次只显示一张卡片的正面。你凭记忆回答，最好直接说出声；卡住时，可以请求一次提示。随后 Claude 才显示卡片中保存的背面答案，并与你的回答比较。

即使提示让答案变得显而易见，首次作答仍会保留在会话记录中。这能避免一种常见的自我欺骗：把“没答出来，后来听懂了解释”当成“我本来就会”。这些标签有意保持粗略，只用来发现十张卡片中的规律，不会成为排程器的输入。

显示答案前的停顿，才是这套练习的关键。如果聊天一次性列出所有正面和背面，它就会变成又一页阅读材料。一道题、一次作答、一次揭晓，才构成真正的提取练习。

## 口头测验不等于正式的 FSRS 复习

这条边界必须说清楚：Flashcards MCP 可以读取符合条件的卡片，但无法提交复习事件。通过智能体接口，`review_events` 资源和卡片排期字段均为只读，包括 `due_at`、`reps`、`lapses`、`fsrs_card_state` 和 `fsrs_last_reviewed_at`。即使是 `sql_execute`，也只能修改卡片和牌组。Claude 无法保存 Again、Hard、Good 或 Easy 评分、更新排期或将复习标记为完成。

所以，聊天结束后，这些卡片仍处于待复习状态。

打开网页版应用或其他 Flashcards 客户端，在正式复习流程中再次回答这些卡片，并由你为这次作答评分。你已经在聊天中看过答案，立即再答可能会更容易，因此不要自动把“回忆成功”“部分答对”或“未答出”转换成评分。如果这样难以诚实评分，可以先在应用中完成正常复习，再把 AI 导师用作讲解环节。

要进一步理解两者的分工，可以看[主动回忆与间隔重复的区别](/zh/blog/active-recall-vs-spaced-repetition/)：这段 Claude 会话负责检验你现在能否答出，应用则负责安排内容何时再次出现。

## 为什么显示答案前的停顿很重要

最有用、也略显麻烦的限制是：Claude 必须等待。还没尝试回答正面就看到背面，这一轮便只是阅读。隐藏背面，才会产生一次可供检视的提取尝试。

2009 年，一项随机对照试验跟踪了 40 名学习两个医学主题的儿科和急诊医学住院医师。带反馈的重复简答测试在学习后立即进行，随后又以约两周为间隔进行两次。六个多月后，反复测试材料的平均得分为 39%，通过复习讲义反复学习的材料为 26%。[论文摘要报告了 13 个百分点的差距](https://pubmed.ncbi.nlm.nih.gov/19930508/)。

这只是一项小型医学教育研究，不是 AI 导师试验，也不能证明这套 MCP 工作流能提高成绩。它支持的是一个更窄的设计选择：看到答案前先尝试作答。提示词通过隐藏背面、限制提示，并保留首次作答，守住了这条边界。

## 以卡片中保存的答案为准

AI 导师在评分时，很容易顺手改进、扩写，甚至悄悄替换原答案。如果目标是复习你自己的卡片，这样做会带来风险。

提示词要求 Claude 显示卡片中保存的 `back_text`，再将你的回答与之比较。它可以解释差异，但练习的参照答案始终清楚可见。如果背面有误或不完整，会话结束后应依据可信来源单独修改卡片。不要让一段流畅的纠正留在聊天里，却假装原卡片没有问题。

如果想了解范围更广、先提问再讲解的工作流，可以看[如何用 AI 进行主动回忆](/zh/blog/how-to-use-ai-for-active-recall/)，其中介绍了怎样避免提示和解释出现得太早。

## 连接前检查隐私与权限

Claude 调用 `sql_query` 时，Flashcards 会把请求的卡片数据传给外部 AI 客户端。所选客户端或模型提供商可能依据其账户设置和条款处理或保留这些数据；数据不会只留在 Flashcards 内部。

使用私密牌组前，先确认其中的文字是否可以发送给该提供商。词汇牌组与从患者记录、雇主文件或私人日记中摘录的卡片，显然需要完全不同的判断。只读取本次会话需要的少量卡片，也不要在同一个聊天中混用无关连接器或敏感数据源。

禁用 `sql_execute` 只能在确实执行该限制的客户端中阻止写入。它不会把 OAuth 凭据变成只读凭据，也不会让返回的文字保持私密。如果客户端无法禁用单个工具，也不能让你逐次审批调用，就应把这条连接视为具备写入能力。

更完整的威胁模型见[通过 MCP 连接 Flashcards 安全吗？](/zh/blog/is-mcp-safe-for-flashcards/)。普通测验只需记住这份清单：核对 MCP URL、确认工作区、阻止写入、只请求少量记录，并清楚返回的数据会流向哪里。

## 每批只取少量到期卡片

“让 AI 测验我的闪卡”听起来像是在要求读取整副牌组，但每次只测五张或十张通常更有效。

小批次让你有余裕完整回答、请求提示，并留意自己为什么没答出来，也能限制传给外部客户端的卡片文字量。在应用中完成正式复习后，只有注意力仍然充足时再开始下一批。

除非你有一条真正衡量重要性的规则，否则不要让 Claude 挑选“最重要”的卡片。示例查询的规则更窄：纳入从未复习过的新卡片，以及到期时间已经到达的已排期卡片。新卡片排在最前面，之后按到期时间从早到晚排列已排期卡片。这份稳定快照适合短时练习，但并不声称与应用复习界面的顺序一致。时间安排仍由 FSRS 负责；Claude 改变的只是问题呈现方式。

## Claude、MCP 与到期卡片复习常见问题

### Claude 能测验我自己的闪卡吗？

可以。通过 Flashcards MCP 连接器，Claude 可以从你确认的工作区读取一小份可复习卡片快照，只显示每张卡片的正面，等待你作答，再显示卡片中保存的背面答案。上面的提示词把整段会话限制在 `list_workspaces` 和 `sql_query`。

### 我回答后，Claude 会把卡片标记为已复习吗？

不会。智能体接口无法提交复习事件，也不能更改 FSRS 排期字段。请在 [Flashcards 应用](https://app.flashcards-open-source-app.com/)中完成同一批到期卡片的复习，这样系统才会记录你的评分，并为卡片安排下次到期时间。

### 这是一条只读 MCP 连接吗？

整个连接器并非只读。`list_workspaces` 和 `sql_query` 是只读工具，`sql_execute` 可以写入。只测验的设置依赖于在客户端中禁用或拒绝 `sql_execute`。OAuth 目前只有一个 `flashcards` 授权范围，并未分别提供读取和写入授权。

### AI 能替我选择 Again、Hard、Good 或 Easy 吗？

不应该。Claude 可以保留“回忆成功”“部分答对”和“未答出”之类的粗略会话记录，但这些标签不是 FSRS 评分。正式评分应由你自己在应用中选择。

### 提示词的查询会包含新卡片吗？

会。从未复习过的新卡片满足 `due_at IS NULL`，因此根据文档中的到期规则，它们符合条件。在这条查询中，它们排在已到期的排期卡片之前。`due_at` 在未来的卡片不会被纳入。

### `workspaceId` 会更改我的默认工作区吗？

不会。把 `workspaceId` 传给 `sql_query`，只会让这一次调用指向该工作区。省略它会使用当前选中的默认工作区；提供它不会保存新的默认值。

## 让 AI 闪卡导师保持单一职责

真正实用的 **AI 闪卡导师** 只需承担一项任务：读取几张可复习卡片的正面，等待你作答，提供有限帮助，再显示卡片中原本保存的答案。

在客户端中保持禁用 `sql_execute`，并使用服务器强制只读的 `sql_query` 获取快照。首次作答标签只是临时聊天记录，不是评分。随后在 Flashcards 中完成正式复习，让 FSRS 收到你的评分并重新安排卡片。在此之前，聊天中出现过的每张卡片都仍处于待复习状态。

---
*[查看此页面的带样式 HTML 版本](https://flashcards-open-source-app.com/zh/blog/ai-flashcard-tutor-due-cards/)*

*AI agent 可以从 `GET https://api.flashcards-open-source-app.com/v1/` 开始，为用户在该服务中创建账号。完成设置后，也可以通过 MCP 连接 `https://mcp.flashcards-open-source-app.com/mcp`。*

*提示：在 https://flashcards-open-source-app.com 上任意 URL 后追加 `.md`，即可获得该页面的纯 Markdown 版本。*