AniList MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ANILIST_CLIENT_ID | No | Optional. From an app registered at anilist.co/settings/developer — needed to use login_anilist. | |
| ANILIST_OAUTH_PORT | No | Optional. Localhost port for the login_anilist callback (default 8082). | |
| ANILIST_TOKEN_STORE | No | Optional. Overrides where the AniList access token is persisted (defaults under the OS config dir). | |
| ANILIST_ACCESS_TOKEN | No | Optional. A pre-obtained AniList access token, as an alternative to running login_anilist. | |
| ANILIST_CLIENT_SECRET | No | Optional. Paired with the Client ID above — needed to use login_anilist. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_genresA | List every genre name AniList uses to tag anime/manga (e.g. Action, Comedy, Slice of Life). Call this before filtering search_media by genre, so you pass a name AniList actually recognizes. |
| get_media_tagsA | List every descriptive tag AniList uses on anime/manga (finer-grained than genres, e.g. 'Time Skip', 'Tragedy', 'Reincarnation'), with category and adult-content flag. There are ~425 tags total, so results are paginated — use |
| get_site_statisticsA | Get AniList's own site-wide statistics (new users/anime/manga daily counts), newest first. Useful for questions about AniList's growth/activity, not for anime data. Defaults to the last 7 days; use |
| get_studioA | Get a studio's profile (name, whether it's an animation studio) and its top 10 most popular produced titles (a fixed cap, not paginated — AniList's studio field exposes no more via this lookup), by AniList studio ID or by name. Confirmed live: |
| get_activityA | Get a single AniList activity post (list update, text post, or message) by its ID, including |
| get_user_activityA | List recent AniList activity posts from a specific user — every activity type (list updates, text posts, and message activity they received), the underlying query applies no type filter of its own. Accepts an exact AniList username directly (it's resolved to an id with one extra internal lookup) — no need to call search_user first unless you only have a partial/fuzzy name. Use search_activity instead if you want to restrict to one activity type (TEXT/ANIME_LIST/MANGA_LIST/MEDIA_LIST/MESSAGE) or browse without pinning to one user. Use get_user_recent_activity instead if you just want a quick, fixed-size (5-item) recent snapshot without paginating. |
| post_text_activityA | [Requires login] Post a new text-status update to the authenticated user's own AniList profile, or update an existing one by passing its |
| post_message_activityA | [Requires login] Post a new message-style activity to another AniList user's profile, or update an existing one by passing its |
| delete_activityA | [Requires login] Delete an activity post the authenticated user owns. This cannot be undone, and calling it again on an already-deleted id errors rather than silently succeeding. |
| get_user_listA | Get a user's AniList anime or manga list, grouped by status/custom list, with each entry's status, score, progress and dates. Works for any public/unlisted user. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name. Paginated by |
| add_list_entryA | [Requires login] Add an anime/manga to the authenticated user's own AniList list. Use search_media first to resolve the title to its AniList media ID. Only set the fields you care about — everything else is left at AniList's defaults ONLY if this media isn't already on the list. AniList upserts by media ID: if an entry for it already exists (e.g. previously dropped, with its own score/notes/progress), calling this updates that entry in place instead — every field you don't set here keeps its previous value, not a default. Use get_user_list first to check for an existing entry if you need a guaranteed-fresh one. |
| update_list_entryA | [Requires login] Update an existing entry on the authenticated user's own AniList list by its list-entry ID (NOT the media ID — get it from get_user_list, or from add_list_entry's response). Only set the fields you want to change. |
| remove_list_entryA | [Requires login] Delete an entry from the authenticated user's own AniList list by its list-entry ID (NOT the media id) — get it from get_user_list. This cannot be undone, and calling it again on an already-deleted id errors rather than silently succeeding. |
| get_mediaA | Get detailed information about one or more anime or manga by their AniList ID(s): title, format, status, episode/chapter/volume count, genres, score, synopsis, dates, and |
| get_media_statisticsA | Get an anime/manga's watch/read-status counts (watching/completed/planning/etc.) and score distribution histogram across all AniList users. Use search_media first to resolve a title to its AniList ID. |
| get_media_charactersA | List an anime/manga's characters with their role (Main/Supporting/Background) and, for anime, Japanese voice actors. Use search_media first to resolve a title to its AniList ID. No explicit ordering is requested — don't assume results are grouped by role or sorted by popularity (unlike get_character/get_staff's reverse-direction lookup, which IS popularity-sorted); confirmed live, a Main-role character can appear well after several Supporting ones. |
| get_media_staffA | List an anime/manga's staff (director, writer, character designer, author, illustrator, etc.) with their role. Use search_media first to resolve a title to its AniList ID. No explicit ordering is requested — don't assume results are sorted by role or popularity (unlike get_staff's reverse-direction lookup, which IS popularity-sorted). |
| get_media_reviewsA | List user-written reviews for an anime or manga, most-helpful-voted first (confirmed live: ordered by |
| get_media_relationsA | Get the anime/manga related to a given title (prequels, sequels, side stories, adaptations, spin-offs) with the relation type. Use search_media first to resolve a title to its AniList ID. |
| get_anime_scheduleA | Get upcoming (or a specific title's) episode air times, soonest-airing first (confirmed live). Omit |
| toggle_favouriteA | [Requires login] Toggle an anime, manga, character, staff member, or studio in the authenticated user's AniList favourites. Calling it again on the same |
| get_characterA | Get a character's profile by AniList character ID: name, image, description, and the anime/manga they appear in ( |
| get_staffA | Get a staff member's profile by AniList staff ID: name, image, occupations, description, and the anime/manga they worked on ( |
| get_todays_birthdaysA | List AniList characters or staff members whose birthday (month/day) is today, up to 50 results (a fixed cap, not paginated — entries beyond 50 are silently omitted, not an error). Returns character-shaped or staff-shaped objects for kind: CHARACTER/STAFF respectively, but a lighter fetch than get_character/get_staff: it does NOT include those tools' |
| get_recommendationA | Get a single AniList recommendation pairing (media + the media users recommend alongside it) by its AniList recommendation ID — useful for re-checking one specific pairing's current |
| get_recommendations_for_mediaA | List anime/manga AniList users recommend as similar to a given title, ranked by rating (highest first). Use search_media first to resolve the title to its AniList ID. Each result's |
| search_mediaA | Search AniList for anime or manga by title and/or filters (genre, format, status, season/year), or browse term-less by ranking (top-rated, most popular, trending — see the |
| search_characterA | Search AniList for characters by name. Returns AniList IDs to use with get_character. |
| search_staffA | Search AniList for staff members by name. Returns AniList IDs to use with get_staff. |
| search_studioA | Search/browse AniList's animation/production studios by name, when you want to see multiple candidates rather than take the closest match — get_studio's own |
| search_userA | Search AniList for users by username. Returns AniList user IDs to use with get_user_profile/get_full_user_info (profile), get_user_stats (statistics), get_user_list (their public list), or toggle_follow_user. |
| search_threadA | Search/browse AniList's forum threads by title/body text and/or restrict to one category. Returns AniList thread IDs (with title/category for context) to use with get_thread, get_thread_comments, post_thread, or post_thread_comment. |
| search_activityA | Search/browse AniList's activity feed (list updates, text posts, messages), optionally filtered to one user and/or one activity type. Each result already includes its full content (text/message/status, |
| get_threadA | Get an AniList forum thread's title, body and metadata (including |
| get_thread_commentsA | List top-level comments posted on an AniList forum thread, by the thread's ID. Replies (posted via post_thread_comment's |
| post_threadA | [Requires login] Post a new forum thread to the authenticated user's own AniList account, or update an existing one by passing its |
| post_thread_commentA | [Requires login] Post a new comment on an AniList forum thread from the authenticated user's account, or update an existing one by passing its |
| delete_threadA | [Requires login] Delete a forum thread the authenticated user owns, by its ID (from search_thread, get_thread, or the id returned by post_thread). This cannot be undone, and calling it again on an already-deleted id errors rather than silently succeeding. |
| delete_thread_commentA | [Requires login] Delete a comment the authenticated user owns, by its ID (from get_thread_comments or the id returned by post_thread_comment). This cannot be undone, and calling it again on an already-deleted id errors rather than silently succeeding. |
| get_user_profileA | Get an AniList user's public profile: name, about text, avatar, donator status — plus their account settings (title/name-language preferences, notification toggles, list display options). Confirmed live these settings are NOT viewer-gated, so they're included for any user, not just the authenticated caller. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name and need to look up the exact one. Need statistics too? Use get_full_user_info instead of also calling get_user_stats separately. |
| get_user_statsA | Get an AniList user's anime/manga statistics: counts, mean score, time watched, episodes/chapters/volumes consumed. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name. AniList's own stats aggregation can lag behind the account's real list — confirmed live, an account with real scored/progressed entries still read back all-zero statistics — so don't treat a zeroed result as 'this account has no list activity' without cross-checking get_user_list. Need the profile too? Use get_full_user_info instead of also calling get_user_profile separately. |
| get_full_user_infoA | Get an AniList user's profile AND statistics in a single call — use this instead of calling get_user_profile and get_user_stats separately. Like get_user_profile, this also returns the target's account settings (notifications, list display, etc.) regardless of who's authenticated — AniList doesn't viewer-gate those fields. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name. Its embedded statistics carry the same staleness caveat as get_user_stats: AniList's own aggregation can lag and read all-zero even for an account with real list entries. |
| get_user_recent_activityA | Get an AniList user's 5 most recent activity posts, with full content (not just IDs) — every activity type (list updates, text posts, and message activity they received; the underlying query applies no type filter of its own), a fixed count, not configurable; use get_user_activity for a paginated full feed instead. Accepts an exact AniList username directly — no need to call search_user first unless you only have a partial/fuzzy name (username resolution costs one extra internal lookup either way). |
| get_authorized_userA | [Requires login] Get the profile of the AniList account currently authorized via login_anilist/ANILIST_ACCESS_TOKEN — use this to confirm which account is connected. Also the authoritative source to fetch BEFORE an update_user call touching |
| toggle_follow_userA | [Requires login] Toggle following another AniList user from the authenticated user's account. Calling it again on the same user unfollows them. |
| update_userA | [Requires login] Update settings on the authenticated user's own AniList account (about text, preferred title language, adult-content visibility, score format, notification/messaging preferences, anime/manga list options). Only set the fields you want to change — most fields are a true partial update (see |
| get_notificationsA | [Requires login] Get the authenticated user's AniList notifications: new episodes airing, activity likes/replies/mentions, new followers, thread replies/likes, and media/staff/character data-submission updates. Every item has |
| login_anilistA | Authorize the personal-list and social tools with your AniList account (one-time). Prerequisite: register an app at anilist.co/settings/developer with Redirect URL set to |
| submit_anilist_redirectA | Complete a login started with login_anilist by submitting the URL your browser was redirected to after clicking Approve (the one containing ?code=...). Use this when login didn't complete automatically — e.g. the server runs on a remote/headless host. A bare code string is also accepted. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| recommend_similar | Plan a recommendation search for anime or manga similar to a given title, using AniList's own recommendation data rather than the model's own knowledge. |
| seasonal_overview | Summarize the notable anime airing in a given season (or the current one). |
| hidden_gems | Surface highly-rated anime or manga that aren't widely known — high average score, low popularity. |
| catch_up_activity | Summarize a user's recent AniList activity feed alongside their current in-progress anime AND manga lists. |
| check_notifications | [Requires login] Summarize the authenticated user's recent AniList notifications (airing episodes, activity likes/replies/mentions, new followers, thread activity). |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Grinv/anilist-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server