Skip to main content
Glama
debnath-d

Anki Model Context Protocol (MCP) Server

by debnath-d

Anki Model Context Protocol (MCP) Server

Python 3.10+ License: MIT

AIアシスタント(Claude DesktopClaude CodeAntigravityCodexCursor など)が Anki のフラッシュカード、デッキ、ノートタイプ、タグ、メディア、検索を直接管理できる、高性能なModel Context Protocol (MCP) サーバーです。


⚡ ユニバーサルなファイルベース I/O アーキテクチャ

現代のフラッシュカード(特に HTML マークアップ、構文ハイライトされたコードブロック、LaTeX 数式を含むもの)は大きなペイロードです。これらを JSON-RPC ツールのパラメータとしてストリーミングしたり、完全なカード内容をモデルに直接返したりすると、トークン枯渇、出力の切り詰めが引き起こり、コンテキストウィンドウが飽和します。

このサーバーは**ユニバーサルなファイルベースの入出力(File-Based I/O)**を実装します。

  1. インバンドトークン肥大化ゼロ: フラッシュカードの変更、クエリ、検索、スキーマの検査は、入力 JSON ファイルのパスを受け取り、完全な構造化出力をディスクへ書き出します。

  2. コンパクトなテレメトリ応答: すべてのツール呼び出しは、ステータス、ID、処理件数、解決済みの output_file パスに加え、上限付きのメタデータ概要($< 150$ tokens)を返します。

  3. アトミックな一括取り込み: 数百枚のカードを単一の JSON ペイロードに書き込み、アトミックな SQLite トランザクションで数ミリ秒で取り込めます。

  4. クロスプラットフォームな一時保存: 出力はデフォルトで OS の一時ディレクトリ(Windows では %TEMP%\anki_mcp、Linux/macOS では /tmp/anki_mcp)に保存され、ANKI_MCP_OUTPUT_DIR で上書きできます。


Related MCP server: Anki MCP Server

機能

  • ⚡ 高速ダイレクトブリッジ: 公式 anki Python エンジンを介して Anki のコレクションデータベース(collection.anki2)へ直接アクセスし、HTTP オーバーヘッドがありません。

  • 🔒 非ブロッキングな接続ライフサイクル: リクエストごとにオープン/クローズのコンテキスト管理(~2.7ms)を行い、データベースロックを即座に解放して Anki Desktop をロックアウトしません。

  • 🪟 クロスプラットフォーム: WindowsmacOSLinux をネイティブサポートし、標準 OS の場所からコレクションを自動検出します。

  • 🗂️ 階層デッキ: ネストしたデッキ作成(例: Computer Science::Algorithms::Trees))を完全サポートします。

  • 📝 リッチなカード形式: 標準カード/基本カード、穴埋め(Cloze)削除({{c1::...}})、カスタムフィールド、LaTeX 数式($...$$$...$$)に対応しています。

  • 🔍 クエリエンジン: Anki の検索構文(deck:Languages tag:grammaris:dueadded:7"Recursion")を完全サポートします。

  • 🏷️ タグ管理: 階層的なタグ付けとタグの一括追加、一括削除に対応しています。

  • 📦 一括作成: JSON ペイロードによる単一のアトミック操作だけで、大量のカードをまとめて追加できます。

  • 💾 デッキエクスポート: .apkg.colpkg.json へのネイティブなパッケージ化を提供します。

  • 💡 MCP プロンプトとリソース: 組み込みリソース(anki://decksanki://stats)と構造化カード生成プロンプト(flashcard_generator)を備えています。


インストールと設定

このプロジェクトは、高速で再現可能な Python 環境管理のため、uv を使用しています。

クローンとインストール

git clone https://github.com/debnath-d/anki-mcp-server.git
cd anki-mcp-server
uv sync

サーバーの起動

uv run anki-mcp-server

クライアント設定

1. Claude Desktop

Claude Desktop の設定ファイルにこのサーバーを追加します:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Windows の設定

{
  "mcpServers": {
    "anki": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\path\\to\\anki-mcp-server",
        "run",
        "anki-mcp-server"
      ]
    }
  }
}

macOS / Linux の設定

{
  "mcpServers": {
    "anki": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/anki-mcp-server",
        "run",
        "anki-mcp-server"
      ]
    }
  }
}

2. Google Antigravity

Antigravity の MCP 設定(~/.gemini/config/mcp_config.json)に追加します:

{
  "mcpServers": {
    "anki": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/anki-mcp-server",
        "run",
        "anki-mcp-server"
      ]
    }
  }
}

3. Claude Code / Codex / CLI クライアント

Claude Code を MCP サーバーで起動します:

claude --mcp-server "uv --directory '/path/to/anki-mcp-server' run anki-mcp-server"

提供されている MCP ツール

1. デッキ管理

ツール

パラメータ

説明

list_decks

output_file?: str

名前、ID、カード数とともに全デッキを一覧表示します。階層構造をディスクに書き出し、概要を返します。

create_deck

deck_name: str, output_file?: str

新しいデッキまたはサブデッキを作成します(例: Computer Science::Algorithms)。

rename_deck

deck_id: int, new_name: str, output_file?: str

既存のデッキの名前を変更し、ネストしたすべてのサブデッキのプレフィックスを更新します。

delete_deck

deck_id: int?, deck_name: str?, output_file?: str

デッキとそのカードを削除します。

change_deck

target_deck_name?: str, card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

ID、クエリ、または入力ファイルを指定して、カードをデッキ間で移動します。

2. ノートタイプ(モデル)

ツール

パラメータ

説明

list_notetypes

output_file?: str

利用可能なすべてのノートタイプ(例: BasicCloze)とそのフィールドをディスクに一覧表示します。

get_notetype_info

notetype_name: str, output_file?: str

ノートタイプの詳細なスキーマ、フィールド、テンプレートをディスクに返します。

3. フラッシュカード / ノート管理(ファイルベース)

ツール

パラメータ

説明

add_note

input_file: str, deck_name?: str, output_file?: str

JSON ファイルのペイロード({deck_name, front, back, fields, tags, suspended})から標準ノートを作成します。

add_cloze_note

input_file: str, deck_name?: str, output_file?: str

JSON ファイルのペイロード({deck_name, text, extra, tags, suspended})から穴埋め(Cloze)削除カードを作成します。

add_notes_batch

input_file: str, output_file?: str

JSON 配列ファイルから、複数のフラッシュカードを単一の原子的一括操作で追加します。

get_note

note_id: int, output_file?: str

ID でノートを取得し、フィールド、タグ、ノートタイプ、カードをディスクに返します。

update_note

note_id: int, input_file: str, output_file?: str

JSON ペイロードを使って、既存ノートのフィールドまたはタグを更新します。

delete_notes

note_ids?: list[int], input_file?: str, output_file?: str

ID リストまたは JSON ファイルによって、ノートとそのカードを管理します。

4. メディア・状態管理・エクスポート

ツール

パラメータ

説明

store_media_file

source_path: str, target_name?: str

画像・図をディスクから Anki のメディアストレージへ直接コピーし、埋め込みタグを返します。

suspend_cards

card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

ID、クエリ、またはファイルによって、アクティブな復習待ちキューからカードを一時停止します。

unsuspend_cards

card_ids?: list[int], note_ids?: list[int], query?: str, input_file?: str, output_file?: str

ID、クエリ、またはファイルによって、一時停止中のカードをアクティブな復習キューに復元します。

export_deck

deck_name: str, target_path: str, format: str = "apkg", include_media: bool = True

デッキをディスク上の .apkg.colpkg、または .json にエクスポートします。

5. 検索と発見

ツール

パラメータ

説明

search_notes

query: str, limit: int = 500, output_file?: str

Anki の検索構文(deck:Science tag:physics, is:due, "Newton")でノートを検索し、結果をディスクに書き出します。

search_cards

query: str, limit: int = 500, output_file?: str

カードを検索し、復習キュー、復習間隔、期限日をディスクに返します。

6. タグ管理と統計

ツール

パラメータ

説明

list_tags

output_file?: str

コレクション内のすべての一意なタグをディスクに一覧表示します。

add_tags_to_notes

note_ids?: list[int], tags?: list[str], input_file?: str, output_file?: str

指定したノートにタグを一括で追加します。

remove_tags_from_notes

note_ids?: list[int], tags?: list[str], input_file?: str, output_file?: str

指定したノートからタグを一括で削除します。

get_collection_stats

output_file?: str

概要統計(合計ノート数、合計カード数、未学習・期限切れカードの数、デッキごとの内訳)を返します。


テスト

自動テストスイートとリンターを実行します:

ruff check .
uv run python -m unittest discover -s tests

重要な注意点とトラブルシューティング

  1. SQLite データベースロック: Anki は排他的なファイルロックを使用します。MCP サーバーが書き込み操作を実行している間は、anki.errors.DBError ロックを防ぐため、Anki デスクトップ GUI アプリケーションを閉じておく必要があります。

  2. コレクションパスの自動検出:

    • Windows: %APPDATA%\Anki2\<Profile>\collection.anki2 または %LOCALAPPDATA%\Anki2\<Profile>\collection.anki2 で自動検出されます。

    • macOS: ~/Library/Application Support/Anki2/<Profile>/collection.anki2 で自動検出されます。

    • Linux: ~/.local/share/Anki2/<Profile>/collection.anki2 で自動検出されます。

    • カスタムの場所を使用するには、ANKI_COLLECTION_PATH 環境変数を設定します。

  3. 出力キャッシュ: ツールの出力は、デフォルトでは OS の一時ディレクトリ(%TEMP%\anki_mcp または /tmp/anki_mcp)に保存されます。カスタムのディレクトリを使用するには、ANKI_MCP_OUTPUT_DIR を設定します。

Install Server
F
license - not found
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • AI access to your aNotepad online notes: read, search, write, and organize via 22 tools.

  • Free: turn your AI chats into spaced-repetition vocabulary. 13 tools, reads and writes.

  • AI-powered YouTube to flashcards with spaced repetition and Anki export

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/debnath-d/anki-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server