AniList MCP Server (Unofficial)
MCP server for the AniList GraphQL API — anime/manga search, details, and personal list management.
Connector by Grinv · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Claude Desktop, Cursor, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install connector/grinv-anilist-mcp-server
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 33 read · 13 write · 4 delete
- Secrets
- 3 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 50
Read from the source code; the running server may list different tools.
Read 33 · Look things up without changing anything.
get_activityget_anime_scheduleget_authorized_userget_characterget_full_user_infoget_genresget_mediaget_media_charactersget_media_relationsget_media_reviewsget_media_staffget_media_statistics
Show 21 more tools
get_media_tagsget_recommendationget_recommendations_for_mediaget_site_statisticsget_staffget_studioget_threadget_thread_commentsget_todays_birthdaysget_user_activityget_user_listget_user_profileget_user_recent_activityget_user_statssearch_activitysearch_charactersearch_mediasearch_staffsearch_studiosearch_threadsearch_user
Write 13 · Create, change, send or run things.
add_list_entryget_notificationslogin_anilistpost_message_activitypost_text_activitypost_threadpost_thread_commentsubmit_anilist_redirecttoggle_favouritetoggle_follow_userupdate_list_entriesupdate_list_entry
Show 1 more tools
update_user
Delete 4 · Delete, drop, revoke or wipe things.
delete_activitydelete_threaddelete_thread_commentremove_list_entry
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
ANILIST_ACCESS_TOKENANILIST_CLIENT_SECRETANILIST_TOKEN_STORE
Other settings (environment variables or headers).
ANILIST_CLIENT_IDANILIST_OAUTH_PORT
Network hosts it talks to 1
github.com· found in install command
Tools (50)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_list_entryAdd an entry to your AniList list[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 gua…
delete_activityDelete an activity postcan change or delete data[Requires login] Delete an activity post the authenticated user owns. This cannot be undone, and calling it again on an already-deleted id errors as not found rather than silently succeeding.
delete_threadDelete a forum threadcan change or delete data[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 as not found rather than silently succeeding.
delete_thread_commentDelete a comment on a forum threadcan change or delete data[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 as not found rather than silently succeeding.
get_activityGet an activity postread-onlyGet a single AniList activity post (list update, text post, or message) by its ID, including `replyCount`, `likeCount`, and `isLiked`.
get_anime_scheduleGet the anime airing scheduleread-onlyGet upcoming (or a specific title's) episode air times, soonest-airing first (confirmed live) — or, with `notYetAired: false`, already-aired ones newest first. Omit `mediaId` for the site-wide upcoming schedule, or pass it (from search_media/get_media) to get one title's next-episode air time. Set `airingAfter`/`airingBefore` for a date window instead (e.g. what airs this week, or what aired yesterday). Anime only — manga has no airing schedule; a manga id (like any non-anime id) is rejected as not-found rather than silently returning an empty schedule, though that error reads the same as a no…
get_authorized_userGet the logged-in user's profileread-only[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 `options.notificationOptions`/`options.disabledListActivity` (confirmed live: full array replace, not merge by entry) or `mediaListOptions.animeList/mangaList.customLists` (confirmed live: same full-replace behavior) — read the current values here first and resend them in full alongside your changes. The sibling `advancedScoring` array carries a related but…
get_characterGet character detailsread-onlyGet a character's profile by AniList character ID: name, image, description, and the anime/manga they appear in (`media`, most popular first, with their `characterRole` — MAIN/SUPPORTING/BACKGROUND — in each). Use search_character first to resolve a name to its ID. `media` is paginated (`page`/`perPage`, max 25): a long-running franchise character can appear in far more titles than one page holds, so check `media.pageInfo.hasNextPage` before treating it as the full list. Narrow it with `type` (anime or manga only) or `onList`.
get_full_user_infoGet a user's complete profile and statsread-onlyGet 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 r…
get_genresGet genresread-onlyList 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_mediaGet anime/manga detailsread-onlyGet information about one or more anime or manga by their AniList ID(s). At the default `format: "full"` that means the whole card: title, format, status, episode/chapter/volume count, genres, score, synopsis, dates, and `rankings` — AniList's own ranking badges (e.g. "#134 highest rated all time", "#11 highest rated 2024"), one entry per rated/popular ranking window the title currently appears in. Also returns `nextAiringEpisode` (for currently-releasing anime), `externalLinks` (official sites, streaming platforms), and — [requires login] — `mediaListEntry`, the authenticated user's own list …
get_media_charactersGet an anime/manga's charactersread-onlyList an anime/manga's characters with their role (MAIN/SUPPORTING/BACKGROUND) and, for anime, their voice actors. Use search_media first to resolve a title to its AniList ID. Grouped by role — MAIN first, then SUPPORTING, then BACKGROUND (confirmed live) — and in AniList's own relevance order within each. Voice actors come back in every dub language unless you set `voiceActorLanguage`; set `role` to list only one role (e.g. just the MAIN cast).
get_media_relationsGet a title's related mediaread-onlyGet the anime/manga related to a given title, each with its `relationType`: PREQUEL, SEQUEL, PARENT, SIDE_STORY, SPIN_OFF, ALTERNATIVE, SUMMARY, CHARACTER, ADAPTATION (this title adapted into another format), SOURCE (the material this title was adapted from), COMPILATION, CONTAINS, SAME_UNIVERSE or OTHER. Use search_media first to resolve a title to its AniList ID.
get_media_reviewsGet an anime/manga's reviewsread-onlyList user-written reviews for an anime or manga, most-helpful-voted first (confirmed live: ordered by `rating`, not `score` — see those fields' own descriptions). Always includes `summary` (a short excerpt); set `includeBody` to also fetch each review's full text (can be long — leave it off unless you actually need the full text). Use search_media first to resolve a title to its AniList ID.
get_media_staffGet an anime/manga's production staffread-onlyList 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).
Show 35 more tools
get_media_statisticsGet an anime/manga's score/status distributionread-onlyGet 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_tagsGet media tagsread-onlyList 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 `page`/`perPage` rather than expecting them all in one response. Use this to look up a tag's exact name before passing it to search_media's `tag_in` — tag names are case-sensitive, and an unrecognized name doesn't error, it just silently matches nothing (confirmed live).
get_notificationsGet your AniList notifications[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 `id`, `type` and a human-readable `context`/`contexts` string; the rest of the fields depend on `type` (e.g. an AIRING item includes `media`/`episode`, a FOLLOWING item includes `user`, an ACTIVITY_MESSAGE item includes `message.message` — the actual DM text is nested one level inside `message`).
get_recommendationGet a recommendation by IDread-onlyGet 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 `rating`/`userRating` (e.g. after voting on it directly on anilist.co — this server has no tool to cast that vote itself) without re-paginating the whole list. Use get_recommendations_for_media instead to discover recommendation IDs for a title in the first place, or to browse/list them. Confirmed live (raw GraphQL, independent of this server): this is an AniList-side inconsistency, not a client bug — a majority of…
get_recommendations_for_mediaGet recommendations for a titleread-onlyList 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 `mediaRecommendation.mediaListEntry` (requires login) shows whether it's already on your own list — set `excludeInList: true` to drop those from the fetched page instead of checking each one yourself (a local post-fetch filter: AniList's own `onList` filter applies to the source title, not the recommended one).
get_site_statisticsGet AniList site statisticsread-onlyGet 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 `page`/`perPage` to go further back. Confirmed live (bypassing this tool's own 25 cap): AniList's SiteStatistics field silently caps `perPage` at 25 itself, so this tool's own limit doesn't lose you anything.
get_staffGet staff member detailsread-onlyGet a staff member's profile by AniList staff ID: name, image, occupations, description, and the anime/manga they hold production credits on (`staffMedia`, most popular first, with their `staffRole` — e.g. Director, Character Design, Theme Song Performance — in each). Use search_staff first to resolve a name to its ID. Voice-acting roles are NOT part of `staffMedia` (confirmed live: Kana Hanazawa's lists only her theme/insert song credits) — for a voice actor, pass `credits: "voice"` to get `characterMedia` instead: each title with the character(s) voiced and their `characterRole`. Either list…
get_studioGet studioread-onlyGet a studio's profile (name, whether it's an animation studio) and the titles it's credited on (`media`, most popular first), by AniList studio ID or by name. `media` is paginated (`page`/`perPage`, max 25) — check `media.pageInfo.hasNextPage` before treating it as the studio's full catalog. By default it mixes titles the studio animated with ones it's only credited on (e.g. as a producer); set `isMain` to split them. Confirmed live: `name` already does AniList's own fuzzy search (same mechanism as search_studio), so a partial name (e.g. "Kyoto Anim") resolves directly — reach for search_stud…
get_threadGet a forum threadread-onlyGet an AniList forum thread's title, body and metadata (including `replyCount`, `viewCount`, `likeCount`, `isLiked`) by its ID.
get_thread_commentsGet comments on a forum threadread-onlyList top-level comments posted on an AniList forum thread, by the thread's ID. Replies (posted via post_thread_comment's `parentCommentId`) are nested under their parent's `childComments` rather than appearing as separate entries in this list.
get_todays_birthdaysGet today's birthday characters or staffread-onlyList AniList characters or staff members whose birthday (month/day) is today, most favourited first. Paginated — a single day can have well over a thousand entries, so check `hasNextPage` before treating a page as the full list. 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' `media`/`staffMedia` filmography, nor each entry's bio (`description`) unless you set `includeDescription` — call get_character/get_staff by ID for an entry's full roles/works and bio, don't read a m…
get_user_activityGet a user's activity feedread-onlyList recent AniList activity posts from a specific user, newest first — by default every activity type (list updates, text posts, and message activity they received). Narrow it server-side with `type` and/or a `createdAfter`/`createdBefore` window rather than paging through everything and discarding. 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 to browse without pinning to one user. Use get_user_recent_activity instead if you just want…
get_user_listGet a user's anime or manga listread-onlyGet a user's AniList anime or manga list. Returns a compact table of one row per entry by default (`format: "compact"`) — entry id, media id, MAL id, status, score, progress and title, which is what a sync, comparison or pick-something-to-watch task needs; switch to `format: "full"` only when you actually need dates, notes, custom lists, advanced scores or the status/custom-list grouping, since that response is roughly ten times larger per entry. Filter server-side with `statuses` rather than fetching everything and discarding — asking for just CURRENT costs a fraction of a whole-list read. Pa…
get_user_profileGet a user's profileread-onlyGet 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_recent_activityGet a user's most recent activityread-onlyGet 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_user_statsGet a user's statisticsread-onlyGet 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_pr…
login_anilistLog in to AniListAuthorize 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 `http://localhost:8082/callback` (the default; override the port via ANILIST_OAUTH_PORT if 8082 is taken — it must match exactly what you register), and set ANILIST_CLIENT_ID + ANILIST_CLIENT_SECRET in the server env. Calling this returns an authorization URL: open it, log in, and click Approve. If your browser genuinely runs on the same machine as this server, login then completes automatically; otherwise copy the URL you la…
post_message_activityPost a message activity[Requires login] Post a new message-style activity to another AniList user's profile, or update an existing one by passing its `id`. Despite the name, this is NOT a private DM — like post_text_activity, it's publicly visible on both users' activity feeds/profiles to anyone who can view them. This is a limitation of this tool, not AniList itself: AniList's underlying mutation does accept a `private` argument, but this tool doesn't expose it, so every message sent through it is public. Don't use it for anything the sender expects to stay confidential.
post_text_activityPost a text activity[Requires login] Post a new text-status update to the authenticated user's own AniList profile, or update an existing one by passing its `id`.
post_threadPost a forum thread[Requires login] Post a new forum thread to the authenticated user's own AniList account, or update an existing one by passing its `id`. Use search_thread first if you want to check whether a similar thread already exists before posting a new one. Note: this tool's own response doesn't include `categories`/`mediaCategories`/`isSticky`/`isLocked` — call get_thread with the returned `id` afterward to confirm whether a category/sticky/locked change actually applied, especially since sticky/locked can silently no-op and categories/mediaCategories can silently drop existing values (see those fields…
post_thread_commentPost a comment on a forum thread[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 `id`.
remove_list_entryRemove an entry from your AniList listcan change or delete data[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 as not found rather than silently succeeding.
search_activitySearch activity feedread-onlySearch/browse AniList's activity feed (list updates, text posts, messages), optionally filtered to one user or — with `isFollowing` [Requires login] — to your following feed, to one or more activity types, and/or to a creation-time window. Each result already includes its full content (text/message/status, `replyCount`/`likeCount`/`isLiked`, the posting user, and — for list activity — the media) — no follow-up get_activity call needed unless you need to re-check one specific result's `replyCount`/`likeCount`/`isLiked` later (e.g. after liking it).
search_characterSearch charactersread-onlySearch AniList for characters by name. Returns AniList IDs to use with get_character. Each result's bio (`description`) is omitted unless you set `includeDescription`.
search_mediaSearch anime/mangaread-onlySearch AniList for anime or manga by title and/or filters (genre, tag, format, status, season/year, country, length — most with an exclusion variant), or browse term-less by ranking (top-rated, most popular, trending — see the `sort` parameter) when you don't have a title to search for. Adult (NSFW) results are included unless you set `sfw: true` (or `isAdult: false`); `isAdult: true` returns adult titles only. Returns AniList IDs to use with get_media and other ID-based tools.
search_staffSearch staffread-onlySearch AniList for staff members by name. Returns AniList IDs to use with get_staff. Each result's bio (`description`) is omitted unless you set `includeDescription`.
search_studioSearch studiosread-onlySearch/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 `name` param already does this same fuzzy search directly and resolves a partial name on its own. Returns AniList IDs to use with get_studio.
search_threadSearch forum threadsread-onlySearch/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_userSearch usersread-onlySearch 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.
submit_anilist_redirectComplete AniList login with a pasted redirect URLComplete 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. Pass the whole URL, not just the code: its `state` is checked against the login attempt, so a bare code or a URL from another login is rejected. Fails if no login is in progress (e.g. the server restarted since login_anilist) — run login_anilist again.
toggle_favouriteFavourite/unfavourite an anime, manga, character, staff member, or studio[Requires login] Toggle an anime, manga, character, staff member, or studio in the authenticated user's AniList favourites. Calling it again on the same `kind`+`id` un-favourites it. Read `isFavourite` for the outcome: true = now favourited, false = now removed, null = can't tell (the list runs past the first 50 returned, and a newly added favourite goes to its end). `favourites` holds the first page (up to 50, id-only) of the toggled kind, under its key (anime/manga/characters/staff/studios). Resolve `id` first via search_media/get_media (kind: ANIME/MANGA), search_character/get_character, se…
toggle_follow_userFollow/unfollow a user[Requires login] Toggle following another AniList user from the authenticated user's account. Calling it again on the same user unfollows them.
update_list_entriesUpdate many entries on your AniList list at once[Requires login] Apply ONE set of values to many entries on the authenticated user's own AniList list in a single request — e.g. mark thirty titles COMPLETED, or set the same score on a batch. Use this instead of calling update_list_entry in a loop whenever the entries share the values you're writing; use update_list_entry when each entry needs DIFFERENT values (this tool cannot vary them per entry), or when you need to set `customLists`/`advancedScores`, which this tool deliberately doesn't accept. Takes list-ENTRY ids (not media ids) — get them from get_user_list. The whole call is all-or-no…
update_list_entryUpdate an entry on your AniList list[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. Updating MANY entries to the SAME values? Use update_list_entries instead — one request rather than one per entry. The response echoes what AniList actually stored, so check it rather than assuming the write landed verbatim. It includes `customLists`/`advancedScores` only when you set them — those are the fields AniList zeroes/replaces rather than merges; otherwise t…
update_userUpdate your AniList account settings[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 `notificationOptions`/`disabledListActivity` below for two confirmed exceptions, PLUS `animeListOptions`/`mangaListOptions`'s nested `customLists` — a third: that one field's ARRAY VALUE is a full replace even though its sibling fields and the other list type merge normally).
Compare and alternatives
Featured in
Signals
- Stars
- 1
- Forks
- 1
- Open issues
- 0
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.Grinv/anilist-mcp-server- Version
- 0.11.0
- Auth
- API key
- Packages
- npm anilist-mcp-servermcpb https://github.com/Grinv/anilist-mcp-server/releases/download/v0.11.0/anilist-mcp-server.mcpb
- License
- MIT
- Repository
- github.com/Grinv/anilist-mcp-server
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from Grinv
- 0.634score
Steam MCP Server
Grinv
Steam store/game data (no key) plus player profiles, libraries and achievements (Steam Web API).
ConnectorAFreshness: ALocalRead-only★ 5Claude Code +5 - 0.625score
MAL MCP Server
Grinv
MyAnimeList MCP server: Tenrai-powered reads plus official MAL personal-list management.
ConnectorAFreshness: ALocal★ 3Claude Code +5 - 0.624score
TMDB MCP Server
Grinv
MCP server for The Movie Database (TMDB) with IMDb/Rotten Tomatoes/Metacritic ratings via OMDb.
ConnectorAFreshness: ALocalRead-only★ 5Claude Code +5
Cite this page
AniList MCP Server (Unofficial). Agent Mart. https://agentmart.dev/connectors/grinv-anilist-mcp-server (last updated 2026-10-24)