Bangumi TV MCP Service
This server provides programmatic access to Bangumi TV's comprehensive media database through 55 MCP tools and 3 workflow prompts, enabling AI assistants to interact with anime, manga, music, game, and real-world media data.
Core Capabilities:
Search and Browse Media:
Search subjects by keyword with type filtering (Book/Anime/Music/Game/Real) and sorting options
Browse subjects by category with advanced filters (year, month, platform, series)
Get weekly broadcast schedules for currently airing anime
Detailed Information Access:
Retrieve comprehensive subject details including metadata, ratings, images, and descriptions
Access episode lists with type filtering (MainStory, SP, OP, ED, PV, MAD, Other)
Get character details including appearances and associated voice actors/creators
Retrieve person/company profiles including filmography and character roles
Discover relationships between subjects (sequels, prequels, adaptations, spin-offs)
Cross-Reference Features:
Link subjects to their characters, staff, and cast
Connect characters with their voice actors and creators
Associate persons with their works and character roles
User Features:
Access public user profiles and avatars
View and manage collections for subjects, episodes, characters, and persons (requires authentication)
Access revision histories for subjects, characters, persons, and episodes
Index Management:
Create, update, and manage custom content indices (requires authentication)
Add/remove subjects from indices
Pre-built Workflows:
Search anime by keyword with AI summaries
Get comprehensive subject information including details, persons, characters, and relations
Search for characters and identify their voice actors
Authentication Features (with BANGUMI_TOKEN):
Access authenticated user information and R18 content
Perform write operations (create, update, delete)
Manage personal collections and favorites
Technical Features:
Full OpenAPI 3.0.3 specification resource
Type-safe Python implementation with async support
Pagination support for all list operations
Modular architecture following MCP best practices
The MCP server was fully generated by Google Gemini, as acknowledged in the README.
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., "@Bangumi TV MCP Service search for anime about a girl who can see spirits"
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.
Bangumi MCP Server
English
A Model Context Protocol (MCP) server that provides programmatic access to the Bangumi TV API, enabling AI assistants like Claude to interact with comprehensive anime, manga, music, game, and real-world media data.
Features
55 MCP Tools: Complete coverage of Bangumi API endpoints
3 Workflow Prompts: Pre-built multi-step workflows for common tasks
1 Resource: Full OpenAPI specification for API documentation
Modular Architecture: Clean, maintainable codebase following MCP best practices
Type-Safe: Full Python type hints and enum definitions
Async Support: Non-blocking API calls using httpx
Quick Start
Prerequisites
Python 3.10 or higher
uv package manager (recommended) or pip
Installation
# Clone the repository
git clone https://github.com/Ukenn2112/BangumiMCP.git
cd BangumiMCP
# Create and activate virtual environment
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
uv pip install -e .Configuration for Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"bangumi-tv": {
"command": "uv",
"args": [
"--directory",
"/path/to/BangumiMCP",
"run",
"main.py"
],
"env": {
"BANGUMI_TOKEN": "your_token_here"
}
}
}
}Note: BANGUMI_TOKEN is optional but required for:
Authenticated operations (collections, personal data)
R18 content access
Write operations (create, update, delete)
Get your token at: https://next.bgm.tv/demo/access-token
Project Architecture
BangumiMCP follows a modular architecture designed for maintainability and scalability:
BangumiMCP/
├── main.py # Server initialization (44 lines)
├── src/
│ ├── config.py # Configuration constants
│ ├── enums.py # API enum definitions (8 types)
│ ├── utils/
│ │ ├── api_client.py # HTTP client & error handling
│ │ └── formatters.py # Data formatting utilities
│ ├── resources/
│ │ └── openapi_resource.py # OpenAPI specification resource
│ ├── tools/ # 55 MCP tools organized by domain
│ │ ├── subject_tools.py # Subjects & episodes (10 tools)
│ │ ├── character_tools.py # Characters (7 tools)
│ │ ├── person_tools.py # Persons & companies (7 tools)
│ │ ├── user_tools.py # User information (3 tools)
│ │ ├── collection_tools.py # Collections (11 tools)
│ │ ├── revision_tools.py # Edit history (8 tools)
│ │ └── index_tools.py # Indices/directories (9 tools)
│ └── prompts/
│ └── workflow_prompts.py # Composite prompts (3)
├── bangumi-tv-api.json # OpenAPI 3.0.3 specification
└── pyproject.toml # Project metadataAvailable Tools
Subjects & Episodes (10 tools)
get_daily_broadcast- Weekly broadcast schedulesearch_subjects- Full-text search with filtersbrowse_subjects- Category-based browsingget_subject_details- Detailed subject informationget_subject_image- Subject image URLget_subject_persons- Related creators/staffget_subject_characters- Related charactersget_subject_relations- Related subjectsget_episodes- Episode listget_episode_details- Episode information
Characters (7 tools)
search_characters- Character searchget_character_details- Character informationget_character_image- Character image URLget_character_subjects- Subjects featuring characterget_character_persons- Voice actors & creatorscollect_character- Add to favorites ⚠️ Requires authuncollect_character- Remove from favorites ⚠️ Requires auth
Persons (7 tools)
search_persons- Search creators/actorsget_person_details- Person informationget_person_image- Person image URLget_person_subjects- Works by personget_person_characters- Characters associatedcollect_person- Add to favorites ⚠️ Requires authuncollect_person- Remove from favorites ⚠️ Requires auth
Users (3 tools)
get_user_info- Public user profileget_user_avatar- User avatar URLget_current_user- Authenticated user info ⚠️ Requires auth
Collections (11 tools)
get_user_collections- User's subject collectionsget_user_subject_collection- Subject collection statusupdate_subject_collection- Update subject status ⚠️ Requires authget_user_episode_collection- Episode watch list ⚠️ Requires authupdate_episode_collection- Batch update episodes ⚠️ Requires authget_single_episode_collection- Single episode status ⚠️ Requires authupdate_single_episode_collection- Update single episode ⚠️ Requires authget_user_character_collections- Character collectionsget_user_character_collection- Character collection statusget_user_person_collections- Person collectionsget_user_person_collection- Person collection status
Revisions (8 tools)
get_person_revisions- Person edit historyget_person_revision- Single person edit detailget_character_revisions- Character edit historyget_character_revision- Single character edit detailget_subject_revisions- Subject edit historyget_subject_revision- Single subject edit detailget_episode_revisions- Episode edit historyget_episode_revision- Single episode edit detail
Indices (9 tools)
create_index- Create new index ⚠️ Requires authget_index- Index detailsupdate_index- Update index info ⚠️ Requires authget_index_subjects- Subjects in indexadd_subject_to_index- Add subject ⚠️ Requires authupdate_index_subject- Update subject info ⚠️ Requires authremove_subject_from_index- Remove subject ⚠️ Requires authcollect_index- Add index to collection ⚠️ Requires authuncollect_index- Remove index from collection ⚠️ Requires auth
Workflow Prompts
Pre-built multi-step workflows for common tasks:
search_and_summarize_anime - Search anime by keyword and get AI summary
get_subject_full_info - Get comprehensive subject information (details, persons, characters, relations)
find_voice_actor - Search character and identify voice actors
Development
Adding New Tools
Identify the appropriate category (subject, character, person, etc.)
Add the tool function to the corresponding file in
src/tools/Register the tool in the module's
register()functionUpdate this README with the new tool count
Testing
# Test imports
python -c "from src.config import BANGUMI_TOKEN; print('OK')"
python -c "from src.tools import subject_tools; print('OK')"
# Run the server
uv run main.pyCode Structure
Dependency Hierarchy (no circular imports):
Level 0:
config.py,enums.py(no dependencies)Level 1:
utils/(depends on config & enums)Level 2:
resources/,tools/,prompts/(depend on utils)Level 3:
main.py(orchestrates everything)
Import Guidelines:
Use relative imports within
src/package (e.g.,from ..config import)Import from specific modules, not package level
Follow the dependency hierarchy to avoid circular imports
Environment Variables
Variable | Required | Description |
| No | Bangumi Access Token for authenticated operations and R18 content |
License
This project is built on the Bangumi API documentation and follows its terms of service.
Related Projects
BangumiMCP-ts - TypeScript version of BangumiMCP
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
Related MCP server: Bangumi MCP
中文
一个基于 Model Context Protocol (MCP) 的服务器,为 Bangumi TV API 提供程序化访问接口,使 Claude 等 AI 助手能够与海量的动画、漫画、音乐、游戏和真人影视数据进行交互。
功能特性
55 个 MCP 工具:完整覆盖 Bangumi API 端点
3 个工作流提示:预构建的多步骤工作流,用于常见任务
1 个资源:完整的 OpenAPI 规范文档
模块化架构:清晰、可维护的代码库,遵循 MCP 最佳实践
类型安全:完整的 Python 类型提示和枚举定义
异步支持:使用 httpx 的非阻塞 API 调用
快速开始
前置要求
Python 3.10 或更高版本
uv 包管理器(推荐)或 pip
安装
# 克隆仓库
git clone https://github.com/Ukenn2112/BangumiMCP.git
cd BangumiMCP
# 创建并激活虚拟环境
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 安装依赖
uv pip install -e .Claude Desktop 配置
在 claude_desktop_config.json 中添加:
{
"mcpServers": {
"bangumi-tv": {
"command": "uv",
"args": [
"--directory",
"/path/to/BangumiMCP",
"run",
"main.py"
],
"env": {
"BANGUMI_TOKEN": "your_token_here"
}
}
}
}注意:BANGUMI_TOKEN 是可选的,但以下操作需要:
认证操作(收藏、个人数据)
访问 R18 内容
写操作(创建、更新、删除)
获取令牌:https://next.bgm.tv/demo/access-token
项目架构
BangumiMCP 采用模块化架构,便于维护和扩展:
BangumiMCP/
├── main.py # 服务器初始化(44 行)
├── src/
│ ├── config.py # 配置常量
│ ├── enums.py # API 枚举定义(8 种类型)
│ ├── utils/
│ │ ├── api_client.py # HTTP 客户端和错误处理
│ │ └── formatters.py # 数据格式化工具
│ ├── resources/
│ │ └── openapi_resource.py # OpenAPI 规范资源
│ ├── tools/ # 55 个 MCP 工具,按领域组织
│ │ ├── subject_tools.py # 条目和章节(10 个工具)
│ │ ├── character_tools.py # 角色(7 个工具)
│ │ ├── person_tools.py # 人物和公司(7 个工具)
│ │ ├── user_tools.py # 用户信息(3 个工具)
│ │ ├── collection_tools.py # 收藏(11 个工具)
│ │ ├── revision_tools.py # 编辑历史(8 个工具)
│ │ └── index_tools.py # 目录(9 个工具)
│ └── prompts/
│ └── workflow_prompts.py # 组合提示(3 个)
├── bangumi-tv-api.json # OpenAPI 3.0.3 规范
└── pyproject.toml # 项目元数据可用工具
条目和章节(10 个工具)
get_daily_broadcast- 每周放送时间表search_subjects- 全文搜索,支持过滤browse_subjects- 按分类浏览get_subject_details- 详细条目信息get_subject_image- 条目图片 URLget_subject_persons- 相关创作者/制作人员get_subject_characters- 相关角色get_subject_relations- 相关条目get_episodes- 章节列表get_episode_details- 章节信息
角色(7 个工具)
search_characters- 角色搜索get_character_details- 角色信息get_character_image- 角色图片 URLget_character_subjects- 角色出现的条目get_character_persons- 声优和创作者collect_character- 添加到收藏 ⚠️ 需要认证uncollect_character- 从收藏中移除 ⚠️ 需要认证
人物(7 个工具)
search_persons- 搜索创作者/演员get_person_details- 人物信息get_person_image- 人物图片 URLget_person_subjects- 人物参与的作品get_person_characters- 关联的角色collect_person- 添加到收藏 ⚠️ 需要认证uncollect_person- 从收藏中移除 ⚠️ 需要认证
用户(3 个工具)
get_user_info- 公开用户资料get_user_avatar- 用户头像 URLget_current_user- 当前认证用户信息 ⚠️ 需要认证
收藏(11 个工具)
get_user_collections- 用户的条目收藏get_user_subject_collection- 条目收藏状态update_subject_collection- 更新条目状态 ⚠️ 需要认证get_user_episode_collection- 章节观看列表 ⚠️ 需要认证update_episode_collection- 批量更新章节 ⚠️ 需要认证get_single_episode_collection- 单个章节状态 ⚠️ 需要认证update_single_episode_collection- 更新单个章节 ⚠️ 需要认证get_user_character_collections- 角色收藏get_user_character_collection- 角色收藏状态get_user_person_collections- 人物收藏get_user_person_collection- 人物收藏状态
修订历史(8 个工具)
get_person_revisions- 人物编辑历史get_person_revision- 单个人物编辑详情get_character_revisions- 角色编辑历史get_character_revision- 单个角色编辑详情get_subject_revisions- 条目编辑历史get_subject_revision- 单个条目编辑详情get_episode_revisions- 章节编辑历史get_episode_revision- 单个章节编辑详情
目录(9 个工具)
create_index- 创建新目录 ⚠️ 需要认证get_index- 目录详情update_index- 更新目录信息 ⚠️ 需要认证get_index_subjects- 目录中的条目add_subject_to_index- 添加条目 ⚠️ 需要认证update_index_subject- 更新条目信息 ⚠️ 需要认证remove_subject_from_index- 移除条目 ⚠️ 需要认证collect_index- 收藏目录 ⚠️ 需要认证uncollect_index- 取消收藏目录 ⚠️ 需要认证
工作流提示
预构建的多步骤工作流,用于常见任务:
search_and_summarize_anime - 按关键字搜索动画并获取 AI 摘要
get_subject_full_info - 获取全面的条目信息(详情、人物、角色、关联)
find_voice_actor - 搜索角色并识别声优
开发
添加新工具
确定合适的类别(条目、角色、人物等)
将工具函数添加到
src/tools/中相应的文件在模块的
register()函数中注册工具更新此 README 中的工具数量
测试
# 测试导入
python -c "from src.config import BANGUMI_TOKEN; print('OK')"
python -c "from src.tools import subject_tools; print('OK')"
# 运行服务器
uv run main.py代码结构
依赖层次结构(无循环导入):
Level 0:
config.py,enums.py(无依赖)Level 1:
utils/(依赖 config 和 enums)Level 2:
resources/,tools/,prompts/(依赖 utils)Level 3:
main.py(协调所有模块)
导入指南:
在
src/包内使用相对导入(例如from ..config import)从特定模块导入,而不是包级别
遵循依赖层次结构以避免循环导入
环境变量
变量 | 必填 | 说明 |
| 否 | Bangumi 访问令牌,用于认证操作和访问 R18 内容 |
许可证
此项目基于 Bangumi API 文档构建,并遵循其服务条款。
相关项目
BangumiMCP-ts - BangumiMCP 的 TypeScript 版本
贡献
欢迎贡献!请随时提交问题或拉取请求。
致谢
此项目基于 Bangumi API 文档构建。
Available Tools
17 toolsbrowse_subjectsA
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)
Args:
subject_type: Required filter by subject type (integer value from SubjectType enum).
cat: Optional filter by subject category (integer value from category enums).
series: Optional filter for books (type=1). True for series main entry.
platform: Optional filter for games (type=4). E.g. 'Web', 'PC', 'PS4'.
sort: Optional sort order ('date' or 'rank').
year: Optional filter by year.
month: Optional filter by month (1-12).
limit: Pagination limit. Max 50. Defaults to 30.
offset: Pagination offset. Defaults to 0.
Returns:
Formatted list of subjects or an error message.
Inputs: subject_type (required), cat, limit, month, +5 more.
get_character_detailsB
Get details of a specific character.
Args:
character_id: The ID of the character.
Returns:
Formatted character details or an error message.
Inputs: character_id (required).
get_character_personsB
List persons (e.g., voice actors) related to a character.
Args:
character_id: The ID of the character.
Returns:
Formatted list of related persons or an error message.
Inputs: character_id (required).
get_character_subjectsB
List subjects (e.g., anime, games) where a character appears.
Args:
character_id: The ID of the character.
Returns:
Formatted list of related subjects or an error message.
Inputs: character_id (required).
get_daily_broadcastB
Get the daily broadcast schedule for the current week on Bangumi.
Returns:
The broadcast schedule grouped by day of the week, or an error message.
Inputs: no named parameters.
get_episode_detailsC
Get details of a specific episode.
Args:
episode_id: The ID of the episode.
Returns:
Formatted episode details or an error message.
Inputs: episode_id (required).
get_episodesA
List episodes for a subject.
Supported Episode Types (integer enum):
0: MainStory, 1: SP, 2: OP, 3: ED, 4: PV, 5: MAD, 6: Other
Args:
subject_id: The ID of the subject.
episode_type: Optional filter by episode type (integer value from EpType enum).
limit: Pagination limit. Max 200. Defaults to 100.
offset: Pagination offset. Defaults to 0.
Returns:
Formatted list of episodes or an error message.
Inputs: subject_id (required), episode_type, limit, offset.
get_person_charactersA
List characters voiced or portrayed by a person (e.g., voice actor, actor).
Args:
person_id: The ID of the person.
Returns:
Formatted list of related characters or an error message.
Inputs: person_id (required).
get_person_detailsC
Get details of a specific person or company.
Args:
person_id: The ID of the person/company.
Returns:
Formatted person details or an error message.
Inputs: person_id (required).
get_person_subjectsB
List subjects (e.g., anime, games) a person is related to (e.g., worked on).
Args:
person_id: The ID of the person.
Returns:
Formatted list of related subjects or an error message.
Inputs: person_id (required).
get_subject_charactersC
List characters related to a subject.
Args:
subject_id: The ID of the subject.
Returns:
Formatted list of related characters or an error message.
Inputs: subject_id (required).
get_subject_detailsC
Get details of a specific subject (e.g., anime, book, game).
Args:
subject_id: The ID of the subject.
Returns:
Formatted subject details or an error message.
Inputs: subject_id (required).
get_subject_personsB
List persons (staff, cast) related to a subject.
Args:
subject_id: The ID of the subject.
Returns:
Formatted list of related persons or an error message.
Inputs: subject_id (required).
get_subject_relationsC
List related subjects (sequels, prequels, adaptations) for a subject.
Args:
subject_id: The ID of the subject.
Returns:
Formatted list of related subjects or an error message.
Inputs: subject_id (required).
search_charactersA
Search for characters on Bangumi.
Supported Character Types (integer enum in result):
1: Character, 2: Mechanic, 3: Ship, 4: Organization
Args:
keyword: The search keyword.
limit: Pagination limit. Defaults to 30.
offset: Pagination offset. Defaults to 0.
nsfw_filter: Optional NSFW filter (boolean). Set to True to include, False to exclude. Requires authorization for non-default behavior.
Returns:
Formatted search results or an error message.
Inputs: keyword (required), limit, nsfw_filter, offset.
search_personsA
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'
Args:
keyword: The search keyword.
limit: Pagination limit. Defaults to 30.
offset: Pagination offset. Defaults to 0.
career_filter: Optional filter by person career (list of strings from PersonCareer enum).
Returns:
Formatted search results or an error message.
Inputs: keyword (required), career_filter, limit, offset.
search_subjectsB
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'
Args:
keyword: The search keyword.
subject_type: Optional filter by subject type. Use integer values (1, 2, 3, 4, 6).
sort: Optional sort order. Defaults to 'match'.
limit: Pagination limit. Max 50. Defaults to 30.
offset: Pagination offset. Defaults to 0.
Returns:
Formatted search results or an error message.
Inputs: keyword (required), limit, offset, sort, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Every tool has a clearly distinct purpose with no ambiguity. Tools are organized by entity type (subject, character, person, episode) and action (browse, get, search), making it easy to differentiate between them. For example, get_subject_details retrieves details, while get_subject_characters lists related characters, avoiding overlap.
Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly. All tools start with 'browse_', 'get_', or 'search_', followed by the entity name (e.g., 'subjects', 'character_details'), making them predictable and readable. There are no deviations in naming conventions.
With 17 tools, the count is slightly high but reasonable for a comprehensive media database server covering subjects, characters, persons, and episodes. It includes essential operations like browsing, searching, and retrieving details, though it might feel a bit heavy compared to simpler APIs. The tools are well-scoped, with each serving a distinct function.
The tool surface provides complete coverage for the Bangumi TV domain, including CRUD-like operations for browsing, searching, and retrieving details across all entity types (subjects, characters, persons, episodes). It supports relationships between entities (e.g., get_subject_characters) and includes specialized tools like get_daily_broadcast, leaving no obvious gaps for agent workflows.
Maintenance
Related MCP Connectors
AniList MCP — wraps AniList GraphQL API (free, no auth)
Jikan MCP — wraps the Jikan v4 API (anime/manga data, free, no auth)
AnimeQuotes MCP — wraps animechan.io (free, no auth)
Access and interact with anime and manga data seamlessly. Retrieve detailed information about your…
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAn MCP server that enables users to search Bilibili videos, access trending rankings, and retrieve detailed information about videos, content creators, and anime schedules. It allows AI applications to interact directly with Bilibili content via simple API interfaces.110 npm198MIT
- AlicenseBqualityCmaintenanceEnables searching and retrieving information about anime, manga, and related content via the Bangumi API.5519MIT
- 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
- FlicenseNot gradedqualityCmaintenanceMCP server for Bangumi that queries collections, marks anime as watching/watched, and updates per-episode progress via official API, with secure token handling.-