MAL MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Log level: debug, info, warn, error, silent | info |
| MAL_CLIENT_ID | No | Client ID for MyAnimeList API token refresh | |
| MAL_TOKEN_STORE | No | Override token cache path (default: OS config dir) | |
| MAL_ACCESS_TOKEN | No | Access token for MyAnimeList API (personal-list tools) | |
| MAL_CLIENT_SECRET | No | Client secret for MyAnimeList API token refresh | |
| MAL_REFRESH_TOKEN | No | Refresh token for MyAnimeList API |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 |
| 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 |
| 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. |
| 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. |
| 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 |
| 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 |
| 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. |
| 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 ( |
| 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. |
| 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 ( |
| get_top_animeA | Get anime ranked by all-time score/popularity, not tied to any season. Use |
| get_top_mangaA | Get manga ranked by all-time score/popularity, not tied to any release window. Use |
| get_seasonal_animeA | List anime from a given season — supply both |
| get_anime_scheduleA | Get the anime broadcast schedule (air times in JST), optionally for a single weekday (or the |
| get_anime_genresA | List anime genres/themes/demographics with their MAL IDs. Use this to discover the numeric IDs that the |
| get_manga_genresA | List manga genres/themes/demographics with their MAL IDs. Use this to discover the numeric IDs that the |
| 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. |
| 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). |
| 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 — |
| 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 ( |
| 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 |
| 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 |
| 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. |
| 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. |
| get_newsA | List recent MyAnimeList news articles site-wide (headline, date, author, excerpt) — not tied to one anime or manga. Use |
| get_my_user_infoA | Get the logged-in user's MyAnimeList profile and anime watch-status statistics. Requires MyAnimeList authentication (via |
| get_my_anime_listA | Get the authenticated user's own anime list, with each entry's status, score and progress. Requires MyAnimeList authentication (via |
| get_my_manga_listA | Get the authenticated user's own manga list, with status, score and progress. Requires MyAnimeList authentication (via |
| 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 |
| 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 |
| delete_my_anime_list_itemA | Remove an anime entry from the authenticated user's list. This cannot be undone. Returns |
| delete_my_manga_list_itemA | Remove a manga entry from the authenticated user's list. This cannot be undone. Returns |
| 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
| Name | Description |
|---|---|
| recommend_similar | Suggest anime similar to a given title, with reasons. title is optional — if omitted, asks which title instead of failing. |
| seasonal_overview | Summarize the notable anime of a given season (or the current one). |
| hidden_gems | Surface highly-rated anime or manga that aren't widely known — high score, low popularity. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Grinv/mal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server