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 extension(SEP-1865)上に構築されています。MCP コア仕様 2025-11-25 と Apps 拡張 2026-01-26 を使用します。
機能
3つの学習方法をすべてインラインで表示し、同じ方法で採点します。
- フラッシュカード:クリックしてめくり、覚えた/間違えたで採点します。
- 選択式クイズ:選択肢を選ぶと、正解・不正解がすぐに表示されます。
- 穴埋め問題:空欄がその場で表示されるため、文全体の形を保てます。カードの表面に
[...]として空欄を記述すると、自動的に穴埋めカードになります。
間隔反復:採点のたびに、カードごとの FSRS スケジュールが更新されます(ts-fsrs を使用)。苦手なカードは早めに再表示され、復習期限が来たカードが先に表示されます。「今日の復習対象は?」 と尋ねると、すべてのデッキをまとめた概要を確認できます。
カテゴリで整理:デッキ名に :: を付けて階層化できます(例:LLM::Attention)。カテゴリツリーまたはインタラクティブなマインドマップで閲覧し、階層全体を1つにまとめたセッションで学習できます。クイズデッキにはバッジが表示されます。
デッキを管理:チャットから離れずにデッキやカードを作成、追加、編集、名前変更、削除できます。デッキの作成時に reverse を渡すと、各カードを裏面から表面に向けて復習することもできます(語彙学習に便利です)。
JSON のみ:デッキは data/decks.json に保存され、呼び出しのたびに最新の内容が読み込まれます。手動で編集することも、Claude に作成させることもできます。データベースや外部サービスは不要です。
ツール
インラインのフラッシュカード UI を開くのは review_deck と study だけです。それ以外はすべてテキストの要約を返すため、チャット内で編集や作成をしてもウィジェットは表示されません。
| ツール | 機能 |
|---|---|
review_deck | 1 つのデッキを開いて復習します(期限の来たカードが先に表示され、1 回のセッションあたりの上限があります)。 |
study | カテゴリーのサブツリー全体を復習し、1 つのセッションにまとめます(1 回のセッションあたりの上限があります)。 |
create_deck | フラッシュカードまたは穴埋めカードを生成します。reverse を指定すると、裏から表へのカードも追加されます。 |
create_quiz | 多肢選択式の問題を生成します。 |
grade_card | 復習結果を記録し、カードの FSRS スケジュールを更新します(UI から呼び出されます)。 |
due_today | すべてのデッキで期限が来ているカードを要約し、苦戦しているカード(3 回以上の失敗)にフラグを付けます。 |
edit_card | カードの表面および/または裏面を変更します。 |
refine_card | カードを個別の要素に分割するか、理解度を確認できるように書き換える案を提示します。 |
apply_refinement | ユーザーが提案されたカードを承認した後、改善内容を保存します。 |
capture | 直前に困ったこと(バグや間違えた問題)を下書きカードに変換します。 |
apply_capture | ユーザーが承認した後、取り込んだカードを保存します。 |
rename_deck | デッキ名を変更します(カテゴリー階層内での移動も行います)。 |
delete_card | 1 枚のカードを削除します。 |
delete_deck | デッキ全体を削除します。 |
カードの生成には、Wozniak の 知識を定式化するための 20 のルール に基づく Memora の品質ルールが適用されます(1 つの概念に絞ったカード、1~5 語の回答、能動的な想起、曖昧さがないこと、答えが漏れないこと、定義より応用を重視すること)。新しいカードは書き込み時に lint 検査され、問題があればフラグが付けられます(作成がブロックされることはありません)。その後、Claude がカードを修正できます。
仕組み(MCP Apps)
ツールは ui:// リソースを宣言します。Claude がツールを呼び出すと、ホスト(Claude Desktop)がそのリソースを取得し、サンドボックス化された iframe 内に HTML を描画して、ツールの結果を UI に渡します。UI は JSON-RPC を介してホストと通信し、カードの評価やモデルへの進捗報告を行います。
クイックスタート
前提条件
- Node.js 20.11+
Claude Desktop に接続する
Settings > Developer > Edit Config を開き、mcpServers の下に Memora を追加します。
{
"mcpServers": {
"memora": {
"command": "npx",
"args": ["-y", "@servation/memora-mcp", "--stdio"]
}
}
}
その後、Claude Desktop を完全に終了し(システムトレイから)、再起動します。memora が Settings > Developer に表示され、いくつかのサンプルデッキがあらかじめ読み込まれています。
デッキは ~/.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 のチャットで)
世界の首都のデッキを復習してスペイン語の旅行フレーズを 10 個集めたデッキを作ってスペイン語の単語 10 個を、両方向に復習できるデッキにして水の循環についての穴埋めデッキを作って太陽系についての多肢選択式問題を 10 問出して今話し合った内容を「光合成」というデッキにして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で上書きできます。 - ライブで読み込まれます(mtime キャッシュ)。
create_deck、create_quiz、grade_cardは、このファイルにアトミックに書き込みます。 - クイズカードには
"options": ["...", "..."]が追加され、backは正解の選択肢になります。 - 穴埋めカードでは、表面の空欄を
[...]として記述し、隠された用語をbackに記述します。 - カードを復習すると、
due日付と 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 repo の MCP Apps リファレンスホスト(basic-host)を使ってアプリを実行することもできます。
ロードマップ
バックログについては TODO.md をご覧ください。npm と MCP Registry への公開、クライアントをまたいだホスティング(Streamable HTTP)、解析とスケジューリングのテスト、実際の画面録画デモ GIF が含まれています。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。