MyAnimeList MCP Server
Provides tools for interacting with the MyAnimeList API, including searching and retrieving details for anime and manga, accessing rankings and seasonal anime, managing user lists (with authentication), and fetching user profiles.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MyAnimeList MCP Server show me the top 10 anime this season"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MyAnimeList MCP Server
MCP Server for interacting with the MyAnimeList API, allowing LLM clients to access and interact with anime, manga and more.
Using with Claude Desktop (or other MCP clients)
Installing via Smithery
To install myanimelist-mcp-server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @nicoaguerrero/myanimelist-mcp-server --client claudeManual Installation
Add this server to your
claude_desktop_config.json:
{
"mcpServers": {
"myanimelist": {
"command": "uv",
"args": [
"--directory",
"<path to your project>",
"run",
"main.py"
]
}
}
}Restart Claude Desktop
Use the tools to interact with MyAnimeList
Related MCP server: mal-mcp
Available Tools
Anime
get_anime: Get a list of anime based on a search query and filters
get_anime_details: Get details of an anime by its ID, like recommendations, studios, broadcasting, etc.
get_anime_ranking: Get anime rankings
get_seasonal_anime: Get seasonal anime based on year and season
get_anime_list: Get an user's anime list based on it's username
get_suggested_anime: [Requires Auth] Get anime recommendations for a logged user
update_myanimelist: [Requires Auth] Update an anime from the logged user's anime list
delete_myanimelist_item: [Requires Auth] Delete an anime from the logged user's anime list
Manga
get_manga: Get a list of manga based on a search query and filters
get_manga_details: Get details of a manga by its ID
get_manga_ranking: Get manga rankings
get_manga_list: Get an user's manga list based on it's username
update_mymangalist: [Requires Auth] Update a manga from the logged user's manga list
delete_mymangalist_item: [Requires Auth] Delete a manga from the logged user's manga list
User
get_user_profile: [Requires Auth] Get details about the logged user
Get an MyAnimeList API Token for Auth
To get an API token, follow these steps:
Go to API in profile settings.
Click on "Create ID" and select app type web.
Use this URL as your client's "Redirect URL":
http://localhost:8080/callbackClick "Submit"
Then click "Edit" in your generated client and you will see the the client_ID and client_secret.
Copy them in your
.envfile or environment variables (see .env_example).
Useful resources
https://myanimelist.net/apiconfig/references/authorization https://myanimelist.net/forum/?topicid=1850649&show=150#msg69272815 https://myanimelist.net/apiconfig/references/api/v2
Available Tools
15 toolsdelete_myanimelist_itemB
Deletes an anime from the authenticated user's MyAnimeList.
Args:
anime_id: The ID of the anime to delete.
Inputs: anime_id (required).
delete_mymangalist_itemD
Deletes an anime from the authenticated user's MyAnimeList.
Args:
anime_id: The ID of the anime to delete.
Inputs: manga_id (required).
get_animeB
Fetches a list of anime from MyAnimeList based on a search query.
Args:
q (str): The search query for the anime.
limit (int): The number of results to return (default is 10 and max 100).
offset (int): The offset for pagination (default is 0).
Inputs: q (required), limit, offset.
get_anime_detailsA
Fetches details of an anime by its ID from MyAnimeList.
Args:
anime_id (int): The ID of the anime to fetch details for.
fields (List[str]): List of fields to include in the response. If None, includes common fields:
id, title, main_pictures.
Valid fields: id, title, main_picture, alternative_titles, start_date, end_date,
synopsis, mean, rank, popularity, num_list_users, num_scoring_users, nsfw,
created_at, updated_at, media_type, status, genres, my_list_status, num_episodes,
start_season, broadcast, source, average_episode_duration, rating, pictures,
background, related_anime, related_manga, recommendations, studios, statistics.
Examples:
- To get the score: get_anime_details(30230, fields=["mean"])
- To get similar animes: get_anime_details(30230, fields=["recommendations"])
- To get genres and synopsis: get_anime_details(30230, fields=["genres", "synopsis"])
Inputs: anime_id (required), fields (required).
get_anime_listA
Fetches an anime list for a user from MyAnimeList.
Args:
username (str): The username of the MyAnimeList user.
status (AnimeStatus): The status of the anime list to fetch. Options: "watching", "completed", "on_hold", "dropped", "plan_to_watch".
sort (AnimeStatusSort, optional): Sort order by "list_score", "list_updated_at", "anime_title" or "anime_start_date". Default is None.
limit (int): The number of results to return (default is 10 and max 500).
offset (int): The offset for pagination (default is 0).
Inputs: username (required), status (required), sort, limit, +1 more.
get_anime_rankingA
Fetches anime rankings from MyAnimeList.
Args:
ranking_type (AnimeRanking): The type of ranking to fetch. Options:
"all", "airing", "upcoming", "tv", "ova", "movie", "special", "bypopularity", "favorite".
limit (int): The number of results to return (default is 10 and max 500).
offset (int): The offset for pagination (default is 0).
Inputs: ranking_type, limit, offset.
get_mangaA
Fetches a list of manga from MyAnimeList based on a search query.
Args:
q (str): The search query for the manga.
limit (int): The number of results to return (default is 10 and max 100).
offset (int): The offset for pagination (default is 0).
Inputs: q (required), limit, offset.
get_manga_detailsA
Fetches details of a manga by its ID from MyAnimeList.
Args:
manga_id (int): The ID of the manga to fetch details for.
fields (List[str]): List of fields to include in the response. If None, includes common fields:
id, title, main_picture.
Valid fields: id, title, main_picture, alternative_titles, start_date, end_date, synopsis, mean,
rank, popularity, num_list_users, num_scoring_users, nsfw, created_at, updated_at, media_type,
status, genres, my_list_status, num_volumes, num_chapters, authors, pictures,
background, related_anime, related_manga, recommendations, serialization
Examples:
- To get the score: get_manga_details(30230, fields=["mean"])
- To get similar mangas: get_manga_details(30230, fields=["recommendations"])
- To get genres and synopsis: get_manga_details(30230, fields=["genres", "synopsis"])
Inputs: manga_id (required), fields (required).
get_manga_listA
Fetches a manga list for a user from MyAnimeList.
Args:
username (str): The username of the MyAnimeList user.
status (MangaStatus): The status of the manga list to fetch. Options: "reading", "completed", "on_hold", "dropped", "plan_to_read".
sort (MangaStatusSort, optional): Sort order by "list_score", "list_updated_at", "manga_title" or "manga_start_date". Default is None.
limit (int): The number of results to return (default is 10 and max 500).
offset (int): The offset for pagination (default is 0).
Inputs: username (required), status (required), sort, limit, +1 more.
get_manga_rankingC
Fetches manga rankings from MyAnimeList.
Args:
ranking_type (MangaRanking): The type of ranking to fetch. Options:
"all", "manga", "novels", "oneshot", "doujin", "manhwa", "manhua", "bypopularity", "favorite".
limit (int): The number of results to return (default is 10 and max 500).
offset (int): The offset for pagination (default is 0).
Inputs: ranking_type (required), limit, offset.
get_seasonal_animeA
Fetches seasonal anime from MyAnimeList.
Args:
season (Season): The season to fetch. Options: "winter", "spring", "summer", "fall".
year (int): The year of the season.
sort (SeasonSort, optional): Sort order by "anime_score" or "anime_num_list_users". Default is None.
limit (int): The number of results to return (default is 10 and max 500).
offset (int): The offset for pagination (default is 0).
Inputs: season (required), year (required), sort, limit, +1 more.
get_suggested_animeA
Fetches suggested anime for the current user from MyAnimeList.
Args:
limit (int): The number of results to return (default is 10 and max 100).
offset (int): The offset for pagination (default is 0).
Inputs: limit, offset.
get_user_profileA
Fetches the profile of the current user from MyAnimeList.
Args:
fields (str, optional): Set to "anime_statistics" to include anime statistics. Default is None.
Inputs: fields.
update_myanimelistA
Updates an anime's status in the authenticated user's MyAnimeList.
Args:
anime_id: The ID of the anime to update.
status: The watch status (watching, completed, on_hold, dropped, plan_to_watch).
score: The score given to the anime (0-10).
num_watched_episodes: Number of episodes watched.
is_rewatching: Whether the anime is being rewatched.
priority: Priority of the anime (0-2).
num_times_rewatched: Number of times the anime was rewatched.
rewatch_value: Value of rewatching the anime (0-5).
tags: Comma-separated tags for the anime.
comments: Comments about the anime.Inputs: anime_id (required), status, score, num_watched_episodes, +6 more.
update_mymangalistC
Updates a manga's status in the authenticated user's MyAnimeList.
Args:
manga_id: The ID of the manga to update.
status: The read status (reading, completed, on_hold, dropped, plan_to_read).
is_rereading: Whether the manga is being reread.
score: The score given to the manga (0-10).
num_volumes_read: Number of volumes read.
num_chapters_read: Number of chapters read.
priority: Priority of the manga (0-2).
num_times_reread: Number of times the manga was reread.
reread_value: Value of reread the manga (0-5).
tags: Comma-separated tags for the manga.
comments: Comments about the manga.Inputs: manga_id (required), status, is_rereading, score, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Most tools have distinct purposes (anime vs manga, search vs details vs rankings). However, the delete tools have identical descriptions erroneously referencing anime only, and the similarity between get_anime (search) and get_anime_details (by ID) could cause some confusion.
Tools generally follow a verb_noun pattern, but there are inconsistencies: 'delete_myanimelist_item' vs 'delete_mymangalist_item' (mixed prefix casing), and 'update_myanimelist' vs 'update_mymangalist' (inconsistent 'my' inclusion). The 'get_anime' vs 'get_anime_details' naming is fine.
15 tools is well-scoped for a MyAnimeList server, covering search, details, user lists, rankings, seasonal, suggestions, and update/delete for both anime and manga without being overwhelming.
The tool set covers most expected operations (search, details, lists, rankings, updates, deletions) for both anime and manga. Minor gaps: no explicit 'create/add' tool (though update may serve), and the delete tools' descriptions are misaligned, but overall the surface is comprehensive.
Maintenance
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseBqualityCmaintenanceAniList MCP server for accessing AniList API data44172 npm91MIT
- AlicenseNot gradedqualityDmaintenanceA 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.82 npm2MIT
- AlicenseAqualityBmaintenanceMCP server for MyAnimeList that enables searching anime/manga, getting details, rankings, seasons, characters, reviews, and user profiles without authentication, and managing personal anime/manga lists with authentication (token required).25482 npm3MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server for anime and manga discovery, enabling search, detail retrieval, franchise watch order, seasonal schedule, character lookups, rankings, and studio filmography via natural language.171 npm2Apache 2.0