Anki MCP Server について
Anki MCP Server は AnkiConnect と MCP クライアントをつなぎ、Anki のデッキ、カード、ノートを管理するユーザー向けに各種操作ツールを提供します。
主な機能
- 01デッキと統計の管理
- 02カードの検索と状態変更
- 03ノートの作成・編集・検索
- 04ノートタグの管理
- 05ノートモデルとフィールドの照会
- 06Anki コレクションの同期
活用シーン
- 01クライアントから復習対象カードを検索
- 02ノートの一括作成や更新
- 03カードの一時停止や再学習への変更
- 04デッキ統計の確認とコレクションの同期
MCP 対応
MCP サーバーとして Anki の操作をツールとして MCP クライアントに公開し、ローカルの Anki-Connect 経由で Anki と通信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Anki MCP Server
概要
このプロジェクトは、Anki間隔反復学習ソフトウェアへのブリッジとして機能するModel Context Protocol(MCP)サーバーを、Anki-Connectアドオン経由で提供します。MCP対応クライアント(AI アシスタントやその他のアプリケーションなど)が、デッキ、カード、ノートを管理しながらAnkiコレクションを操作できるようにします。
機能
- Ankiの包括的なアクションをMCPツールとして公開します。
- ローカルのAnki-Connectインスタンスとの通信を管理します。
- 次のツールを提供します。
- デッキ管理(一覧表示、作成、削除、カードの移動、統計情報の取得)
- カード管理(検索、情報取得、一時停止、一時停止解除、ステータス確認、忘却、再学習)
- ノート管理(追加、更新、検索、情報取得、タグ管理、削除)
- モデル管理(名前の一覧表示、フィールドの一覧表示)
- その他のアクション(アクセス許可のリクエスト、バージョン取得、同期)
前提条件
- Anki: Ankiをシステムにインストールし、実行している必要があります。
- Anki-Connectアドオン: AnkiにAnki-Connectアドオンをインストールし、実行している必要があります。デフォルトでは、
http://127.0.0.1:8765でリッスンします。 - Python: 互換性のあるPythonバージョン(
pyproject.tomlを参照)。 - uv: Python環境と依存関係の管理に推奨されます(uvのインストール)。
インストール
- リポジトリをクローンします:
git clone <repository-url> # Replace with the actual URL if applicable cd anki-mcp-server - 依存関係をインストールします:
uv sync
サーバーの実行
サーバーを起動する前に、AnkiがAnki-Connectアドオンを有効にした状態で実行されていることを確認してください。
サーバーは、いくつかの方法で実行できます。
-
直接実行(uvを使用):
uv run python main.pyこれにより、stdioトランスポートを使用してサーバーが起動します。直接統合やテストに適しています。
-
開発モード(MCP Inspectorを使用):
uv run mcp dev main.pyこれによりサーバーが起動し、MCP Inspectorツールが開きます。利用可能なツールやリソースを対話形式でテストできます。
-
Claude Desktopにインストール:
uv run mcp install main.py --name "Anki Bridge"これによりサーバーがClaude Desktopにインストールされ(利用可能な場合)、アシスタント内でAnkiツールを利用できるようになります。
使用方法
サーバーが起動し、MCPクライアント(mcp install経由のClaude Desktopや、MCPプロトコルを使用する別のアプリケーションなど)に接続されたら、次の手順で操作します。
- アクセス許可をリクエストします: 最初のアクションでは通常、
anki_request_permissionを呼び出します。クライアントのオリジンがAnki-Connectによって信頼されていない場合、Ankiに確認ポップアップが表示されます。 - ツールを使用します: 利用可能なツール(以下に一覧表示)を呼び出して、Ankiコレクションを操作します。
設定
- Anki-Connect URL: サーバーは、
main.pyのANKICONNECT_URL定数で定義されたURLを使用してAnki-Connectに接続します(デフォルト:http://127.0.0.1:8765)。Anki-Connectの設定で異なるアドレスやポートを使用している場合は、これを変更してください。
利用可能なツール
サーバーは、Anki-Connect APIのアクションに対応する次のツールを公開します。
デッキ操作
anki_deck_names: デッキ名の一覧を取得します。anki_deck_names_and_ids: デッキ名とその ID を取得します。anki_create_deck(deck_name: str): 空のデッキを新規作成します。anki_change_deck(card_ids: List[int], deck_name: str): カードを別のデッキに移動します。anki_delete_decks(deck_names: List[str]): 指定したデッキとそのカードを削除します。anki_get_deck_stats(deck_names: List[str]): 指定したデッキの統計情報を取得します。
カード操作
anki_find_cards(query: str): Anki の検索クエリを使ってカードを検索します。anki_cards_info(card_ids: List[int]): 複数のカードの詳細情報を取得します。anki_cards_to_notes(card_ids: List[int]): 指定したカード ID のノート ID を取得します。anki_suspend_cards(card_ids: List[int]): 指定したカードを一時停止します。anki_unsuspend_cards(card_ids: List[int]): 指定したカードの一時停止を解除します。anki_are_suspended(card_ids: List[int]): カードが一時停止中かどうかを確認します。anki_are_due(card_ids: List[int]): カードが復習期限かどうかを確認します。anki_forget_cards(card_ids: List[int]): 指定したカードを新規カードにリセットします。anki_relearn_cards(card_ids: List[int]): 指定したカードを再学習状態にします。
ノート操作
anki_add_note(...): 指定したデッキ、モデル、フィールド、オプション、タグ、メディアを含む新しい Anki ノートを作成します。anki_update_note_fields(...): 既存のノートのフィールドとメディアを変更します。anki_find_notes(query: str): Anki の検索クエリを使ってノートを検索します。anki_notes_info(note_ids: List[int]): 複数のノートの詳細情報を取得します。anki_get_note_tags(note_id: int): 指定したノートのタグを取得します。anki_add_tags(note_ids: List[int], tags: str): スペース区切りのタグをノートに追加します。anki_remove_tags(note_ids: List[int], tags: str): スペース区切りのタグをノートから削除します。anki_update_note_tags(note_id: int, tags: List[str]): ノートのタグを設定し、既存のタグを置き換えます。anki_delete_notes(note_ids: List[int]): 指定したノートとそのカードを削除します。
モデル操作
anki_model_names(): モデル(ノートタイプ)名の一覧を取得します。anki_model_field_names(model_name: str): 指定したモデルのフィールド名の一覧を取得します。
その他の操作
anki_request_permission(): Anki-Connect API の使用許可をリクエストします。最初に呼び出してください。anki_version(): Anki-Connect API のバージョンを取得します。anki_sync(): ローカルの Anki コレクションを AnkiWeb と同期します。
コントリビューション
コントリビューションを歓迎します。プロジェクトのコントリビューションガイドライン(用意されている場合)を参照してください。
ライセンス
このプロジェクトの配布に適用されるライセンス(例:MIT License)を指定してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。