Anki について
anki-mcp は AnkiConnect を通じて Anki の暗記カードを管理する MCP サーバーで、35 のツールを提供します。学習者が、チャットクライアントから復習、学習統計の確認、カードの一括編集を行うことを想定しています。
主な機能
- 01チャットでのクイズ形式の復習と Anki への記録
- 02期限到来数、連続学習日数、復習統計の表示
- 03リーチ カードの検出と個別の復習履歴の確認
- 04重複をスキップする一括ノート作成
- 05ラベルによるカードグループの一時停止と復元
- 06Azure テキスト読み上げによるオプションの音声生成
活用シーン
- 01今日の期限到来カードの確認と学習セッションの開始
- 02間違えやすいカードの抽出と一括修正
- 03記事を選択したデッキの穴埋めカードに変換
MCP 対応
このプロジェクトは MCP サーバーであり、Anki の学習、カード、ノート、デッキ、ノートタイプに関するツールとリソース、プロンプトを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
anki-mcp
Claude(または任意の MCP クライアント)と会話しながら、Ankiのコレクションを学習・管理できます。AnkiConnect経由で35個のツールを利用できます。チャットで出題してもらう、今日の学習内容や定着度を確認する、何度も忘れるカードを探す、ノートをまとめて作成・整理する、再開したくなるまでカードのグループ全体を一時停止する、といったことができます。
できること
- 「今日は何を勉強すればいいですか?」→ デッキごとの期限到来数、連続学習日数、今週の復習回数を表示します。
- 「スペイン語デッキから期限の来たカードを10枚出題してください。」→ 一問ずつ出題し、採点して、次の間隔とともにAnkiに記録します。
- 「何度も間違えるカードはどれですか?修正を手伝ってください。」→ 苦手カードとその復習履歴を表示し、承認した内容に書き換えます。
- 「試験が終わるまで、HSK5タグのカードをすべて一時停止し、簡単に戻せるようにしてください。」→ 対象のカードだけを正確に復元できる名前付きの一時停止を作成します。スケジュールは維持されます。
- 「この記事をBiologyデッキの穴埋めカードにしてください。」→ 重複を確認してまとめて追加します。
- 「このデッキの音声がないカードすべてに音声を追加してください。」→ Azure TTSでまとめて追加します。
- 「
grammarタグのカードを新しいサブデッキに移動してください」/「todoタグをreviewに変更してください」/「未処理のカードを今後2週間に分散してください」。
一括変更はドライランで事前確認できます。削除には必ず確認手順が必要です。Ankiが閉じている場合、アシスタントは黙って失敗するのではなく、Ankiを開くよう案内します。
インストール
Node.js 18以降、起動中のAnki、およびAnkiConnectアドオン(コード2055492159)が必要です。
Claude Desktop
最新リリースからanki-mcp.mcpbをダウンロードし、Settings → Extensionsにドラッグしてください。これで完了です。
Claude Code
claude mcp add anki --scope user -- npx -y github:nietus/anki-mcp
Cursorおよびその他のMCPクライアント
クライアントのMCP設定に以下を追加してください。
{
"mcpServers": {
"anki": {
"command": "npx",
"args": ["-y", "github:nietus/anki-mcp"]
}
}
}
Windowsでクライアントからnpxを直接起動できない場合は、"command": "cmd"と"args": ["/c", "npx", "-y", "github:nietus/anki-mcp"]を使用してください。
ソースからインストール
git clone https://github.com/nietus/anki-mcp
cd anki-mcp
npm install
npm run build
次に、クライアントからnode /path/to/anki-mcp/build/client.jsを指定してください。Claude Desktopバンドルを自分でビルドするには、npm run pack:mcpbを実行してください(出力先はdist/anki-mcp.mcpbです)。
設定
すべての環境変数は省略可能です。プロジェクトフォルダー内の.envファイルに記述するか、MCPクライアント経由で渡してください。
| 変数 | デフォルト | 用途 |
|---|---|---|
AZURE_API_KEY | – | 音声ツール(Azure Text-to-Speech)を有効にします。 |
AZURE_REGION | eastus | Azure Speechのリージョンです。 |
ANKI_CONNECT_HOST | http://127.0.0.1 | AnkiConnectのホストです。 |
ANKI_CONNECT_PORT | 8765 | AnkiConnectのポートです。 |
ANKI_CONNECT_KEY | – | アドオン設定で指定した場合のAnkiConnect APIキーです。 |
開発
npm test # unit + in-memory MCP server tests (no Anki needed)
npm run inspector # try the tools interactively
利用可能なツール
各ツールには読み取り専用、書き込み、破壊的操作のいずれかが明記されているため、Claude Desktopなどのクライアントは読み取りを自動承認し、破壊的な変更の前に確認を求めることができます(「Anki is not running」などのエラーも、読みやすいツール結果として返されます)。
多くの一括操作ツールでは、カードやノートを同じ方法で選択できます。deckName(サブデッキも対象)、tags(いずれかに一致)、query(任意のAnki検索。AND条件で結合)、または明示的なcardIds/noteIdsを指定します。書き込みツールではdryRun: trueを指定して、変更を事前確認できます。
学習
| ツール | 説明 |
|---|---|
get_study_overview | デッキごとの今日の新規・学習・復習カード数、今日復習したカード数、連続学習日数、過去7日間/30日間の合計を取得します。 |
get_due_cards / get_new_cards | 学習するnum枚のカード(任意で1つのdeckNameから)と、各ボタンで設定される間隔を取得します。 |
answer_cards | 回答(cardId、ease 1~4)を記録し、各カードの新しい間隔を取得します。 (以前はupdate_cardsでした。) |
find_leeches | 苦手なカード(leechタグが付いている、または失敗回数が多いカード)を、失敗回数と易しさで順位付けして取得します。 |
get_card_history | 最大20枚のカードの完全な復習ログを取得します。 |
get_retention_stats | N日間のデッキについて、真の定着率(新規・成熟)、1日あたりの復習数、学習時間を取得します。 |
undo | Ankiで直前の操作を取り消します。 |
カードの選択とスケジュール設定
| ツール | 説明 |
|---|---|
find_cards | ページ分けされた検索(query、limit、offset)を行います。includeで返す項目(question、answer、fields、stats)を選択します。 |
suspend_cards / unsuspend_cards | カードを停止/再開します。例:デッキYにあるタグX付きのすべてのカード。スケジュールは保持されます。停止時にlabelを指定すると(ノートにpaused::<label>タグが付きます)、後でunsuspend_cards { label }を実行して、そのグループだけを再開できます。他の理由で停止中のカードには影響しません。 |
move_cards | カードをtargetDeckに移動します(存在しない場合は作成されます)。 |
reschedule_cards | set_due_date(days:0、1!、3-7)、forget(新規カードにリセット)、またはrelearnを実行します。 |
ノートの作成と編集
| ツール | 説明 |
|---|---|
add_card | ノートを1つ作成します。 |
add_bulk | 複数のノートを作成します。重複または無効なノートはスキップされ、理由が報告されます。 |
add_cloze_cards | テキストと隠すtermsから穴埋めノートを作成するか、{{c1::...}}形式のマークアップを含むテキストから作成します。 |
update_note_fields / bulk_update_notes | 既存のノートのフィールドを編集します。 |
find_and_replace | ノート全体を対象に、プレーンテキストまたは正規表現で置換します。任意で一部のfieldsに限定できます。 |
manage_tags | list(フィルターを指定してタグの件数を取得)、add、remove、rename、clear_unusedを実行します。 |
add_image | url、ローカルのpath、またはbase64のdataからフィールドに画像を追加します。 |
delete_notes | 2段階で削除します。最初の呼び出しでプレビューを表示してconfirmTokenを返し、2回目の呼び出しでトークンを指定して削除します。 |
音声(AZURE_API_KEYが必要)
| ツール | 説明 |
|---|---|
add_card_with_audio | sourceFieldから生成した音声をaudioFieldに追加したノートを作成します。 |
update_card_with_audio | 既存のノート1つの音声を生成します。 |
bulk_generate_audio | 複数のノートの音声を生成します(デフォルトでは音声フィールドが空のノートのみ)。呼び出しごとにlimitを指定します。 |
対応言語:en、es、fr、de、it、ja、ko、pt、pt-PT、ru、zh、ar、nl、hi、tr、pl、sv、fi、da、no、cs、hu、el、he、th、vi、id、ms、ro。
デッキとノートタイプ
| ツール | 説明 |
|---|---|
get_deck_names / create_deck | デッキを一覧表示または作成します。 |
get_deck_model_info | デッキで使用されているノートタイプを取得します(カードを追加する前に呼び出してください)。 |
get_model_names / get_model_details | ノートタイプの一覧、または1つのノートタイプのフィールド、テンプレート、CSSを取得します。 |
edit_note_type_field | フィールドをadd、remove、rename、またはrepositionします。 |
update_note_type_templates / update_note_type_styling | テンプレートまたはCSSを置き換えます。 |
create_model | ノートタイプを作成します。 |
sync | AnkiWebと同期します。 |
プロンプト
| プロンプト | 説明 |
|---|---|
quiz_me | 学習セッションを行います。1問ずつ出題し、採点してAnkiに記録します。 |
make_cards | テキストを基本的なフラッシュカードに変換します(追加前にプレビューします)。 |
leech_review | 何度も忘れてしまうカードを見つけて、改善します。 |
リソース
anki://collection/overview– 学習の概要。anki://search/isdue、anki://search/isnew、anki://search/deckcurrent– 各最大50枚のカード。anki://deck/{deckName}/overview– 1つのデッキの期限到来カード数。anki://model/{modelName}– ノートタイプのフィールド、テンプレート、CSS。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
