Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoBind address.0.0.0.0
PORTNoHTTP listen port.8000
MAL_CLIENT_IDNoMyAnimeList API app Client ID, needed for the refresh grant.
MAL_ACCESS_TOKENNoStatic fallback access token (expires ~31 days). Used only when no Authorization header arrives and no refresh setup exists.
MAL_CLIENT_SECRETNoMyAnimeList API app Client Secret – required for 'Web'-type apps, omit for public clients.
MAL_REFRESH_TOKENNoMyAnimeList OAuth refresh token (obtained once; see README). Enables self-renewing tokens.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_my_anime_listA

Fetch a page of the authenticated user's MyAnimeList anime list.

Results are paged to keep responses bounded: use limit/offset (and has_more in the response) to fetch further pages. For the complete list in one compact blob use analyze_taste; for aggregates use get_user_stats.

get_user_statsA

Compute summary statistics over the authenticated user's entire anime list.

Fetches the full list in one paginated pass and aggregates locally (no extra MAL calls).

Returns a text digest plus structured content with: total_entries; status_distribution; scores (count/mean/median/1-10 histogram); episodes (total watched + estimated watch hours/days, using each show's average episode duration, ~24 min fallback); top_genres (top 15 with count and avg user score); media_type_distribution; release_decades; community_comparison (avg difference between the user's scores and MAL community means); top_studios (top 10). If the list exceeds the 20,000-entry fetch cap, "truncated": true and a warning are included.

search_animeA

Search MyAnimeList's public anime catalog by title.

Returns a compact text table (id|title|year|type|mean|eps|genres) plus structured content {"count": int, "results": [...]} where each result has: id, title, picture, year, media_type, airing_status, mean (community score), num_episodes, genres, and a synopsis truncated to 300 characters. Use get_anime_detail for full information.

get_anime_detailA

Fetch full public details for one anime by its MAL id.

Returns title(s), synopsis, community stats (mean, rank, popularity, list/scoring user counts, per-status statistics), airing info, source, rating, genres, studios, related_anime, and up to 10 community recommendations. If the anime is on the authenticated user's list, my_list_status (their status/score/progress) is included.

analyze_tasteA

Return the user's entire anime list in a compact, token-efficient text format.

This tool performs NO analysis - it exports the raw data (grouped by watch status, sorted by the user's score) so the calling model can analyze taste, spot patterns, and craft recommendations. Line format: my_score|title|year|type|watched/total_eps| genres|mal_mean ('-' = not scored / unknown). Lists longer than the 20,000-entry fetch cap are exported partially, with a leading WARNING line.

search_mangaA

Search MyAnimeList's public manga catalog by title.

Returns a compact text table (id|title|year|type|mean|chapters|genres) plus structured content {"count": int, "results": [...]} where each result has: id, title, picture, year, media_type (manga/novel/one_shot/...), publishing_status, mean (community score), num_chapters/num_volumes (0 = unknown/ongoing), genres, authors, and a synopsis truncated to 300 characters. Use get_manga_detail for full information.

get_manga_detailA

Fetch full public details for one manga by its MAL id.

Returns title(s), synopsis, community stats (mean, rank, popularity), publication info, chapter/volume counts, genres, authors, serialization magazines, related_manga/related_anime, and up to 10 community recommendations. If the manga is on the authenticated user's list, my_list_status is included.

get_my_manga_listC

Fetch a page of the authenticated user's MyAnimeList manga list.

get_anime_rankingA

Fetch MAL's official anime rankings.

ranking_type: all (top by score), airing, upcoming, tv, ova, movie, special, bypopularity, favorite. Returns a compact text table plus structured content {"ranking_type", "total_returned", "offset", "has_more", "entries"}; each entry: rank, previous_rank, id, title, picture, year, media_type, mean, num_list_users, num_episodes, airing_status, genres.

get_manga_rankingA

Fetch MAL's official manga rankings.

ranking_type: all, manga, novels, oneshots, doujin, manhwa, manhua, bypopularity, favorite. Returns the same paged shape as get_anime_ranking; each entry: rank, previous_rank, id, title, picture, year, media_type, mean, num_list_users, num_chapters, publishing_status, authors, genres.

get_seasonal_animeA

Fetch the anime that aired in one broadcast season (winter/spring/summer/fall).

Seasons: winter = Jan-Mar, spring = Apr-Jun, summer = Jul-Sep, fall = Oct-Dec. sort: anime_score (desc) or anime_num_list_users (desc). Returns a compact text table plus structured content {"year", "season", "total_returned", "offset", "has_more", "entries"} with compact anime entries (including picture).

get_suggested_animeA

Fetch MyAnimeList's personalized anime suggestions for the authenticated user.

These are MAL's own recommendations based on the user's list (empty for accounts without watch history). Returns a compact text table plus structured content {"total_returned", "offset", "has_more", "results"} with the same compact shape as search_anime.

get_weekly_scheduleA

Your personal weekly airing calendar: which anime on your 'watching' list broadcast on each day of the week.

Fetches your watching list, keeps only currently-airing shows, and groups them by broadcast day. Times are shown in the timezone argument if given, else the MAL_TIMEZONE env var, else MAL's native JST. When a timezone applies, both the time and the weekday are converted (a late-night JST slot can fall on a different local day). Shows MAL has no broadcast slot for go in an "unscheduled" group.

Returns a per-day text digest plus structured content {"timezone", "today", "total", "days": [{"day", "entries": [...]}]}; each entry has id, title, picture, media_type, my_score, episodes_watched, total_episodes, broadcast_time.

get_my_profileA

Fetch the authenticated user's MAL profile and lifetime anime statistics.

Returns id, name, picture, birthday, location, joined_at, time_zone, is_supporter, and anime_statistics (items/days per watch status, total episodes, rewatches, mean score). MAL only exposes this endpoint for the token's own account.

get_user_anime_listA

Fetch a page of ANOTHER MAL user's anime list (works only for public lists).

Same paged shape as get_my_anime_list, plus "user_name" echoed in the response. A 403 usually means the user's list is private or the username does not exist.

get_user_manga_listA

Fetch a page of ANOTHER MAL user's manga list (works only for public lists).

Same paged shape as get_my_manga_list, plus "user_name" echoed in the response. A 403 usually means the user's list is private or the username does not exist.

update_my_anime_entryA

Update the authenticated user's list entry for an anime (or ADD it to the list).

Only the provided fields are changed; at least one is required. If the anime is not on the user's list yet, MAL creates the entry (e.g. pass status="plan_to_watch" to add something). Returns the updated my_list_status.

delete_my_anime_entryA

PERMANENTLY remove an anime from the authenticated user's list.

This deletes the entry's score, progress, dates, and tags on MAL - it cannot be undone. MAL treats the delete as idempotent in practice (removing an entry that is already absent still succeeds); a 404 for an unknown id returns a clear message.

update_my_manga_entryA

Update the authenticated user's list entry for a manga (or ADD it to the list).

Only the provided fields are changed; at least one is required. If the manga is not on the user's list yet, MAL creates the entry (e.g. pass status="plan_to_read" to add something). Returns the updated my_list_status.

delete_my_manga_entryA

PERMANENTLY remove a manga from the authenticated user's list.

This deletes the entry's score, progress, dates, and tags on MAL - it cannot be undone. MAL treats the delete as idempotent in practice (removing an entry that is already absent still succeeds); a 404 for an unknown id returns a clear message.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
mal_appInteractive UI for the MyAnimeList tools (MCP Apps).

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/UmutKDev/myanimelist-mcp'

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