Skip to main content
Glama
Grinv

MAL MCP Server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_LEVELNoLog level: debug, info, warn, error, silentinfo
MAL_CLIENT_IDNoClient ID for MyAnimeList API token refresh
MAL_TOKEN_STORENoOverride token cache path (default: OS config dir)
MAL_ACCESS_TOKENNoAccess token for MyAnimeList API (personal-list tools)
MAL_CLIENT_SECRETNoClient secret for MyAnimeList API token refresh
MAL_REFRESH_TOKENNoRefresh token for MyAnimeList API

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
completions
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_animeA

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, transparently retries via the official API, which ignores every filter except q/sfw/limit/page (type/status/genres/genres_exclude/rating/score/min_score/max_score/letter/producers/start_date/end_date/unapproved/order_by/sort are silently dropped), always returns empty themes/demographics/broadcast (no official-API equivalent for any of these), enforces an explicit sfw: true client-side (a filtered page can come back shorter than limit), and — for a query with no real title match — comes back with a page of unrelated anime instead of an empty result (a quirk of the official search endpoint itself, not a mal-mcp bug; don't treat a nonsense-query result as a real match during a fallback).

search_mangaA

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, transparently retries via the official API, which ignores every filter except q/sfw/limit/page (type/status/genres/genres_exclude/score/min_score/max_score/letter/magazines/start_date/end_date/unapproved/order_by/sort are silently dropped), always returns empty themes/demographics (no official-API equivalent), enforces an explicit sfw: true client-side (a filtered page can come back shorter than limit), and — for a query with no real title match — comes back with a page of unrelated manga instead of an empty result (a quirk of the official search endpoint itself, not a mal-mcp bug; don't treat a nonsense-query result as a real match during a fallback).

get_animeA

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) — usually absent. Only carries the single main trailer URL — use get_anime_videos for every promo/episode-preview/music video. Obtain the mal_id from search_anime first. sfw/sfw_strict don't affect this anime itself (its id was requested explicitly) — they filter NSFW entries out of its relations list. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API, which omits producers/licensors/streaming/opening_themes/ending_themes/trailer/favorites/moreinfo/explicit_genres/external (no equivalent fields there) and ignores sfw/sfw_strict entirely.

get_mangaA

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) — they filter NSFW entries out of its relations list. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API, which omits favorites/explicit_genres/external (no equivalent field there) and ignores sfw/sfw_strict entirely.

get_anime_charactersA

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

get_manga_charactersA

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

get_anime_episodesA

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_videosA

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 — use this instead when the caller wants every promo, not just the main one. Get the mal_id from search_anime.

get_anime_recommendationsA

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 out of the recommendation list itself. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API's own recommendations field (same output shape, but ordering/counts may differ slightly from Tenrai's, and sfw/sfw_strict are ignored entirely).

get_recent_anime_recommendationsA

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 — 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 — it always needs Tenrai itself to be reachable.

get_anime_reviewsA

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 — that field is manga-only), and community reaction counts. limit (default 5) caps how many of the fetched page's reviews come back — it does not itself fetch further pages, use page for Tenrai's own ~20-per-page listing. sort/preliminary/spoilers/sentiment filter/order the underlying set before that cap is applied. Get the mal_id from search_anime.

get_manga_recommendationsA

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 out of the recommendation list itself. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API's own recommendations field (same output shape, but ordering/counts may differ slightly from Tenrai's, and sfw/sfw_strict are ignored entirely).

get_recent_manga_recommendationsA

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 — 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 — it always needs Tenrai itself to be reachable.

get_manga_reviewsA

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 — that field is anime-only), and community reaction counts. limit (default 5) caps how many of the fetched page's reviews come back — it does not itself fetch further pages, use page for Tenrai's own ~20-per-page listing. sort/preliminary/spoilers/sentiment filter/order the underlying set before that cap is applied. Get the mal_id from search_manga.

get_top_animeA

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 — type/filter are merged into one best-effort ranking, rating is ignored entirely, themes/demographics/broadcast come back empty, and sfw_strict degrades to the same filtering as sfw (the official API can't separate adult-rated from Ecchi-tagged-but-safely-rated).

get_top_mangaA

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 — type/filter are merged into one best-effort ranking, themes/demographics come back empty, and sfw_strict degrades to the same filtering as sfw (the official API can't separate adult-rated from Ecchi-tagged-but-safely-rated).

get_seasonal_animeA

List anime from a given season — 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. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API — filter/rating/unapproved/continuing/kids/order_by/sort are silently dropped (no equivalent there), themes/demographics/broadcast come back empty, an explicit sfw: true is enforced client-side (a filtered page can come back shorter than limit), and sfw_strict degrades to the same filtering as sfw there (no Ecchi-genre distinction available).

get_anime_scheduleA

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_genresA

List anime genres/themes/demographics with their MAL IDs. Use this to discover the numeric IDs that the genres parameter of search_anime expects.

get_manga_genresA

List manga genres/themes/demographics with their MAL IDs. Use this to discover the numeric IDs that the genres parameter of search_manga expects.

search_charactersA

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.

get_characterA

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.

search_peopleA

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

get_personA

Get full details for one person by mal_id: bio, their anime/manga staff positions and voiced roles (capped to the first 50 for prolific people, in whatever order the upstream API returns them — not necessarily their most notable roles). Obtain the mal_id from search_people, or from get_character's voice_actors (which include each actor's mal_id — get_anime_characters' voice_actors are names only, with no id). sfw/sfw_strict filter NSFW/adult-adjacent titles out of the person's own anime/manga credit lists (verified live) rather than affecting the person themselves.

get_anime_staffA

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

get_random_animeA

Return one random anime (full details). Good for discovery / suggestions. No official-API fallback exists for this tool — it always needs Tenrai itself to be reachable.

get_random_mangaA

Return one random manga (full details). Good for discovery / suggestions. No official-API fallback exists for this tool — it always needs Tenrai itself to be reachable.

get_upcoming_seasonA

List anime scheduled for the upcoming season. Use get_seasonal_anime for the current or a specific past season. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API — filter/rating/unapproved/continuing/kids/order_by/sort are silently dropped (no equivalent there), themes/demographics/broadcast come back empty, an explicit sfw: true is enforced client-side (a filtered page can come back shorter than limit), and sfw_strict degrades to the same filtering as sfw there (no Ecchi-genre distinction available).

get_anime_statisticsA

Get watch-status counts (watching/completed/…) 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 (scores) entirely — no equivalent field there.

get_manga_statisticsA

Get read-status counts (reading/completed/…) 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 — it always needs Tenrai itself to be reachable.

get_producersA

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_producerA

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_magazinesA

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_top_peopleA

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_top_charactersA

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

get_seasons_listA

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

get_random_characterA

Return one random character (full details). Good for discovery / trivia.

get_random_personA

Return one random person — voice actor, director, author (full details). Good for discovery / trivia.

get_anime_newsA

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 set to true returns an empty list entirely for an NSFW-rated anime (verified live) rather than filtering individual articles — sfw_strict behaves the same way, just for a wider content-rating cutoff.

get_manga_newsA

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 — verified live this can cut the result down sharply (not necessarily to zero) rather than being a no-op.

get_newsA

List recent MyAnimeList news articles site-wide (headline, date, author, excerpt) — 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.

get_my_user_infoA

Get the logged-in user's MyAnimeList profile and anime watch-status statistics. Requires MyAnimeList authentication (via login_mal, or a pre-supplied MAL_REFRESH_TOKEN/MAL_ACCESS_TOKEN). Anime-only — the official API has no manga statistics field at all, and there is no tool for a user's manga read stats.

get_my_anime_listA

Get the authenticated user's own anime list, with each entry's status, score and progress. Requires MyAnimeList authentication (via login_mal, or a pre-supplied MAL_REFRESH_TOKEN/MAL_ACCESS_TOKEN).

get_my_manga_listA

Get the authenticated user's own manga list, with status, score and progress. Requires MyAnimeList authentication (via login_mal, or a pre-supplied MAL_REFRESH_TOKEN/MAL_ACCESS_TOKEN).

update_my_anime_statusA

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 MyAnimeList authentication (via login_mal, or a pre-supplied MAL_REFRESH_TOKEN/MAL_ACCESS_TOKEN).

update_my_manga_statusA

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

delete_my_anime_list_itemA

Remove an anime entry from the authenticated user's list. This cannot be undone. Returns deleted: true whenever MAL accepts the request — including when the anime was never on the list to begin with, since MAL's own delete endpoint doesn't distinguish the two — so success alone isn't proof something existed; check get_my_anime_list first if you need to confirm. Requires MyAnimeList authentication (via login_mal, or a pre-supplied MAL_REFRESH_TOKEN/MAL_ACCESS_TOKEN).

delete_my_manga_list_itemA

Remove a manga entry from the authenticated user's list. This cannot be undone. Returns deleted: true whenever MAL accepts the request — including when the manga was never on the list to begin with, since MAL's own delete endpoint doesn't distinguish the two — so success alone isn't proof something existed; check get_my_manga_list first if you need to confirm. Requires MyAnimeList authentication (via login_mal, or a pre-supplied MAL_REFRESH_TOKEN/MAL_ACCESS_TOKEN).

login_malA

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 the callback port is free, login completes automatically; otherwise (a remote/headless host, or the port is busy) copy the URL you land on and pass it to submit_mal_redirect.

submit_mal_redirectA

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 — e.g. the server runs on a remote/headless host. A bare code string is also accepted.

Prompts

Interactive templates invoked by user choice

NameDescription
recommend_similarSuggest anime similar to a given title, with reasons. title is optional — if omitted, asks which title instead of failing.
seasonal_overviewSummarize the notable anime of a given season (or the current one).
hidden_gemsSurface highly-rated anime or manga that aren't widely known — high score, low popularity.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/mal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server