MAL MCP Server について
MAL MCP Serverは、MCPクライアントにMyAnimeListの検索・閲覧機能と、ユーザー個人のアニメ・マンガリストへのアクセスを提供します。読み取りツールはTenrai経由で認証なしで使え、個人リストの管理には認証後にMyAnimeList公式APIを使います。
主な機能
- 01アニメ、マンガ、キャラクター、人物を検索
- 02ランキング、シーズン、放送予定を閲覧
- 03詳細、レビュー、おすすめを取得
- 04個人のMALリストを表示・更新
- 05個人リストの項目を削除
活用シーン
- 01アニメやマンガの詳細とレビューを調べる
- 02今期作品やランキングを確認
- 03個人の視聴・読書リストを確認
- 04MAL項目の進捗やスコアを更新
MCP 対応
stdio方式のMCPサーバーとして、Tenraiを利用する検索・閲覧ツールと、MyAnimeList公式の個人リスト用ツールを公開します。個人リストへのアクセスにはMyAnimeList Client IDと一度のログインが必要ですが、読み取りツールは認証なしで使えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
54掲載時のツール一覧 · 6 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| q | string | はい | 検索クエリ。例:アニメのタイトル。 |
| sfw | boolean | いいえ | true の場合、成人向け/露骨な内容のレーティングが付いたエントリー(R+ Mild Nudity 以上)を除外します。デフォルトは false(フィルターなし)です。注:この設定だけでは、Ecchi ジャンル(ファンサービス)タグ付きの一般向けで安全なレーティングの作品は除外されません。これらも除外するには `sfw_strict` を使用してください。 |
| page | integer | いいえ | 1 始まりのページ番号(1~1000)。 |
| sort | enum | いいえ | ソート方向。asc | desc |
| type | array | いいえ | 1 つ以上のメディアタイプに限定します。 |
| limit | integer | いいえ | 1 ページあたりの最大結果数(1~50)。 |
| score | number | いいえ | 平均スコアがこの値と完全に一致するエントリーに限定します(利用機会はほとんどありません。範囲指定には min_score/max_score を推奨)。 |
| genres | string | いいえ | 含める MAL ジャンル ID をカンマ区切りで指定します(最大 25 個)。例:'1,4'。ID は get_anime_genres で確認してください。 |
| letter | string | いいえ | タイトルがこの1文字で始まるエントリーに限定します。 |
| rating | array | いいえ | 1 つ以上の指定コンテンツレーティングに限定します。`sfw`/`sfw_strict` より細かく指定できます。成人向けコンテンツを一律に除外するのではなく、正確なレーティング範囲を指定する場合に使用します。 |
| status | enum | いいえ | 放送ステータスで絞り込みます。airing | complete | upcoming |
| end_date | string | いいえ | 終了日がこの日付以前のエントリーのみを含めます(YYYY-MM-DD)。 |
| order_by | enum | いいえ | 並べ替えに使用するフィールド。mal_id | title | start_date | end_date | episodes | score | scored_by | rank | popularity | members | favorites |
| max_score | number | いいえ | MAL 平均スコアの上限(境界値を含む)、1~10。 |
| min_score | number | いいえ | MAL 平均スコアの下限(この値を含む)。範囲は 0~10。 |
| producers | string | いいえ | 対象を限定する MAL の制作会社/スタジオ ID(カンマ区切り、最大 25 件)。ID は get_producers で調べてください。 |
| sfw_strict | boolean | いいえ | true の場合、成人向け/露骨な内容のレーティングの作品に加え、一般向けや安全なレーティングであっても Ecchi ジャンルのタグが付いた作品をすべて除外します。`sfw` のみの場合より厳格です。デフォルトは false です。 |
| start_date | string | いいえ | 開始日がこの日付以降(当日を含む)の作品のみを含めます(YYYY-MM-DD)。 |
| unapproved | boolean | いいえ | true の場合、MAL のモデレーターによる承認前の作品も含めます(デフォルトでは除外)。デフォルトは false です。 |
| genres_exclude | string | いいえ | 除外する MAL ジャンル ID(カンマ区切り、最大 25 件)。例:'1,4'。ID は get_anime_genres で調べてください。 |
詳細
MAL MCP サーバー
MyAnimeList 用の MCP サーバーです。標準の MCP stdio プロトコルで通信するため、MCP 対応のあらゆるクライアントやエージェント(Claude Desktop/Code、Cursor、VS Code、Cline、Continue など)で動作します。
できること
ハイブリッドバックエンドを使用します。
- 読み取り → Tenrai(無料の非公式 MAL API)。 検索、詳細、ランキング、シーズン、キャラクター、おすすめ、レビューに対応します。認証情報は不要です。
- 個人リスト → 公式 MyAnimeList API。 自分のアニメ/マンガリストのエントリーを読み取り、更新、削除できます。1 回限りのログインが必要です(下記を参照)。
必要なもの(および利用できる機能)
始めるために必要なものはありません。インストールに進んで構いません。以下はすべて任意で、設定を追加するたびに利用できる機能が増えます。
| 設定するもの... | 利用できる機能... |
|---|---|
| (何もなし) | 検索、詳細、ランキング、シーズン、キャラクター、レビューなど。登録不要で、すぐに使えます。 |
| MyAnimeList の Client ID(無料、2 分で完了 →) | 上記の機能に加え、Tenrai(既定の読み取りバックエンド)に障害が発生しても、11 個の読み取りツール(検索、ランキング、シーズン、おすすめ、詳細、統計)が引き続き動作します。代わりに公式 MyAnimeList API に対して再試行します。ログインは引き続き不要です。 |
上記の Client ID に加えて、login_mal ツールを一度実行(同じ手順はこちら →) | 上記の機能すべてに加え、自分の MyAnimeList リストを利用できます。リストの表示、エントリーの追加/更新、視聴済みの記録、エントリーの削除が可能です。 |
ログインしていない場合、個人リスト用ツールはログイン方法を明記したメッセージを返します。それ以外の機能は引き続き動作します。
クエリの例
接続したら、エージェントに自然言語で質問するだけです。
認証情報は不要です(検索、詳細、ランキング、シーズン、キャラクターなど):
"Search for the anime Frieren and show its score, studio and synopsis."
"What are the top 10 anime of all time?"
"What's airing this season? Sort by popularity."
"Recommend anime similar to Steins;Gate."
"What are people saying in reviews of Chainsaw Man?"
"Show the main characters and Japanese voice actors of Cowboy Bebop."
"When does the next episode of One Piece air?"
"Give me the top manga in the Romance genre."
"What's on the upcoming season's schedule?"
"Pick a random highly-rated anime for me."
MyAnimeList アカウントを使う場合(一度 login_mal を実行した後。詳しくは
MyAnimeList アカウントを接続するを参照):
"Show my MAL profile and watching stats."
"What's on my anime list that I marked as watching?"
"Add Frieren to my plan-to-watch list."
"Set Cowboy Bebop to completed with a score of 9."
"Bump my episode count for One Piece to 1095."
"Remove Bleach from my manga list."
ツール
| ツール | バックエンド | 認証 |
|---|---|---|
search_anime, search_manga | Tenrai | なし |
get_anime, get_manga | Tenrai | なし |
get_anime_characters, get_anime_recommendations, get_anime_reviews | Tenrai | なし |
get_manga_characters, get_manga_recommendations, get_manga_reviews | Tenrai | なし |
get_recent_anime_recommendations, get_recent_manga_recommendations | Tenrai | なし |
get_anime_episodes, get_anime_videos | Tenrai | なし |
get_anime_genres, get_manga_genres | Tenrai | なし |
search_characters, get_character | Tenrai | なし |
search_people, get_person, get_anime_staff | Tenrai | なし |
get_anime_statistics, get_manga_statistics | Tenrai | なし |
get_random_anime, get_random_manga, get_random_character, get_random_person | Tenrai | なし |
get_anime_news, get_manga_news, get_news | Tenrai | なし |
get_top_anime, get_top_manga | Tenrai | なし |
get_top_people, get_top_characters | Tenrai | なし |
get_seasonal_anime, get_upcoming_season, get_seasons_list, get_anime_schedule | Tenrai | なし |
get_producers, get_producer, get_magazines | Tenrai | なし |
get_interest_stacks, get_interest_stack, get_anime_interest_stacks, get_manga_interest_stacks | Tenrai | なし |
get_my_user_info, get_my_anime_list, get_my_manga_list | MAL | トークン |
update_my_anime_status, update_my_manga_status | MAL | トークン |
delete_my_anime_list_item, delete_my_manga_list_item | MAL | トークン |
login_mal, submit_mal_redirect | MAL | ログイン |
token = MyAnimeList へのログインが必要です(login_mal を一度実行してください)。プロンプト:
recommend_similar、seasonal_overview、hidden_gems。recommend_similar のタイトルは任意です。省略すると、対象のアニメを尋ねます。プロンプト引数の入力補完に対応したクライアントでは、入力中にタイトル候補がリアルタイムで表示されます(3文字目から、ラテン文字以外のタイトルでは2文字目から)。
インストール
.mcpb バンドルとして(ワンクリックで導入、例:Claude Desktop)
mal-mcp.mcpb をダウンロードし、
(常に最新リリースです)、MCP クライアントで開きます。オプションの
MyAnimeList Client ID を入力するよう求められます。設定したら login_mal ツールを実行して、個人リスト用
ツールを有効にします(MyAnimeList アカウントを接続して個人リスト用ツールを使うを参照)。
空欄のままにすると、認証情報不要の読み取りツールのみを利用できます。
ソースから
git clone https://github.com/Grinv/mal-mcp
cd mal-mcp
npm ci
npm run build
これにより、単独で動作する dist/index.js が生成されます。クライアントからこのファイルを指定してください(下記を参照)。
MCP クライアントに接続する
クライアントの MCP 設定にサーバーを追加します(Claude Desktop/Code、Cursor、VS Code、
Cline、…)。最も簡単な方法は npx で、クローンもビルドも不要です。システムの Node で実行されるため、
Node は 22.18 以降である必要があります(node -v)。上記の .mcpb バンドルでは、代わりにクライアント内蔵の Node が使われます。
{
"mcpServers": {
"mal": {
"command": "npx",
"args": ["-y", "mal-mcp"],
"env": {
"MAL_CLIENT_ID": "..."
}
}
}
}
または、Claude Code CLI を使用します。
claude mcp add mal -e MAL_CLIENT_ID=... -- npx -y mal-mcp
ソースからビルドした場合は、"command": "npx", "args": ["-y", "mal-mcp"]
を "command": "node", "args": ["/absolute/path/to/mal-mcp/dist/index.js"] に置き換えてください。
env ブロックは任意です。認証情報不要の読み取り
ツール(検索、詳細、ランキングなど)のみを使う場合は省略してください。ログインするまで、個人リスト用ツールは明確な
エラーを返します。有効にするには、MAL_CLIENT_ID を設定し、login_mal ツールを一度実行します(ブラウザーで一度だけ認証します。トークンはその後保存され、自動的に更新されます)。サーバーは .env ファイルを読み込まないため、
この env ブロック(またはシェル環境)を通じて設定を渡してください。ログイン手順の全体については
docs/auth.mdを、利用可能なクライアントについては
docs/clients.mdを参照してください。
MyAnimeList アカウントを接続する(個人リスト用ツール向け)
検索/閲覧ツールはセットアップ不要で使えます。個人リスト用ツール
(get_my_*、update_my_*、delete_my_*)を使うには、アカウントを一度認証してください。
所要時間は約2分です。クライアントシークレットは不要です。mal-mcp は最新の
パブリッククライアントフロー(PKCE)を使用しているため、必要なのはクライアント ID だけです。
ステップ 1:MyAnimeList アプリを登録する(1分)。
- https://myanimelist.net/apiconfig にアクセスし、Create ID をクリックします。
- App Type:
otherを選択します。(webではありません。このタイプでは、このサーバーが使用しないクライアントシークレットが必須になります。) - App Redirect URL: 次の値をそのまま入力します。
(お使いのマシンでポート 8080 がすでに使用されている場合は、ここで別のポートを選び、http://localhost:8080/callbackMAL_OAUTH_PORTに同じ番号を設定してください。設定を参照してください。) - 残りの必須項目に適切な値を入力し、利用規約に同意して、Submit をクリックします。
- 新しく作成したアプリを開き、Client ID をコピーします。
ステップ 2:クライアント ID をサーバーに設定する。
MCP クライアントの設定に追加するか、Claude Desktop のインストールフォームに貼り付けてください。 ここで必要なのはこれだけです。
"env": { "MAL_CLIENT_ID": "paste-your-client-id-here" }
値が反映されるように、サーバー/クライアントを再起動します。
ステップ 3:ログインする(ワンクリック)。
アシスタントで login_mal ツールを実行します(または 「MyAnimeList にログインして」 と伝えます)。
リンクが返されます。リンクを開き、MAL にサインインして、Allow をクリックします。
- ローカルで実行している場合(Claude Desktop、または自分のマシン上の Claude Code):
Allow をクリックすると、ログインが自動的に完了します。
「自分の MAL プロフィールを表示して」(
get_my_user_info)と伝えて確認してください。 - リモート/SSH/ヘッドレスホストで実行している場合: Allow をクリックすると、ブラウザーに読み込みできないページが表示されます。これは想定どおりです。ブラウザーのアドレスバーに表示されている完全なアドレス(
?code=…を含む)をコピーし、submit_mal_redirectツールに渡して完了します。
これで完了です。トークンはローカル(~/.config/mal-mcp/tokens.json、0600)に保存され、以後は自動的に更新されるため、再度ログインする必要はありません。
対話操作を省略したい場合は? 代わりに
MAL_REFRESH_TOKEN(MAL_CLIENT_IDと併用)または単独のMAL_ACCESS_TOKENを事前に設定できます。手動で取得する方法は docs/auth.md を参照してください。
設定
すべての設定は環境変数で行い、いずれも省略可能です。認証情報がなくても読み取りツールは引き続き使えます。
個人リスト用ツールを使うには、MAL_CLIENT_ID を設定して login_mal ツールを一度実行してください。
アクセストークンはその後、自動的に取得・更新されます。(mal-mcp はパブリック PKCE クライアントのため、クライアントシークレットは不要です。)
| 変数 | 用途 |
|---|---|
MAL_CLIENT_ID | MyAnimeList のクライアント ID です。取得方法はMyAnimeList アカウントを接続するを参照してください(無料、約2分、コーディング不要)。 |
MAL_REFRESH_TOKEN | 上級者向け、任意。 トークンを直接事前設定することで、対話式の login_mal 手順を省略できます。ほとんどの方には不要です。必要な場合は docs/auth.md を参照してください。 |
MAL_ACCESS_TOKEN | 上級者向け、任意。 更新なしで約30日間使える単独のトークンです。docs/auth.md を参照してください。 |
調整(通常は不要です)
デフォルト値は適切に設定されています。タイミングを変更したい場合、上流のベース URL を変更したい場合、またはサーバーがログを記録する場所やトークンを保存する場所・方法を上書きしたい場合にのみ変更してください。
| 変数 | 用途 |
|---|---|
MAL_TOKEN_STORE | ログイントークンをディスク上に保存する場所を上書きします(デフォルト:OS の設定フォルダー)。 |
MAL_OAUTH_PORT | お使いのマシンでポート 8080 がすでに使用されている場合にのみ必要です。アカウントの接続手順のステップ 1 を参照してください。 |
LOG_LEVEL | サーバーが記録するログの詳細度です:debug | info | warn | error | silent(デフォルトは info)。ログは stderr のみに出力されます。MCP レベルのログ機能はないため、クライアントは logging/setLevel を通じてログを取得したり、フィルターしたりできません。サーバープロセスの stderr を直接確認してください。 |
TENRAI_MIN_INTERVAL_MS | Tenrai の呼び出し間の最小間隔です(デフォルトは 300)。これに加えて、クライアントは Tenrai が公開している 4 回/秒 および 120 回/分の上限を適用します。すべてのクライアント側のスロットリングを無効にするには、0 を設定してください。 |
CACHE_TTL_MS | メモリ内読み取りキャッシュの TTL です(デフォルトは 300000 = 5 分)。 |
HTTP_TIMEOUT_MS, HTTP_RETRIES | リクエストごとのタイムアウト(デフォルトは 15000)と、一時的な障害に対する再試行回数(デフォルトは 2)です。 |
TENRAI_BASE_URL, MAL_BASE_URL, MAL_OAUTH_BASE_URL | 上流のベース URL を上書きします。 |
これらの値は、MCP クライアント設定の env ブロックで指定してください(サーバーは .env ファイルを読み込みません)。認証情報の取得方法については docs/auth.md を、クライアント設定の記述例については docs/clients.md を参照してください。
NSFW コンテンツ
NSFW(成人向け)の結果は、デフォルトではフィルタリングされません。サーバーは上流 API が返す内容をそのまま返します。ほとんどの読み取りツールでは、次の 2 段階のフィルターを使用できます。
sfw: true:成人向け/露骨な表現を含む評価のエントリー(R+ Mild Nudity 以上)を除外します。sfw_strict: true:さらに、sfwだけでは除外されない、それ以外は一般向けで安全な評価の作品も含め、Ecchi ジャンルのタグが付いたものをすべて除外します(例:No Game No Life、Kill la Kill)。
リスト/検索ツール(search_anime、search_manga、get_seasonal_anime、
get_upcoming_season、get_anime_schedule、get_top_anime、get_top_manga、
get_random_anime、get_random_manga、get_recent_anime_recommendations、
get_recent_manga_recommendations)では、返されるエントリーがフィルタリングされます。ID による検索(get_anime、get_manga、get_anime_recommendations、
get_manga_recommendations、get_character、get_person、get_anime_news、
get_manga_news)では、指定したアイテム自体は常に返されます。その代わり、アイテム内のネストされたリスト(例:アニメのrelations、人物のアニメ/マンガ出演履歴)から NSFW エントリーが除外されます。ただし、2 つのニュースツールでは、NSFW 評価のアニメ/マンガの場合、結果全体が空になることがあります。get_top_people/get_top_charactersにはこのようなフィルターはありません。人物/キャラクターはアニメ/マンガのように個別にコンテンツ評価されないためです。
search_animeとget_top_anime/get_seasonal_anime/get_upcoming_seasonでは、より細かく制御するためのratingフィルターも使用できます。成人向けコンテンツを一律に除外するのではなく、MAL の特定のコンテンツ評価(例:pg13、r17)を 1 つ以上直接指定できます。
開発
npm run build # type-check + bundle to dist/
npm test # node:test suite (mocked, offline)
npm run test:coverage
npm run lint
npm run format
npm run check:api # live health-check of upstream endpoints
npm run inspector # run under the MCP Inspector
実行には Node ≥ 22.18 が必要です。コントリビューター/エージェント向けのガイダンスについては、 AGENTS.mdを参照してください。
更新
新しいバージョンの通知を受け取るには、GitHub でWatch → Releasesをクリックしてください。
.mcpbバンドル:リリースページから新しいmal-mcp.mcpbをダウンロードし、クライアントに再インストールしてください(古いバージョンは置き換えられます)。- ソースから:
git pull && npm ci && npm run build。 - **npx(npm publish 後):**バージョンを固定していない
npx -y mal-mcpは、次回実行時に最新バージョンを取得します。バージョンを固定している場合は、指定を更新してください。
各リリースでの変更内容については、CHANGELOGを参照してください。
クレジットと利用規約
これは非公式プロジェクトであり、MyAnimeList とは提携しておらず、同社から承認も受けていません。読み取りデータは、無料の非公式 MAL API であるTenraiから提供されます。レート制限を遵守してください。個人リストの操作には、ご自身のアカウントとトークンを使って、公式の MyAnimeList APIを使用します。利用には MyAnimeList 利用規約が適用されます。
プライバシーポリシー
mal-mcpはお使いのマシン上でローカルに動作し、独自のテレメトリーはありません。取り扱うデータ(個人リストツールが実際の MyAnimeList アカウントから読み取り、変更できる内容を含む)、Tenrai/MyAnimeList に送信するデータ、ディスクに保存するもの(ある場合)について詳しくは、PRIVACY.mdを参照してください。
セキュリティ
読み取り/書き込みツールの違い、トークンの保存、認証情報の秘匿化、脆弱性の報告方法については、SECURITY.mdを参照してください。
ライセンス
MIT © Grinv
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。