🎬 ani-mcp

あなたのアニメ・マンガの好みを理解する、AniList向けのスマートなMCPサーバー — 単なる生のAPIコールではありません。
✨ ani-mcpの違い
ほとんどのAniList連携はAPIを1:1で反映するだけです。ani-mcpはその上にインテリジェンス層を追加します:
- 🎯 好みのプロファイリング — 視聴完了リストからあなたの好みのモデルを構築
- 💡 パーソナライズされたおすすめ — 好み・気分・季節のラインナップに基づく「次は何を見るべき?」
- 🤝 相性診断 — 2人のユーザーの好みを比較
- 🔔 続編アラート — 視聴完了した作品の続編が今シーズン放送中かを検出
- 📺 視聴順 — 長期シリーズのフランチャイズ関係をたどって案内
- ⏱️ セッション計画 — 「90分あるけど何を見よう?」を現在のリストから提案
- 📊 年間レビュー — 視聴・読書の統計をまとめて振り返り
さらに基本機能も充実:検索、詳細、トレンド、季節ブラウズ、リスト管理、ソーシャル機能、コミュニティのおすすめ。すべての検索・ブラウズツールはページネーションに対応し、最初のページ以降も閲覧できます。
🚀 30秒で試す
アカウント不要。MCP互換のあらゆるクライアントで動作します。
Claude Desktop
設定ファイルに追加してください(Settings > Developer > Edit Config、またはmacOSでは ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"anilist": {
"command": "npx",
"args": ["-y", "ani-mcp"]
}
}
}
保存後、Claude Desktopを再起動してください。
または、最新リリースから ani-mcp.mcpb をダウンロードし、Settings > Extensions からインストールします。
Claude Code
claude mcp add ani-mcp -- npx -y ani-mcp
パーソナライズ機能
おすすめ、好みのプロファイリング、リスト管理のためにユーザー名を追加します:
{
"mcpServers": {
"anilist": {
"command": "npx",
"args": ["-y", "ani-mcp"],
"env": {
"ANILIST_USERNAME": "your_username"
}
}
}
}
書き込み操作(進捗の更新、スコアリング、リスト編集)には、ANILIST_TOKEN も追加してください。詳細は環境変数を参照してください。
⚙️ 環境変数
| 変数 |
必須 |
説明 |
ANILIST_USERNAME |
いいえ |
リストと統計ツールのデフォルトユーザー名。呼び出しごとに指定することも可能。 |
ANILIST_TOKEN |
いいえ |
AniList OAuthトークン。書き込み操作と非公開リストに必要。 |
ANILIST_TITLE_LANGUAGE |
いいえ |
タイトルの優先表示:english(デフォルト)、romaji、native。 |
ANILIST_SCORE_FORMAT |
いいえ |
スコア表示の上書き:POINT_100、POINT_10_DECIMAL、POINT_10、POINT_5、POINT_3。 |
ANILIST_NSFW |
いいえ |
true に設定すると結果に成人向けコンテンツを含める。デフォルト:false。 |
ANILIST_MOOD_CONFIG |
いいえ |
ムードキーワードを追加・上書きするJSONオブジェクト。ムード設定を参照。 |
DEBUG |
いいえ |
true に設定するとstderrにデバッグログを出力。 |
MCP_TRANSPORT |
いいえ |
http に設定するとHTTP Streamトランスポートを使用。デフォルト:stdio。 |
MCP_PORT |
いいえ |
HTTPトランスポートのポート。デフォルト:3000。 |
MCP_HOST |
いいえ |
HTTPトランスポートのホスト。デフォルト:localhost。 |
🛠️ ツール
🔍 検索と発見
| ツール |
説明 |
anilist_search |
ジャンル・年・フォーマットでフィルタリングしてタイトルからアニメ/マンガを検索 |
anilist_details |
タイトルの詳細、関連作品、おすすめ |
anilist_seasonal |
シーズンのアニメリンナップを閲覧 |
anilist_trending |
現在AniListでトレンドの作品 |
anilist_genres |
ジャンル内のトップ作品をフィルター付きで閲覧 |
anilist_genre_list |
有効なすべてのジャンルとコンテンツタグを一覧 |
anilist_recommendations |
特定タイトルのコミュニティおすすめ |
📋 リストと統計
| ツール |
説明 |
anilist_list |
ユーザーのアニメ/マンガリストをステータスでフィルタリング |
anilist_lookup |
特定のタイトルがユーザーのリストにあるか確認 |
anilist_stats |
視聴/読書の統計、トップジャンル、スコア分布 |
🧠 インテリジェンス
| ツール |
説明 |
anilist_taste |
完了リストから好みのプロファイルを生成 |
anilist_pick |
積みリスト・季節ラインナップ・発見プールからパーソナライズされた「次に何を見るか」 |
anilist_compare |
2人のユーザーの好みの相性を比較 |
anilist_wrapped |
年間レビューのまとめ |
anilist_explain |
「なぜこれが好きなのか?」— 好みのプロファイルに対してタイトルをスコアリング |
anilist_similar |
指定したアニメやマンガに似たタイトルを検索 |
anilist_sequels |
完了した作品の続編で今シーズン放送中のもの |
anilist_watch_order |
フランチャイズの視聴順 |
anilist_session |
時間予算内で視聴セッションを計画 |
anilist_mal_import |
MyAnimeListユーザーのリストをインポートしておすすめを生成 |
anilist_kitsu_import |
Kitsuユーザーのリストをインポートしておすすめを生成 |
🎴 カード
| ツール |
説明 |
anilist_taste_card |
共有可能な好みのプロファイルカードをPNG画像として生成 |
anilist_compat_card |
2人のユーザーを比較する相性カードをPNG画像として生成 |
ℹ️ 情報
| ツール |
説明 |
anilist_staff |
タイトルのスタッフクレジットと声優 |
anilist_staff_search |
名前で人物を検索し、すべての作品を表示 |
anilist_studio_search |
スタジオを検索して制作作品を表示 |
anilist_schedule |
放送スケジュールと次回エピソードのカウントダウン |
anilist_airing |
現在視聴中の作品の今後のエピソード |
anilist_characters |
名前でキャラクターを検索し、登場作品と声優を表示 |
anilist_whoami |
認証状態とスコア形式を確認 |
👥 ソーシャル
| ツール |
説明 |
anilist_profile |
ユーザーのプロフィール、自己紹介、お気に入り、統計を表示 |
anilist_feed |
ユーザーのフィードの最近のアクティビティ |
anilist_reviews |
タイトルのコミュニティレビュー |
anilist_favourite |
アニメ・マンガ・キャラクター・スタッフ・スタジオのお気に入りを切り替え |
anilist_activity |
フィードにテキストアクティビティを投稿 |
anilist_group_pick |
グループで一緒に見るアニメ/マンガを検索 |
anilist_shared_planning |
2人のユーザーの計画リストの重複を検出 |
anilist_follow_suggestions |
フォロー中のユーザーを好みの相性でランク付け |
anilist_react |
アクティビティにいいねまたは返信 |
📊 アナリティクス
| ツール |
説明 |
anilist_calibration |
ジャンルごとのコミュニティ評価とのスコア偏り |
anilist_drops |
ドロップパターン分析 — ジャンル/タグのクラスタとドロップポイントの中央値 |
anilist_evolution |
2年間の時間枠で好みがどう変化したか |
anilist_completionist |
関係グラフによるフランチャイズのコンプリート追跡 |
anilist_seasonal_stats |
シーズンごとの視聴/完走/ドロップ率 |
anilist_pace |
現在視聴中の作品の推定完走日 |
✍️ 書き込み(ANILIST_TOKEN が必要)
| ツール |
説明 |
anilist_update_progress |
エピソードやチャプターの進捗を更新 |
anilist_add_to_list |
ステータスを付けてタイトルをリストに追加 |
anilist_rate |
タイトルをスコアリング(0〜10) |
anilist_delete_from_list |
リストからエントリを削除 |
anilist_undo |
最後の書き込み操作を元に戻す |
anilist_unscored |
完了したが未スコアのタイトルを一括スコアリング用に一覧 |
anilist_batch_update |
リストエントリの一括フィルター+アクション(デフォルトはドライラン) |
📚 リソース
MCPリソースは、ツール呼び出しなしでAIアシスタントにコンテキストを提供します。リソースをサポートするクライアントは、この情報を会話に自動的に含めることができます。
| リソース |
説明 |
anilist://profile |
自己紹介、統計、お気に入りを含むあなたのAniListプロフィール |
anilist://taste/{type} |
ANIMEまたはMANGAの好みのプロファイル(ジャンルの重み、テーマ、スコアリングパターン) |
anilist://list/{type} |
進捗とスコアを含む現在視聴中/読書中のエントリ |
💬 プロンプト
クライアントがクイックアクションとして提供できる、あらかじめ用意された会話のきっかけ。
| プロンプト |
説明 |
setup |
AniListアカウントの接続をステップバイステップでガイド |
seasonal_review |
今シーズンのアニメを好みのプロファイルと照らし合わせてレビュー |
what_to_watch |
気分と時間予算をオプションで指定して、今何を見るかを計画 |
roast_my_taste |
あなたのアニメの好みをユーモラスに斬る |
compare_us |
あなたの好みを他のユーザーと比較 |
year_in_review |
あなたのアニメ/マンガの年間レビュー |
explain_title |
なぜ特定のタイトルが好き(または嫌い)になるのか? |
find_similar |
楽しんだ作品に似たタイトルを検索 |
💡 使用例
ani-mcpを接続したら、AIアシスタントに次のようなことを尋ねられます:
「次は何を見るべき?」
anilist_pick を使用して完了リストを分析し、好みのプロファイルを構築し、Planningリストからあなたの好みにどれだけ合うかでランク付けしたタイトルを推薦します。
「ダークで心理的な作品が欲しい」
anilist_pick をムードフィルタリング付きで使用し、その雰囲気に合うタイトルを優先し、合わないものを減点します。
「今シーズンのおすすめは?」
anilist_pick を source: SEASONAL と共に使用し、現在放送中のアニメをあなたの好みのプロファイルと比較してランク付けします。
「90分あるんだけど、今夜は何を見よう?」
anilist_session を使用して、現在視聴中のリストから選び、最もマッチするエピソードで時間予算を埋めます。
「見終わった作品の続編で放送中のものはある?」
anilist_sequels を使用して、完了リストと今シーズンのラインナップを照合します。
「Fateはどの順番で見ればいい?」
anilist_watch_order を使用してフランチャイズの関係グラフをたどり、番号付きの視聴順を生成します。
「username123と好みを比較して」
anilist_compare を使用して共通のタイトルを見つけ、相性スコアを計算し、最大の不一致を強調します。
「なぜVinland Sagaが好きなのか?」
anilist_explain を使用してタイトルをあなたの好みのプロファイルに対してスコアリングし、ジャンルの親和性とテーマの一致を分解します。
「私のアニメの年間レビューを見せて」
anilist_wrapped を使用して、指定した年に見たすべてをまとめます。
🎭 ムード設定
anilist_pick と anilist_session は自由形式の mood 文字列を受け付けます。組み込みキーワードには次が含まれます:dark、chill、hype、action、romantic、funny、brainy、sad、scary、epic、wholesome、intense、mystery、fantasy、scifi、trippy、nostalgic、artistic、competitive、cozy。
キーワードを追加・上書きするには、ANILIST_MOOD_CONFIG をJSONオブジェクトとして設定します:
{
"ANILIST_MOOD_CONFIG": "{\"cozy\":{\"boost\":[\"Slice of Life\",\"Iyashikei\"],\"penalize\":[\"Horror\"]},\"mykeyword\":{\"boost\":[\"Romance\"],\"penalize\":[]}}"
}
各キーはムードキーワードで、AniListのジャンルとタグの配列 { boost: string[], penalize: string[] } にマッピングされます。
🔒 プライバシー
詳細は PRIVACY.md を参照してください。要するに:ani-mcpはローカルで動作し、リクエストはAniList APIにのみ送信され、何も保存せず、分析データも収集しません。
🐳 Docker
docker build -t ani-mcp .
docker run -e ANILIST_USERNAME=your_username ani-mcp
デフォルトでポート3000のHTTP Streamトランスポートで動作します。
🔨 ソースからビルド
git clone https://github.com/gavxm/ani-mcp.git
cd ani-mcp
npm install
npm run build
npm test
💬 サポート
バグ報告と機能リクエスト:GitHub Issues
📄 ライセンス
MIT