关于 Memora
Memora 是供 Claude Desktop 用户将对话转为复习卡组的 MCP 学习服务。其内嵌学习界面结合抽认卡、测验、填空卡和 FSRS 间隔复习,卡组以 JSON 存储。
主要功能
- 01内嵌抽认卡、测验和填空复习
- 02FSRS 排程与到期卡片摘要
- 03按嵌套类别整理卡组
- 04在聊天中创建和管理卡片
- 05本地 JSON 卡组存储
适用场景
- 01将对话内容转成学习卡组
- 02复习到期卡片并重温错题
- 03学习相关卡组组成的类别
- 04创建双向词汇抽认卡
MCP 相关
提供用于创建和管理卡组及学习会话的 MCP 工具,并提供可由 Claude Desktop 等兼容宿主内嵌呈现的 UI 资源。支持 stdio 和 Streamable HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Memora MCP
直接在 Claude Desktop 中,将任何对话转化为互动学习环节。请 Claude 制作一套卡组,它就会生成卡片,并将其呈现为可点击浏览的内嵌复习内容:翻转闪卡、回答选择题测验,以及填写填空题。每次作答都会更新间隔重复计划,学习结果也会反馈给 Claude,让它针对你答错的内容进行强化练习。
关键词:Model Context Protocol、MCP 服务、MCP Apps、Claude Desktop、闪卡、测验、间隔重复、SRS、FSRS、Anki 替代品。
基于 MCP Apps 扩展(SEP-1865)构建:核心 MCP 规范 2025-11-25,加上 Apps 扩展 2026-01-26。
功能
三种学习方式,均以内嵌形式呈现,并采用相同的评分方式:
- 闪卡:点击翻面,然后选择评分:掌握了 / 没掌握。
- 选择题测验:选择一个选项,系统会立即揭示答案正误。
- 填空题:答案会在原位置揭晓,句子保持完整。在卡片正面使用
[...]表示空白,即可自动将其转换为填空卡片。
间隔重复:每次评分都会更新每张卡片的 FSRS 计划(通过 ts-fsrs),让薄弱卡片更快重新出现,并优先呈现到期卡片。询问 “今天有哪些卡片到期?”,即可查看所有卡组的汇总。
按类别整理:在卡组名称中使用 :: 创建嵌套类别(例如 LLM::Attention)。浏览类别树,或以互动式思维导图查看同一棵树,还可以在合并后的学习环节中学习整个分支。测验卡组会显示徽章标记。
管理卡组:无需离开聊天,即可创建、追加内容、编辑、重命名和删除卡组及卡片。创建卡组时传入 reverse,还可练习每张卡片的反向内容(适用于词汇学习)。
纯 JSON:卡组保存在 data/decks.json 中,每次调用时都会实时读取。你可以手动编辑,也可以让 Claude 来创建。无需数据库或外部服务。
工具
只有 review_deck 和 study 会打开内嵌翻卡界面;其他工具都会返回文本摘要,因此在聊天中编辑或创建内容不再会弹出小组件。
| 工具 | 功能 |
|---|---|
review_deck | 打开一个卡组进行复习(优先复习到期卡片,每次会话设有上限)。 |
study | 复习整个类别子树,并合并为一次会话(每次会话设有上限)。 |
create_deck | 生成闪卡或完形填空卡;reverse 还会添加从背面到正面的卡片。 |
create_quiz | 生成多项选择题。 |
grade_card | 记录复习结果并更新卡片的 FSRS 计划(由 UI 调用)。 |
due_today | 汇总所有卡组中到期的卡片,并标记难以掌握的卡片(遗忘次数 ≥ 3)。 |
edit_card | 修改卡片的正面和/或背面。 |
refine_card | 提议将卡片拆分为原子知识点,或改写卡片以检验理解。 |
apply_refinement | 用户批准提议的卡片后,保存改进结果。 |
capture | 将刚刚让你吃了亏的事情(一个 bug、一道答错的题)转成草稿卡片。 |
apply_capture | 用户批准捕获的卡片后,保存这些卡片。 |
rename_deck | 重命名卡组(也会在类别树中移动卡组)。 |
delete_card | 删除单张卡片。 |
delete_deck | 删除整个卡组。 |
卡片生成遵循 Memora 的质量规则(原子化的单概念卡片、答案为 1-5 个词、主动回忆、含义明确、不泄露答案、注重应用而非定义),这些规则基于 Wozniak 的 《知识构建的 20 条规则》。新卡片写入时会经过 lint 检查并标记问题(但绝不会阻止写入),以便 Claude 修改。
工作原理(MCP Apps)
工具会声明一个 ui:// 资源。当 Claude 调用工具时,宿主(Claude Desktop)会获取该资源,在沙盒化的 iframe 中渲染其 HTML,将工具结果传递给 UI,然后 UI 通过 JSON-RPC 与宿主通信(用于评定卡片并向模型报告进度)。
快速开始
前提条件
- Node.js 20.11+
连接到 Claude Desktop
打开设置 > 开发者 > 编辑配置,在 mcpServers 下添加 Memora:
{
"mcpServers": {
"memora": {
"command": "npx",
"args": ["-y", "@servation/memora-mcp", "--stdio"]
}
}
}
然后完全退出 Claude Desktop(从系统托盘退出)并重新启动。Memora 会出现在“设置 > 开发者”中,并预先加载几个示例卡组。
卡组存储在 ~/.memora/decks.json 中(可通过 MEMORA_DECKS 环境变量覆盖路径)。你可以手动编辑该文件,也可以让 Claude 管理它。
改为从源代码运行
git clone https://github.com/Servation/memora-mcp.git
cd memora-mcp
npm install
npm run build
将配置指向构建后的入口文件,并使用绝对路径(卡组随后会存储在仓库的 data/decks.json 中):
{
"mcpServers": {
"memora": {
"command": "node",
"args": ["C:\\path\\to\\memora-mcp\\dist\\main.js", "--stdio"]
}
}
}
试试看(在 Claude Desktop 聊天中)
复习我的 World Capitals 卡组给我创建一个包含 10 个西班牙语旅行短语的卡组给我创建一个包含 10 个西班牙语单词的可逆卡组(双向练习)创建一个关于水循环的填空卡组(完形填空卡片)用太阳系主题的内容考考我,出 10 道多项选择题把我们刚才讨论的内容做成一个名为 "Photosynthesis" 的卡组学习我的 LLM 类别今天有哪些内容到期了?
技术栈
- 服务端:TypeScript、
@modelcontextprotocol/sdk和@modelcontextprotocol/ext-apps,stdio 传输(也支持 Streamable HTTP)。 - UI:React 和 Vite,通过
vite-plugin-singlefile打包为单个内联 HTML 文件。 - 计划安排:
ts-fsrs(FSRS)。 - 构建完成后,运行时只需使用普通的
node(无需 bun 或 tsx)。
卡组格式
{
"Deck Name": [
{ "front": "Capital of France?", "back": "Paris" }
]
}
- 安装后存储在
~/.memora/decks.json(源码目录中则为data/decks.json);可通过MEMORA_DECKS覆盖。 - 实时读取(按修改时间缓存)。
create_deck、create_quiz和grade_card会以原子方式写入此文件。 - 测验卡片会添加
"options": ["...", "..."];其back是正确选项。 - 填空卡片会在正面用
[...]标记空白,隐藏词条则作为back。 - 复习卡片时,卡片会获得一个到期日期和一个 FSRS
srs区块;没有这些字段的卡片会被视为新卡片。 - 请确保 JSON 有效,否则服务会回退到内置的默认卡组。
项目结构
memora-mcp/
├── server.ts # MCP tools + the ui:// resource
├── decks.ts # data model, decks.json storage, result builder
├── scheduling.ts # FSRS scheduling + review ordering
├── main.ts # entry: stdio (Claude Desktop) or Streamable HTTP
├── mcp-app.html # UI entry HTML (bundled by Vite)
├── src/
│ ├── mcp-app.tsx # review orchestrator (flip / quiz / cloze, grade -> model)
│ ├── deck-lib.tsx # tree, mind map, card list, quiz/cloze views, helpers
│ ├── mcp-app.module.css
│ └── global.css # host theme variable fallbacks (light/dark)
├── data/decks.json # editable decks, read live
├── media/ # README images
├── vite.config.ts # single-file bundle config
└── tsconfig*.json
开发
npm run dev # vite watch (UI) plus tsx server on http://localhost:3001/mcp
npm run typecheck # tsc --noEmit
如需快速本地迭代,也可以在 ext-apps 仓库中使用 MCP Apps 参考宿主(basic-host)运行此应用。
路线图
请参阅 TODO.md 查看待办事项:发布到 npm 和 MCP Registry、支持跨客户端托管(Streamable HTTP)、添加解析和调度测试,以及制作真实的屏幕录制演示 GIF。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。