MCP.Market

MAL MCP Server

by Grinv·io.github.Grinv/mal-mcp·v0.11.0·3 stars

MyAnimeList MCP server: Tenrai-powered reads plus official MAL personal-list management.

B75/100grade B
What users say
No reviews yet
Be the first
Safety scan
B75/100

full report

Adoption
Growing

3 stars194 downloads/wk

Reviews

Write one

Nobody has reviewed MAL MCP Server yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

MAL MCP Server tools (54, 5 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • delete_my_anime_list_itemwrite action

    Remove an anime entry from the authenticated user's list. This cannot be undone. Returns `deleted: true` whenever MAL accepts the request \u2014 including when the anime was never on the list to begin with, since MAL's own delete endpoint doesn't distinguish the two \u2014 so success alone isn't proof something existed; check get_my_anime_list first if you need to confirm. Requires a MyAnimeList l

  • delete_my_manga_list_itemwrite action

    Remove a manga entry from the authenticated user's list. This cannot be undone. Returns `deleted: true` whenever MAL accepts the request \u2014 including when the manga was never on the list to begin with, since MAL's own delete endpoint doesn't distinguish the two \u2014 so success alone isn't proof something existed; check get_my_manga_list first if you need to confirm. Requires a MyAnimeList lo

  • get_anime

    Get full details for one anime by mal_id: synopsis, score, genres, studios, streaming links, external links (official site, social media), alternate title synonyms, and related entries. `moreinfo` is a free-text field MAL editors sometimes add (e.g. suggested viewing order for a franchise) \u2014 usually absent. Only carries the single main `trailer` URL \u2014 use get_anime_videos for every promo

  • get_anime_characters

    List the characters of an anime (by mal_id) with their roles and Japanese voice actors. Get the mal_id from search_anime.

  • get_anime_episodes

    List an anime's episodes (by mal_id) with titles, air dates and filler/recap flags. Paginated (~100 per page); use `page` for long-running series. Get the mal_id from search_anime.

  • get_anime_genres

    List anime genres/themes/demographics with their MAL IDs. Use this to discover the numeric IDs that the `genres` parameter of search_anime expects. `sfw`/`sfw_strict` drop the adult (and, for sfw_strict, Ecchi) genres from the list itself.

  • get_anime_interest_stacks

    List the public MyAnimeList Interest Stacks that include a given anime (by mal_id) \u2014 useful for 'what do people group this with' and as a jumping-off point for recommendations rooted in human curation rather than vote counts. Get the mal_id from search_anime. Returns stack metadata only; pass a stack's own mal_id to get_interest_stack for its entries. No official-API fallback exists for this

  • get_anime_news

    List recent news articles about an anime (by mal_id): headline, date, author and excerpt. Useful for 'what's new / any announcements' questions. Get the mal_id from search_anime. Use get_news instead for a site-wide feed not tied to one anime. `sfw`/`sfw_strict` filter out articles for an NSFW/adult-adjacent anime \u2014 verified live this can cut the result down sharply (not necessarily to zero)

  • get_anime_recommendations

    Get community recommendations for anime similar to the given mal_id, ordered by votes and capped at the top 25 (no pagination). Get the mal_id from search_anime. Use get_top_anime instead for a global popularity/score ranking not tied to one title, or get_recent_anime_recommendations for a site-wide feed of recommendation pairs not tied to this title either. `sfw`/`sfw_strict` filter NSFW entries

  • get_anime_reviews

    Get user reviews for one anime (by mal_id): review text (truncated to 1200 characters), score, spoiler/preliminary flags, episodes watched at review time (`episodes_watched`, not `chapters_read` \u2014 that field is manga-only), and community reaction counts. `limit` (default 5) caps how many of the fetched page's reviews come back \u2014 it does not itself fetch further pages, use `page` for Tenr

  • get_anime_schedule

    Get the anime broadcast schedule (air times in JST), optionally for a single weekday (or the `unknown`/`other` buckets Tenrai uses for shows with no fixed weekly slot). `broadcast` is only present for currently-airing shows. Defaults to 25 results if `limit` is omitted; use `page` for further results.

  • get_anime_staff

    List the production staff of an anime (by mal_id) \u2014 director, composer, etc. \u2014 with their roles. Complements get_anime_characters (which covers voice actors). Get the mal_id from search_anime.

  • get_anime_statistics

    Get watch-status counts (watching/completed/\u2026) and the score distribution for an anime by mal_id. Get the mal_id from search_anime. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API, which omits the score distribution (…) entirely \u2014 no equivalent field there.

  • get_anime_videos

    List an anime's promotional videos (PVs/trailers), episode preview clips, and music videos (openings/endings), each with a title, watch URL, thumbnail, and view/like counts where available. This is richer than get_anime's single `trailer` field \u2014 use this instead when the caller wants every promo, not just the main one. Get the mal_id from search_anime.

  • get_character

    Get full details for one character by mal_id: bio, the anime/manga they appear in, and their voice actors. Obtain the mal_id from search_characters or get_anime_characters. `sfw`/`sfw_strict` filter NSFW/adult-adjacent titles out of the character's own anime/manga appearance lists (verified live) rather than affecting the character itself.

  • get_interest_stack

    Get one MyAnimeList Interest Stack by mal_id, with its entries in the curator's own order \u2014 each carrying that curator's score (`author_score`) and note. Obtain the stack's mal_id from get_interest_stacks, get_anime_interest_stacks or get_manga_interest_stacks. Every entry's own `mal_id` chains into get_anime or get_manga (the stack's `stack_type` says which). `sfw`/`sfw_strict` filter NSFW e

  • get_interest_stacks

    Browse or search MyAnimeList Interest Stacks: themed anime/manga lists curated by real users, each entry carrying the curator's own score and note. Use this for taste- or mood-shaped requests ('something melancholy', 'cozy slice-of-life') where a ranking or a genre filter is the wrong instrument \u2014 get_top_anime answers 'what is best', this answers 'what goes together'. Returns stack metadata

  • get_magazines

    List or search manga serialization magazines/publishers (e.g. Weekly Shonen Jump) with their MAL IDs and manga counts. Use `q` to search by name, or look up an ID here for search_manga's `magazines` filter.

  • get_manga

    Get full details for one manga by mal_id: synopsis, score, genres, authors, serialization, external links (official site, social media), alternate title synonyms, and related entries. Obtain the mal_id from search_manga first. `sfw`/`sfw_strict` don't affect this manga itself (its id was requested explicitly) \u2014 they filter NSFW entries out of its `relations` list. If Tenrai is unavailable and

  • get_manga_characters

    List the characters of a manga (by mal_id) with their roles. Get the mal_id from search_manga.

  • get_manga_genres

    List manga genres/themes/demographics with their MAL IDs. Use this to discover the numeric IDs that the `genres` parameter of search_manga expects. `sfw`/`sfw_strict` drop the adult (and, for sfw_strict, Ecchi) genres from the list itself.

  • get_manga_interest_stacks

    List the public MyAnimeList Interest Stacks that include a given manga (by mal_id). The manga counterpart of get_anime_interest_stacks. Get the mal_id from search_manga. Returns stack metadata only; pass a stack's own mal_id to get_interest_stack for its entries. No official-API fallback exists for this tool \u2014 it always needs Tenrai itself to be reachable.

  • get_manga_news

    List recent news articles about a manga (by mal_id): headline, date, author and excerpt. Useful for 'what's new / any announcements' questions. Get the mal_id from search_manga. Use get_news instead for a site-wide feed not tied to one manga. `sfw`/`sfw_strict` filter out articles for an NSFW/adult-adjacent manga \u2014 verified live this can cut the result down sharply (not necessarily to zero) r

  • get_manga_recommendations

    Get community recommendations for manga similar to the given mal_id, ordered by votes and capped at the top 25 (no pagination). Get the mal_id from search_manga. Use get_top_manga instead for a global popularity/score ranking not tied to one title, or get_recent_manga_recommendations for a site-wide feed of recommendation pairs not tied to this title either. `sfw`/`sfw_strict` filter NSFW entries

  • get_manga_reviews

    Get user reviews for one manga (by mal_id): review text (truncated to 1200 characters), score, spoiler/preliminary flags, chapters read at review time (`chapters_read`, not `episodes_watched` \u2014 that field is anime-only), and community reaction counts. `limit` (default 5) caps how many of the fetched page's reviews come back \u2014 it does not itself fetch further pages, use `page` for Tenrai'

  • get_manga_statistics

    Get read-status counts (reading/completed/\u2026) and the score distribution for a manga by mal_id. Get the mal_id from search_manga. Unlike get_anime_statistics, no official-API fallback exists for this tool \u2014 it always needs Tenrai itself to be reachable.

  • get_my_anime_list

    Get the authenticated user's own anime list, with each entry's status, score and progress. Requires a MyAnimeList login.

  • get_my_manga_list

    Get the authenticated user's own manga list, with status, score and progress. Requires a MyAnimeList login.

  • get_my_user_info

    Get the logged-in user's MyAnimeList profile and anime watch-status statistics. Requires a MyAnimeList login. Anime-only \u2014 the official API has no manga statistics field at all, and there is no tool for a user's manga read stats.

  • get_news

    List recent MyAnimeList news articles site-wide (headline, date, author, excerpt) \u2014 not tied to one anime or manga. Use `q` to search by keyword or `tag` to filter by topic tag. Use get_anime_news/get_manga_news instead for news about one specific anime/manga by mal_id. `sfw`/`sfw_strict` drop articles about adult content.

  • get_person

    Get full details for one person by mal_id: bio, their anime/manga staff-credit lists, and their voiced roles. Staff credits are capped at the first 200 (only an extreme outlier hits that \u2014 a prolific sound director can have 500+; a well-known director sits under 100); when the cap bites, the response says so via `credits_truncated` plus `total_anime_credits`/`total_manga_credits`, and `full_c

  • get_producer

    Get full details for one anime producer/studio by mal_id: about text and external links (official site, social media) alongside the fields get_producers already returns. Obtain the mal_id from get_producers.

  • get_producers

    List or search anime producers and studios with their MAL IDs and counts. Use `q` to search by name, then get_producer for one studio's full profile (about text, external links).

  • get_random_anime

    Return one random anime (core details: no `relations`/`streaming`/`opening_themes`/`ending_themes`/`external` \u2014 call get_anime with the returned mal_id for those). Good for discovery / suggestions. No official-API fallback exists for this tool \u2014 it always needs Tenrai itself to be reachable.

  • get_random_character

    Return one random character (core details: no `anime`/`manga`/`voice_actors` \u2014 call get_character with the returned mal_id for those). Good for discovery / trivia. No official-API fallback exists for this tool \u2014 it always needs Tenrai itself to be reachable.

  • get_random_manga

    Return one random manga (core details: no `relations`/`external` \u2014 call get_manga with the returned mal_id for those). Good for discovery / suggestions. No official-API fallback exists for this tool \u2014 it always needs Tenrai itself to be reachable.

  • get_random_person

    Return one random person \u2014 voice actor, director, author (core details: no `anime`/`manga`/`voice_roles` \u2014 call get_person with the returned mal_id for those). Good for discovery / trivia. No official-API fallback exists for this tool \u2014 it always needs Tenrai itself to be reachable.

  • get_recent_anime_recommendations

    Get a site-wide feed of recently-submitted anime recommendation pairs (e.g. 'if you liked X, try Y') with the submitting user's own commentary \u2014 not tied to any one title. Use get_anime_recommendations instead for recommendations similar to a specific mal_id. No official-API fallback exists for this tool \u2014 it always needs Tenrai itself to be reachable.

  • get_recent_manga_recommendations

    Get a site-wide feed of recently-submitted manga recommendation pairs (e.g. 'if you liked X, try Y') with the submitting user's own commentary \u2014 not tied to any one title. Use get_manga_recommendations instead for recommendations similar to a specific mal_id. No official-API fallback exists for this tool \u2014 it always needs Tenrai itself to be reachable.

  • get_seasonal_anime

    List anime from a given season \u2014 supply both `year` and `season` together, or omit both for the current season; supplying only one is treated as omitting both. For next season's lineup use get_upcoming_season instead.

  • get_seasons_list

    List the years and seasons that have anime data, so you can pick valid arguments for get_seasonal_anime.

  • get_top_anime

    Get anime ranked by all-time score/popularity, not tied to any season. Use `filter` for special rankings (airing, upcoming, bypopularity, favorite); for a specific season's lineup use get_seasonal_anime or get_upcoming_season instead. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API, which takes one ranking instead of `type` + `filter`: `filter` wins ov

  • get_top_characters

    Get the most popular/favorited characters, ranked overall. Use search_characters instead to look up a specific character by name.

  • get_top_manga

    Get manga ranked by all-time score/popularity, not tied to any release window. Use `filter` for special rankings (publishing, upcoming, bypopularity, favorite). If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API, which takes one ranking instead of `type` + `filter`: `filter` publishing/upcoming has no official ranking and is dropped, bypopularity/favorite

  • get_top_people

    Get the most popular/favorited people (voice actors, staff, authors), ranked overall. Use search_people instead to look up a specific person by name.

  • get_upcoming_season

    List anime scheduled for the upcoming season. Use get_seasonal_anime for the current or a specific past season.

  • login_mal

    Authorize the personal-list tools with your MyAnimeList account (one-time). Prerequisite: register a MAL API app of type 'other' at https://myanimelist.net/apiconfig with Redirect URI set to this server's localhost callback, and set MAL_CLIENT_ID in the server env. Calling this returns an authorization URL: open it, log in, and click Allow. If your browser is on the same machine as the server and

  • search_anime

    Search MyAnimeList anime by keyword; returns compact summaries (with the mal_id that other anime tools require) plus pagination info. If Tenrai is unavailable and MAL_CLIENT_ID is set and `q` has at least 3 characters (the official search rejects anything shorter, so a filter-only or 1-2 character search has no fallback), transparently retries via the official API, which ignores every filter excep

  • search_characters

    Search MyAnimeList characters by name. Returns compact summaries and the mal_id needed by get_character. Use get_anime_characters instead if you already have an anime's mal_id and want its full cast.

  • search_manga

    Search MyAnimeList manga by keyword (also light novels, manhwa/manhua); returns compact summaries with the mal_id that other manga tools require. If Tenrai is unavailable and MAL_CLIENT_ID is set and `q` has at least 3 characters (the official search rejects anything shorter, so a filter-only or 1-2 character search has no fallback), transparently retries via the official API, which ignores every

  • search_people

    Search MyAnimeList people (voice actors, directors, authors) by name. Returns the mal_id needed by get_person.

  • submit_mal_redirectwrite action

    Complete a login started with login_mal by submitting the URL your browser was redirected to after clicking Allow (the one containing ?code=...). Use this when login didn't complete automatically \u2014 e.g. the server runs on a remote/headless host. A bare code string is also accepted.

  • update_my_anime_statuswrite action

    Add or update an anime on the authenticated user's list (status, score, watched episodes, dates). Creates the entry if absent; fields you omit are left unchanged on an existing entry. Provide at least one field besides anime_id. Requires a MyAnimeList login.

  • update_my_manga_statuswrite action

    Add or update a manga on the authenticated user's list (status, score, chapters/volumes read, dates). Creates the entry if absent; fields you omit are left unchanged on an existing entry. Provide at least one field besides manga_id. Requires a MyAnimeList login.

Public scan report

scanner v0.1.10 · 2026-11-01 · same rubric, same numbers if you re-run it

1 medium
  • Code scan2 source files scanned20/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitystatic API keys via environment variables6/15
  • Maintenancelast push 10 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10

Findings (1)

  • mediumeval / new Function usedexec.eval
    dist/index.js: …&(C=this.opts.code.process(C,v));let ee=new Function(`${i.default.self}`,`${i.default.scope}`…
Overall 75/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How MAL MCP Server compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
75/100
higher than 45% of 48,243 servers
Tools
54
the typical server has 7
Tools that change things
9%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
3
more than 80% of 28,706 servers
Downloads a week
194
more than 74% of 12,306 servers with a package

What its tools let an agent do: 49 read · 3 change · 2 delete

Release history: 2 versions in the registry since 2026-08-24, latest 2026-10-22, typically one every 59 days.

Install MAL MCP Server in Claude Code, Cursor or VS Code

Runs npx -y mal-mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add mal-mcp -- npx -y mal-mcp
Add to Cursor

What the publisher says

From the MAL MCP Server repository's README, as published. We do not edit it. Read it on GitHub

MAL MCP Server

An MCP server for MyAnimeList. It works with any MCP-compatible client or agent (Claude Desktop/Code, Cursor, VS Code, Cline, Continue, and others), since the server speaks the standard MCP stdio protocol.

What it does

It uses a hybrid backend:

details, rankings, seasons, characters, recommendations and reviews. No credentials required.

  • Reads → Tenrai (free, unofficial MAL API). Search,

Read, update and delete entries on your own anime/manga list. Requires a one-time login (see below).

  • Your personal list → official MyAnimeList API.

What you need (and what it gets you)

Nothing is required to get started. You can skip straight to Install. Everything below is optional, and each step just adds more:

Without a login, the personal-list tools reply with a clear message telling you how to get one. Everything else keeps working regardless.

Example queries

Once it's connected, just ask your agent in natural language.

No credentials needed (search, details, rankings, seasons, characters, …):

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

MAL MCP Server: common questions

Is MAL MCP Server safe?
Mostly: it is graded B (75/100). Read the MAL MCP Server safety report
How do I install MAL MCP Server?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does MAL MCP Server need an API key?
Yes. The registry entry asks for MAL_CLIENT_ID, MAL_REFRESH_TOKEN, MAL_ACCESS_TOKEN.
Is MAL MCP Server maintained?
The last commit was 14 days ago (2026-10-22). The latest release is v0.11.0.
How does MAL MCP Server compare with other MCP servers?
safety score 75/100 (higher than 45% of 48,243 servers); tools 54 (the typical server has 7); tools that change things 9% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

More from Grinv →