Skip to main content
Glama
ani-mcp
by gavxm

ani-mcp

npm version npm downloads CI License: MIT MCP Bundle

A smart MCP server for AniList that understands your anime and manga taste - not just raw API calls.

What makes this different

Most AniList integrations mirror the API 1:1. ani-mcp adds an intelligence layer on top:

  • Taste profiling - builds a model of your preferences from your completed list

  • Personalized picks - "what should I watch next?" based on your taste, mood, and seasonal lineup

  • Compatibility - compare taste between two users

  • Sequel alerts - find sequels airing this season for shows you've finished

  • Watch order - franchise chain traversal for long-running series

  • Session planning - "I have 90 minutes, what should I watch?" from your current list

  • Year in review - your watching/reading stats wrapped up

Plus the essentials: search, details, trending, seasonal browsing, list management, social features, and community recommendations. All search and browse tools support pagination for browsing beyond the first page of results.

Related MCP server: MAL User MCP Server

Try it in 30 seconds

No account needed. Works with any MCP-compatible client.

Claude Desktop

Add to your config file (Settings > Developer > Edit Config or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "anilist": {
      "command": "npx",
      "args": ["-y", "ani-mcp"]
    }
  }
}

Restart Claude Desktop after saving.

Alternatively, download ani-mcp.mcpb from the latest release and install via Settings > Extensions.

Claude Code

claude mcp add ani-mcp -- npx -y ani-mcp

Personalized features

Add your username for recommendations, taste profiling, and list management:

{
  "mcpServers": {
    "anilist": {
      "command": "npx",
      "args": ["-y", "ani-mcp"],
      "env": {
        "ANILIST_USERNAME": "your_username"
      }
    }
  }
}

For write operations (updating progress, scoring, list edits), also add ANILIST_TOKEN. See Environment Variables for details.

Environment Variables

Variable

Required

Description

ANILIST_USERNAME

No

Default username for list and stats tools. Can also pass per-call.

ANILIST_TOKEN

No

AniList OAuth token. Required for write operations and private lists.

ANILIST_TITLE_LANGUAGE

No

Title preference: english (default), romaji, or native.

ANILIST_SCORE_FORMAT

No

Override score display: POINT_100, POINT_10_DECIMAL, POINT_10, POINT_5, POINT_3.

ANILIST_NSFW

No

Set to true to include adult content in results. Default: false.

ANILIST_MOOD_CONFIG

No

JSON object to add or override mood keywords. See Mood config.

DEBUG

No

Set to true for debug logging to stderr.

MCP_TRANSPORT

No

Set to http for HTTP Stream transport. Default: stdio.

MCP_PORT

No

Port for HTTP transport. Default: 3000.

MCP_HOST

No

Host for HTTP transport. Default: localhost.

Tools

Search & Discovery

Tool

Description

anilist_search

Search anime/manga by title with genre, year, and format filters

anilist_details

Full details, relations, and recommendations for a title

anilist_seasonal

Browse a season's anime lineup

anilist_trending

What's trending on AniList right now

anilist_genres

Browse top titles in a genre with optional filters

anilist_genre_list

List all valid genres and content tags

anilist_recommendations

Community recommendations for a specific title

Lists & Stats

Tool

Description

anilist_list

A user's anime/manga list, filtered by status

anilist_lookup

Check if a specific title is on a user's list

anilist_stats

Watching/reading statistics, top genres, score distribution

Intelligence

Tool

Description

anilist_taste

Generate a taste profile from your completed list

anilist_pick

Personalized "what to watch next" from your backlog, seasonal lineup, or discovery pool

anilist_compare

Compare taste compatibility between two users

anilist_wrapped

Year-in-review summary

anilist_explain

"Why would I like this?" - score a title against your taste profile

anilist_similar

Find titles similar to a given anime or manga

anilist_sequels

Sequels airing this season for titles you've completed

anilist_watch_order

Viewing order for a franchise

anilist_session

Plan a viewing session within a time budget

anilist_mal_import

Import a MyAnimeList user's list and generate recommendations

anilist_kitsu_import

Import a Kitsu user's list and generate recommendations

Cards

Tool

Description

anilist_taste_card

Generate a shareable taste profile card as a PNG image

anilist_compat_card

Generate a compatibility card comparing two users as a PNG image

Info

Tool

Description

anilist_staff

Staff credits and voice actors for a title

anilist_staff_search

Search for a person by name and see all their works

anilist_studio_search

Search for a studio and see their productions

anilist_schedule

Airing schedule and next episode countdown

anilist_airing

Upcoming episodes for titles you're currently watching

anilist_characters

Search characters by name with appearances and VAs

anilist_whoami

Check authentication status and score format

Social

Tool

Description

anilist_profile

View a user's profile, bio, favourites, and stats

anilist_feed

Recent activity from a user's feed

anilist_reviews

Community reviews for a title

anilist_favourite

Toggle favourite on anime, manga, character, staff, or studio

anilist_activity

Post a text activity to your feed

anilist_group_pick

Find anime/manga for a group to watch together

anilist_shared_planning

Find overlap between two users' planning lists

anilist_follow_suggestions

Rank followed users by taste compatibility

anilist_react

Like or reply to an activity

Analytics

Tool

Description

anilist_calibration

Per-genre scoring bias vs community consensus

anilist_drops

Drop pattern analysis - genre/tag clusters and median drop point

anilist_evolution

How your taste shifted across 2-year time windows

anilist_completionist

Franchise completion tracking via relation graph

anilist_seasonal_stats

Per-season pick/finish/drop rates

anilist_pace

Estimated completion date for currently watching titles

Write (requires ANILIST_TOKEN)

Tool

Description

anilist_update_progress

Update episode or chapter progress

anilist_add_to_list

Add a title to your list with a status

anilist_rate

Score a title (0-10)

anilist_delete_from_list

Remove an entry from your list

anilist_undo

Undo the last write operation

anilist_unscored

List completed but unscored titles for batch scoring

anilist_batch_update

Bulk filter + action on list entries (dry-run default)

Resources

MCP resources provide context to your AI assistant without needing a tool call. Clients that support resources can automatically include this information in conversations.

Resource

Description

anilist://profile

Your AniList profile with bio, stats, and favourites

anilist://taste/{type}

Taste profile (genre weights, themes, scoring patterns) for ANIME or MANGA

anilist://list/{type}

Currently watching/reading entries with progress and scores

Prompts

Pre-built conversation starters that clients can offer as quick actions.

Prompt

Description

setup

Walk through connecting your AniList account step by step

seasonal_review

Review this season's anime against your taste profile

what_to_watch

Plan what to watch now with optional mood and time budget

roast_my_taste

Get a humorous roast of your anime taste

compare_us

Compare your taste with another user

year_in_review

Your anime/manga year in review

explain_title

Why would you like (or dislike) a specific title?

find_similar

Find titles similar to one you enjoyed

Examples

Here are some things you can ask your AI assistant once ani-mcp is connected:

"What should I watch next?" Uses anilist_pick to analyze your completed list, build a taste profile, and recommend titles from your Planning list ranked by how well they match your preferences.

"I want something dark and psychological" Uses anilist_pick with mood filtering to boost titles matching that vibe and penalize mismatches.

"What's good this season?" Uses anilist_pick with source: SEASONAL to rank currently airing anime against your taste profile.

"I have 90 minutes, what should I watch tonight?" Uses anilist_session to pick from your currently watching list and fill a time budget with the best-matching episodes.

"Any sequels airing for stuff I've finished?" Uses anilist_sequels to cross-reference your completed list with this season's lineup.

"What order do I watch Fate in?" Uses anilist_watch_order to traverse the franchise relation graph and produce a numbered viewing order.

"Compare my taste with username123" Uses anilist_compare to find shared titles, compute a compatibility score, and highlight biggest disagreements.

"Why would I like Vinland Saga?" Uses anilist_explain to score a title against your taste profile, breaking down genre affinity and theme alignment.

"Show me my anime year in review" Uses anilist_wrapped to summarize everything you watched in a given year.

Mood config

anilist_pick and anilist_session accept a freeform mood string. Built-in keywords include: dark, chill, hype, action, romantic, funny, brainy, sad, scary, epic, wholesome, intense, mystery, fantasy, scifi, trippy, nostalgic, artistic, competitive, cozy.

To add or override keywords, set ANILIST_MOOD_CONFIG as a JSON object:

{
  "ANILIST_MOOD_CONFIG": "{\"cozy\":{\"boost\":[\"Slice of Life\",\"Iyashikei\"],\"penalize\":[\"Horror\"]},\"mykeyword\":{\"boost\":[\"Romance\"],\"penalize\":[]}}"
}

Each key is a mood keyword mapping to { boost: string[], penalize: string[] } arrays of AniList genres and tags.

Privacy

See PRIVACY.md for details. In short: ani-mcp runs locally, sends requests only to the AniList API, stores nothing, and collects no analytics.

Docker

docker build -t ani-mcp .
docker run -e ANILIST_USERNAME=your_username ani-mcp

Runs on port 3000 with HTTP Stream transport by default.

Build from Source

git clone https://github.com/gavxm/ani-mcp.git
cd ani-mcp
npm install
npm run build
npm test

Support

Bug reports and feature requests: GitHub Issues

License

MIT

Available Tools

55 tools
anilist_activityA
Destructive

Post a text activity to your AniList feed. Use when the user wants to share a status update, thought, or message. Requires ANILIST_TOKEN.

Inputs: text (required).

anilist_add_to_listA
DestructiveIdempotent

Add an anime or manga to your list with a status. Use when the user wants to start watching, plan to watch, or mark a title as completed. Requires ANILIST_TOKEN. Returns status, optional score, and entry ID.

Inputs: mediaId (required), status (required), score.

anilist_airingA
Read-only

Show upcoming episodes for all anime you're currently watching. Use when the user asks what's airing soon, what episodes are coming up, or wants a watchlist calendar. Returns titles sorted by next airing time with episode number and countdown.

Inputs: username, limit.

anilist_batch_updateA
Destructive

Apply a bulk action to multiple list entries matching a filter. Use when the user wants to move all low-scored titles to Dropped, add all planning titles to current, or bulk-change statuses. Defaults to dry-run mode (preview only). Requires ANILIST_TOKEN.

Inputs: filter (required), action (required), username, type, +2 more.

anilist_calibrationA
Read-onlyIdempotent

Score calibration analysis showing how a user rates compared to community consensus. Use when the user asks if they score too high or low, which genres they're harshest or most generous on, or how their taste compares to mainstream. Returns overall bias, per-genre deviation, and scoring tendency.

Inputs: username, type.

anilist_charactersA
Read-only

Search for anime/manga characters by name. Use when the user asks about a specific character, wants to know which series a character appears in, or who voices them. Returns character appearances with roles and voice actors.

Inputs: query (required), limit, page.

anilist_compareA
Read-only

Compare taste profiles between two AniList users. Use when someone asks to compare their taste with another user. Returns compatibility %, shared favorites, biggest disagreements, genre divergences, and cross-recommendations.

Inputs: user1 (required), user2 (required), type.

anilist_compat_cardA
Read-only

Generate a shareable compatibility card image comparing two AniList users. Returns a PNG image showing compatibility %, genre comparison, shared favorites, and key differences. Use when someone wants a visual comparison of taste.

Inputs: user1 (required), user2 (required), type.

anilist_completionistA
Read-onlyIdempotent

Franchise completion tracker showing progress through series with sequels. Use when the user asks what franchises they've started but not finished, their completion rate, or what's left to watch in a series. Returns franchise groups with completed/total counts.

Inputs: username, type, limit.

anilist_delete_from_listA
DestructiveIdempotent

Remove an entry from your anime or manga list. Pass either a list entry ID or a media ID. Requires ANILIST_TOKEN.

Inputs: entryId, mediaId.

anilist_detailsA
Read-only

Get full details about a specific anime or manga. Use when the user asks about a specific title and wants synopsis, score, episodes, studios, related works, and recommendations. Accepts AniList ID (faster, exact) or title (fuzzy match with abbreviation support). Returns format, status, episodes/chapters, season, score, studios, source, genres, tags, synopsis, related works, and community recommendations.

Inputs: id, title, type.

anilist_dropsA
Read-onlyIdempotent

Drop pattern analysis from a user's dropped list. Use when the user asks why they drop shows, what patterns their drops follow, or which genres they abandon most. Returns drop rate by genre/tag, median episode at drop, and early drop percentage.

Inputs: username, type.

anilist_evolutionA
Read-onlyIdempotent

Genre evolution analysis showing how taste has shifted over time. Use when the user asks how their taste has changed, what they used to watch vs now, or wants a timeline of their preferences. Returns era-by-era genre rankings and shift descriptions.

Inputs: username, type.

anilist_explainA
Read-only

Score a specific title against a user's taste profile and explain the alignment. Use when the user asks "why would I like this?", "is this for me?", or wants to know how well a specific anime/manga matches their preferences. Returns match score, genre/theme affinity breakdown, mood fit, and existing list status.

Inputs: mediaId, title, username, type, +1 more.

anilist_exportA
Read-only

Export a user's anime or manga list as CSV or JSON for backup or migration. Use when the user wants to download, back up, or transfer their list data.

Inputs: username, type, status, format.

anilist_favouriteA
Destructive

Toggle favourite on an anime, manga, character, staff member, or studio. Calling again on the same entity removes it from favourites. Requires ANILIST_TOKEN.

Inputs: type (required), id (required).

anilist_feedB
Read-onlyIdempotent

Get recent activity from a user's AniList feed. Shows text posts and list updates (anime/manga status changes). Returns numbered entries with author, date, and content. Supports pagination and type filtering.

Inputs: username, type, limit, page.

anilist_follow_suggestionsA
Read-only

Find AniList users with similar taste from your following list. Ranks people you follow by taste compatibility to highlight your best matches. Requires ANILIST_TOKEN for following list access.

Inputs: username, type, limit.

anilist_genre_listA
Read-only

List all valid AniList genres and content tags. Use before genre-filtering tools to ensure valid genre names. Returns genres and content tags grouped by category with descriptions.

Inputs: includeAdultTags, filter, category.

anilist_genresA
Read-only

Browse top anime or manga in a specific genre. Use when the user asks for the best titles in a genre, e.g. "best romance anime" or "top thriller manga from 2023". Supports year, status, and format filters. Returns ranked list with title, score, and genres.

Inputs: genre (required), type, year, status, +5 more.

anilist_group_pickA
Read-only

Find anime or manga for a group to watch together. Finds titles on multiple users' planning lists (or highly rated by all). Use when friends want to pick something everyone will enjoy.

Inputs: users (required), type, source, limit.

anilist_kitsu_importA
Read-only

Import a Kitsu user's completed anime list and generate personalized recommendations based on their taste. No auth needed. Use when the user mentions their Kitsu account or wants recs from Kitsu history. Returns a taste profile summary and recommended titles from AniList.

Inputs: kitsuUsername (required), limit.

anilist_listA
Read-only

Get a user's anime or manga list, filtered by watching status. Use when the user asks about their list, what they're watching, what they've completed, or what's on their plan-to-watch. Supports custom lists via status CUSTOM. Returns entries with title, score, progress, status, updated date, and entry ID.

Inputs: username, type, status, customListName, +3 more.

anilist_lookupA
Read-only

Check if a specific title is on a user's list and show its status. Use when the user asks "is this on my list?", "have I seen this?", or wants to check their progress or score for a single title. Returns status, score, progress, and dates without fetching the full list.

Inputs: mediaId, title, username.

anilist_mal_importA
Read-only

Import a MyAnimeList user's completed anime list and generate personalized recommendations based on their taste. No MAL auth needed. Use when the user mentions their MAL account or wants recs from MAL history. Returns a taste profile summary and recommended titles from AniList.

Inputs: malUsername (required), limit.

anilist_paceA
Read-onlyIdempotent

Pace estimate for currently watching or reading titles. Use when the user asks how long it'll take to finish something, their watch rate, or wants a progress summary. Returns estimated completion date based on historical pace.

Inputs: username, mediaId, type.

anilist_pickA
Read-only

"What should I watch/read next?" Recommends from your Planning list based on your taste profile. Also works for backlog analysis - "which of my 200 Planning titles should I actually start?" Falls back to top-rated AniList titles if the Planning list is empty. Optionally filter by mood or max episodes. Returns ranked picks with match score, genre alignment, and mood fit.

Inputs: username, type, profileType, source, +6 more.

anilist_profileA
Read-onlyIdempotent

View a user's AniList profile including bio, stats, and favourites. Returns bio, anime/manga stats summary, top favourites by category, and account age.

Inputs: username.

anilist_rateA
DestructiveIdempotent

Score an anime or manga on your list. Use when the user wants to give a rating (0-10). Scores display in the user's preferred format (3/5/10/100-point). Use 0 to remove. Requires ANILIST_TOKEN.

Inputs: mediaId (required), score (required).

anilist_reactA

Like or reply to an AniList activity. Use when the user wants to interact with an activity from their feed. Requires ANILIST_TOKEN. LIKE toggles the like state.

Inputs: activityId (required), action (required), text.

anilist_recommendationsA
Read-only

Get community recommendations for a specific anime or manga. Use when the user asks for shows similar to a specific title, or says "I liked X, what else should I watch?" Returns titles ranked by recommendation count with format, score, and genres.

Inputs: id, title, type, limit.

anilist_reviewsA
Read-onlyIdempotent

Get community reviews for an anime or manga. Use when the user wants to see what others think about a title. Returns sentiment summary (positive/mixed/negative), individual review scores, summaries, and helpful ratios.

Inputs: id, title, type, sort, +2 more.

anilist_scheduleA
Read-only

Get the airing schedule for an anime. Use when the user asks when the next episode airs, or wants to see upcoming episode dates for a currently airing show. Returns next episode date/countdown and upcoming episode schedule.

Inputs: id, title.

anilist_seasonalA
Read-only

Browse anime airing in a given season. Use when the user asks what's airing this season, what aired in a past season, or wants to discover seasonal anime. Defaults to current season/year. Returns ranked list with title, format, score, genres, and episode count.

Inputs: season, year, sort, isAdult, +2 more.

anilist_seasonal_recap_cardA
Read-only

Generate a shareable seasonal recap card image for an AniList user. Returns a PNG image showing pick/finish/drop counts, hit rate, status breakdown, and top-scored titles from a season.

Inputs: username, season, year.

anilist_seasonal_statsA
Read-onlyIdempotent

Seasonal pick-up and completion rates. Use when the user asks about their seasonal watching habits, how many shows they finish vs drop each season, or their hit rate. Returns per-season breakdown of picked, finished, dropped, and ongoing counts.

Inputs: username, season, year, history.

anilist_sequelsA
Read-only

Find sequels airing this season for titles you've completed. Use when the user asks what sequels are coming, or wants to know if any currently airing anime continue shows they've already watched. Returns matches with the completed prequel and the airing sequel.

Inputs: username, season, year.

anilist_sessionA
Read-only

Plan a watching or reading session within a time budget. Picks from your currently-watching list, scored by taste match and mood. Returns a session plan with titles, episodes to watch, and estimated time.

Inputs: minutes (required), username, type, mood.

anilist_shared_planningA
Read-only

Find titles on both users' planning lists. Use when two users want to see what they're both planning to watch or read. Shows overlap and unique titles.

Inputs: user1 (required), user2 (required), type, limit.

anilist_similarA
Read-only

Find titles similar to a specific anime or manga. Use when the user asks for shows like a specific title, or wants content-based recommendations without needing a user profile. Returns ranked results with similarity %, shared genres, and community rec strength.

Inputs: mediaId, title, type, limit.

anilist_staffA
Read-only

Get staff and voice actor credits for an anime or manga. Use when the user asks who directed, wrote, or voiced characters in a title. Returns production staff with roles and characters with voice actors. Defaults to Japanese VAs but supports other languages.

Inputs: id, title, type, language.

anilist_statsA
Read-only

Get a user's watching/reading statistics. Use when the user asks about their overall stats, how much anime they've watched, their average score, top genres, or score distribution. Returns title count, mean score, episodes/chapters, top genres, score distribution chart, and format breakdown.

Inputs: username.

anilist_tasteA
Read-only

Generate a taste profile summary from a user's completed list. Use when the user asks about their anime/manga preferences, what genres they like, or how they tend to score. Returns genre weights, top themes, scoring patterns with distribution chart, and format split.

Inputs: username, type.

anilist_taste_cardA
Read-only

Generate a shareable taste profile card image for an AniList user. Returns a PNG image showing top genres, themes, score distribution, and format breakdown. Use when someone wants a visual summary of their anime taste.

Inputs: username, type.

anilist_undoA
Destructive

Undo the last write operation (update progress, add to list, rate, delete, or batch update). Restores the previous state of the affected list entry. Requires ANILIST_TOKEN.

Inputs: no named parameters.

anilist_unscoredA
Read-onlyIdempotent

List completed anime or manga that haven't been scored yet. Use when the user wants to catch up on scoring, find unrated titles, or do a batch scoring session. Returns titles sorted by most recently completed.

Inputs: username, type, limit.

anilist_update_progressA
DestructiveIdempotent

Update your episode or chapter progress for an anime or manga. Use when the user says they watched an episode, finished a chapter, or wants to record progress. Requires ANILIST_TOKEN. Returns updated status, progress count, and entry ID.

Inputs: mediaId (required), progress (required), volumeProgress, status.

anilist_watch_orderA
Read-only

Suggested viewing order for a franchise. Use when the user asks what order to watch a series, how to start a long franchise, or wants to know the chronological release order of sequels and prequels. Accepts any title in the franchise and traces the full chain. Returns a numbered list from first to last.

Inputs: id, title, includeSpecials.

anilist_whoamiA
Read-only

Check which AniList account is authenticated and verify the token works. Use when the user wants to confirm their setup or debug auth issues.

Inputs: no named parameters.

anilist_wrappedA
Read-only

Year-in-review summary for a user. Use when the user asks about their anime/manga year, what they watched/read in a given year, or wants a recap. Defaults to the current year. Returns title count, average score, highest rated, most controversial, genre breakdown, and consumption stats.

Inputs: username, year, type.

anilist_wrapped_cardA
Read-only

Generate a shareable year-in-review card image for an AniList user. Returns a PNG image showing titles completed, top genres, score distribution, highlights, and consumption stats. Use when someone wants a visual recap of their year.

Inputs: username, year, type.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 55 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose, with detailed descriptions that prevent confusion. Even similar-sounding tools like anilist_pick, anilist_explain, and anilist_session are well-differentiated by their specific use cases.

    Naming Consistency5/5

    All tools follow a consistent 'anilist_' prefix with snake_case names that clearly describe the action, e.g., anilist_search, anilist_add_to_list, anilist_delete_from_list. No mixing of conventions.

    Tool Count3/5

    55 tools is on the high side for a single server, covering many specialized actions like card generation and analysis. While each tool serves a valid purpose, the count could be reduced by consolidating some card-generation tools without losing clarity.

    Completeness5/5

    The server covers an extensive range of AniList functionality: search, list management, user profiles, schedules, statistics, social features, recommendations, and even imports from other services. The inclusion of an undo operation and various analysis tools makes the surface very complete.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server that provides access to MyAnimeList's API for anime and manga data. It enables users to search, view rankings, manage their personal lists, and get recommendations through Claude and other MCP clients.
      86 npm
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Exposes a user's MyAnimeList data (watch list, scores, statistics) as MCP tools for AI assistants to analyze taste, build statistics, and make recommendations.
      20
      12 PyPI
      MIT