アンキ-MCP
AnkiConnectアドオンを介してAnkiフラッシュカードとやり取りするためのモデルコンテキストプロトコル(MCP)サーバー。このサーバーは、AnkiConnectアクションを論理サービスとして整理されたMCPツールとして公開します。
前提条件
Ankiデスクトップアプリケーション
AnkiConnectアドオンがAnkiにインストールされ設定されている
Python 3.8以上
uv(依存関係の実行とインストール用。オプションだが推奨)
Related MCP server: Anki MCP Server
インストール
# Clone the repository
git clone https://github.com/ujisati/anki-mcp.git
cd anki-mcp
# Install dependencies (using uv)
uv pip install -e .使用法
MCP サーバーを実行するには:
uv run anki-mcpサーバーが起動し、MCP リクエストをリッスンします。通常はhttp://127.0.0.1:8765の AnkiConnect とインターフェイスします。
サーバーの検査
MCP インスペクターを使用すると、利用可能なツールを表示できます。
npx @modelcontextprotocol/inspector uv run anki-mcpMCPクライアントの構成
これをMCPクライアント(AIアシスタントフレームワークなど)と統合する場合は、このサーバーを見つけるように設定する必要があります。設定例を以下に示します。
{
"mcpServers": {
"anki": {
"command": "uv",
"args": [
"run", // uv will find anki-mcp if run from project root
"anki-mcp"
],
// If running from outside the project directory, specify the path:
// "args": [
// "--directory",
// "/ABSOLUTE/PATH/TO/anki-mcp", // Replace with actual path
// "run",
// "anki-mcp"
// ]
}
}
}利用可能なMCPツール
このMCPサーバーは、サービスごとにグループ化されたツールを通じてAnkiの機能へのアクセスを提供します。ツール名はAnkiConnectのアクションに直接対応しています。
デッキサービス ( deck.* )
deck.deckNamesAndIds: デッキ名とそれぞれの ID の完全なリストを取得します。deck.getDeckConfig: 指定されたデッキ名の構成グループ オブジェクトを取得します。deck.deckNames: 現在のユーザーのデッキ名の完全なリストを取得します。deck.createDeck: 新しい空のデッキを作成します。deck.deleteDecks: 指定されたデッキを削除します。deck.changeDeck: カードを別のデッキに移動します。deck.saveDeckConfig: デッキ構成グループを保存します。
ノートサービス ( note.* )
note.findNotes: 指定された Anki 検索クエリのノート ID を返します。note.notesInfo: 指定されたノート ID の情報を返します。note.getNoteTags: 特定のノート ID のタグを取得します。note.addNote: 新しいノートを作成します。note.updateNoteFields: 既存のメモのフィールドを変更します。note.deleteNotes: 指定されたメモを削除します。note.addNotes: 複数のメモを作成します。note.addTags: 指定されたメモにタグを追加します。note.removeTags: 指定されたメモからタグを削除します。note.updateNote: 既存のノートのフィールドやタグを変更します。
カードサービス ( card.* )
card.findCards: 指定された Anki 検索クエリのカード ID を返します。card.cardsInfo: 指定されたカード ID の情報を返します。card.cardsToNotes: 指定されたカード ID のノート ID を返します。card.areSuspended: 指定されたカードが停止されているかどうかを確認します。card.cardsModTime: 指定されたカード ID の変更時刻を返します。card.suspended: 1 枚のカードが停止されているかどうかを確認します。card.suspend: 指定されたカードを一時停止します。card.unsuspend: 指定されたカードのサスペンドを解除します。card.setSpecificValueOfCard: 1 枚のカードに特定の値を設定します (注意して使用してください)。
モデルサービス ( model.* ) (ノートタイプ)
model.modelNamesAndIds: モデル (ノート タイプ) 名とその ID の完全なリストを取得します。model.findModelsByName: 指定されたモデル名のモデル定義を取得します。model.modelFieldNames: 指定されたモデル名のフィールド名を取得します。model.modelTemplates: 指定されたモデルの各カードのテンプレートのコンテンツを取得します。model.modelStyling: 指定されたモデル名の CSS スタイルを取得します。model.createModel: 新しいモデル(ノートタイプ)を作成します。model.updateModelTemplates: 既存のモデルのテンプレートを変更します。model.updateModelStyling: 既存のモデルの CSS スタイルを変更します。model.modelFieldAdd: 既存のモデルに新しいフィールドを追加します。model.modelFieldRemove: 既存のモデルからフィールドを削除します。
メディアサービス ( media.* )
media.retrieveMediaFile: メディア ファイルの base64 エンコードされたコンテンツを取得します。media.getMediaFilesNames: glob パターンに一致するメディア ファイルの名前を取得します。media.storeMediaFile: メディア ファイル (base64、パス、または URL から) を保存します。media.deleteMediaFile: 指定されたメディア ファイルを削除します。
発達
開発用に設定するには:
uv sync
source .venv/bin/activate
uv pip install -e .テストの実行
pytest藤堂
[ ] AnkiConnectツールの追加を完了する