mcpField
M
Memora

Memora

本地服务
github.com科研与教育010 周前更新

关于 Memora

Memora 是供 Claude Desktop 用户将对话转为复习卡组的 MCP 学习服务。其内嵌学习界面结合抽认卡、测验、填空卡和 FSRS 间隔复习,卡组以 JSON 存储。

主要功能

  1. 01内嵌抽认卡、测验和填空复习
  2. 02FSRS 排程与到期卡片摘要
  3. 03按嵌套类别整理卡组
  4. 04在聊天中创建和管理卡片
  5. 05本地 JSON 卡组存储

适用场景

  1. 01将对话内容转成学习卡组
  2. 02复习到期卡片并重温错题
  3. 03学习相关卡组组成的类别
  4. 04创建双向词汇抽认卡

MCP 相关

提供用于创建和管理卡组及学习会话的 MCP 工具,并提供可由 Claude Desktop 等兼容宿主内嵌呈现的 UI 资源。支持 stdio 和 Streamable HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"servation-memora": {
"command": "npx",
"args": [
"-y",
"@servation/memora-mcp"
]
}
}
}
启动命令npx -y @servation/memora-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@servation/memora-mcp0.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Memora MCP

License: MIT MCP Apps TypeScript React

直接在 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。

在 Claude 中内嵌呈现的三种学习方式

功能

三种学习方式,均以内嵌形式呈现,并采用相同的评分方式:

  • 闪卡:点击翻面,然后选择评分:掌握了 / 没掌握。
  • 选择题测验:选择一个选项,系统会立即揭示答案正误。
  • 填空题:答案会在原位置揭晓,句子保持完整。在卡片正面使用 [...] 表示空白,即可自动将其转换为填空卡片。

间隔重复:每次评分都会更新每张卡片的 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 与宿主通信(用于评定卡片并向模型报告进度)。

MCP Apps 的往返流程

快速开始

前提条件
  • 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。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。