MCP server for Bangumi TV API integration, providing tools to search and manage anime, characters, persons, subjects, collections, indices, and revisions
BangumiMCP provides 38 tools covering anime/manga/game metadata queries and user collection management. Strengths: all tools have clear action-verb naming (search_, get_, update_, collect_), all have descriptions (50-200 chars typical), input parameters are typed with descriptions, and the codebase shows consistent schema structure. Weaknesses: output schemas are not explicitly documented in the schema definitions, return types are inferred from API responses but not formally declared to the MCP client; error handling descriptions are minimal; no tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk categorization in the provided metadata; pagination parameters present but output structure (especially for list endpoints) is not formally specified. The tool set is well-organized (character, person, subject, collection, index, revision tools) and naming is unambiguous (e.g., search_characters vs get_character_details is clear), but the absence of documented output schemas and lack of error recovery guidance prevent a higher score.
Add a subject to an index. Requires authentication (BANGUMI_TOKEN).
Browse subjects by type and filters. Supported Subject Types (integer enum, required): 1: Book, 2: Anime, 3: Music, 4: Game, 6: Real Supported Categories (integer enums for 'cat', specific to SubjectType): Book (type=1): Other=0, Comic=1001, Novel=1002, Illustration=1003 Anime (type=2): Other=0, TV=1, OVA=2, Movie=3, WEB=5 Game (type=4): Other=0, Games=4001, Software=4002, DLC=4003, Tabletop=4005 Real (type=6): Other=0, JP=1, EN=2, CN=3, TV=6001, Movie=6002, Live=6003, Show=6004 Supported Sort orders (string for 'sort', optional): 'date', 'rank' (Default sorting may vary if 'sort' is not provided)
Collect (favorite) a character for the current user. Requires authentication (BANGUMI_TOKEN).
Collect (favorite) an index for the current user. Requires authentication (BANGUMI_TOKEN).
Collect (favorite) a person for the current user. Requires authentication (BANGUMI_TOKEN).
Output schemas not formally documented in tool definitions. While input schemas are present and typed, return types are inferred from API responses rather than explicitly declared to the MCP client. This forces LLMs to guess what fields are available and may cause failures if API responses lack expected fields.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are absent despite clear risk categorization in metadata (READ_ONLY, WRITE, DESTRUCTIVE). MCP protocol supports annotations to signal these hints to LLMs, preventing accidental misuse.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 58 | - | v1 |
Create a new index (directory). Requires authentication (BANGUMI_TOKEN).
Get details of a specific character.
Get the image URL for a character. Supported image types: small, grid, large, medium
List persons (e.g., voice actors) related to a character.
Get details of a specific character revision.
Get revision history for a character.
List subjects (e.g., anime, games) where a character appears.
Get the daily broadcast schedule for the current week on Bangumi.
Get details of a specific episode revision.
Get revision history for an episode.
Get index (directory) details.
Get subjects in an index.
List characters voiced or portrayed by a person (e.g., voice actor, actor).
Get details of a specific person or company.
Get the image URL for a person. Supported image types: small, grid, large, medium
Get details of a specific person revision.
Get revision history for a person.
List subjects (e.g., anime, games) a person is related to (e.g., worked on).
Get details of a specific subject (e.g., anime, book, game).
Get details of a specific subject revision.
Get revision history for a subject.
Get the collection list for a user. Collection types: 1: Wish, 2: Collect, 3: Doing, 4: On Hold, 5: Dropped
Get the episode collection status for a subject.
Get a user's collection status for a specific subject.
Remove a subject from an index. Requires authentication (BANGUMI_TOKEN).
Search for characters on Bangumi. Supported Character Types (integer enum in result): 1: Character, 2: Mechanic, 3: Ship, 4: Organization
Search for persons or companies on Bangumi. Supported Person Types (integer enum in result): 1: Individual, 2: Corporation, 3: Association Supported Career Filters (string enum): 'producer', 'mangaka', 'artist', 'seiyu', 'writer', 'illustrator', 'actor'
Search for subjects on Bangumi. Supported Subject Types (integer enum): 1: Book, 2: Anime, 3: Music, 4: Game, 6: Real Supported Sort orders (string enum): 'match', 'heat', 'rank', 'score'
Remove an index from the current user's collection. Requires authentication (BANGUMI_TOKEN).
Update the collection status for episodes. Episode collection types: 1: Wish (想看), 2: Done (看过), 3: Dropped (抛弃)
Update index (directory) information. Requires authentication (BANGUMI_TOKEN).
Update subject information in an index. Requires authentication (BANGUMI_TOKEN).
Update the collection status for a subject. Collection types: 1: Wish, 2: Collect, 3: Doing, 4: On Hold, 5: Dropped
Error handling does not provide recovery guidance. When API calls fail (e.g., API rate limits, user not found, invalid ID), the code returns error messages but does not offer next steps or suggest alternative tools (e.g., 'Try search_users() first').
Pagination parameters present (limit, offset) but result structure not formally specified. Tools like get_user_collections and search_subjects accept pagination but the response format (e.g., does it return 'total' count?) is not declared in the schema, forcing LLMs to infer structure.
NSFW filter and career filter parameters accept complex inputs (boolean, array of strings) but validation is not documented. LLMs may pass invalid values (e.g., 'yes' instead of true for nsfw_filter) without clear error messages.
Enum values documented in descriptions but not as formal schema constraints. E.g., collection_type is described as 1-5 but not as a constrained enum in the input schema, allowing invalid values like 6 or 0 to be passed.