bangumi-mcp
Integrates with AniList's GraphQL API to retrieve scheduled airing times for anime, enabling proactive push notifications for new episodes of currently watching shows. Requires an AniList Access Token for authentication.
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-mcpshow my currently watching anime on Bangumi"
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
Roxy Plugin API v2 plugin that uses Bangumi's official API to paginate through collection lists, query the exact progress of a single entry, set "watching/watched", update animation watch progress episode by episode via the chapter endpoint, and proactively remind users of new episodes of anime they are watching based on AniList's scheduled airing time.
Security Boundaries
Only connects to
https://api.bgm.tvandhttps://graphql.anilist.co, using a compliant User-Agent per official requirements.Bangumi Access Token and AniList Access Token are read only from
config.local.tomlin Roxy plugin-data; never written to repositories, logs, or tool results.All remote writes first generate a preview containing the work name and target status/episode count; confirmation is recorded for one-time use and expires after 10 minutes.
When a full collection query or cumulative reads reach 100 entries, the read-only query scope and estimated request count are displayed first, waiting for word-for-word confirmation after the current round.
Animation progress uses
PATCH /v0/users/-/collections/{subject_id}/episodeswith explicit episode IDs, not the item-levelep_statusto modify anime episode counts.
Related MCP server: Anitabi MCP Server
Installation
Roxy only installs committed Git snapshots. Execute from the Roxy repository:
.venv/bin/python main.py plugin-install \
--source https://github.com/roxy-plugins/bangumi-mcp.git \
--marketplace githubThe installation output indicates the data directory, which by default is:
<workspace>/plugin-data/bangumi-github/After logging into Bangumi, go to the Bangumi Access Token page to generate a personal token. This token is the account's API access credential, not the Bangumi password.
Create a config.local.toml in that directory with permissions 0600:
access_token = "<在此填写 Bangumi Access Token>"
user_agent = "roxy-plugins/bangumi-mcp/0.5.0 (https://github.com/roxy-plugins/bangumi-mcp)"
[anime_push]
enabled = true
notify_before_minutes = 0
display_timezone = "Asia/Shanghai"
anilist_token = "<在此填写 AniList Access Token>"
# 只有自动匹配失败时才需要配置;左侧是 Bangumi subject ID。
[anime_push.media_id_overrides]
"501963" = 123456If you have an older version installed and explicitly set user_agent in your local configuration, change it to the new identifier above after updating the plugin. Do not put tokens in command-line arguments or chat messages. After configuration, check:
.venv/bin/python main.py plugin-doctor bangumi@githubA running Roxy watches for configuration changes and publishes a new committed generation; new sessions load the bangumi Skill and MCP tools.
Airing Reminders
Reminders are based on AniList
nextAiringEpisode.airingAt, with precision normalized to the minute; it indicates scheduled airing, not the availability of streaming, subtitles, or raw sources.notify_before_minutes=0starts waiting from the scheduled airing time; can be set to an integer from0to1440to remind in advance.At the reminder moment, Roxy reads the event on the next proactive tick. Gate, Judge, session busyness, or channel state may delay the message by several minutes.
The plugin only processes anime marked as "watching" on Bangumi, and before generating a reminder, it confirms via the per-episode endpoint that the episode has not yet been marked as "watched".
AniList and Bangumi do not share a common stable ID. Automatic matching only accepts a single strict candidate; on failure, you can explicitly specify an AniList media ID in the
media_id_overridesfield of the private configuration.Enabling
anime_pushrequires configuring an AniList Access Token; it can only be written to the above plugin-data private file, not placed in command lines, conversations, or repositories.Cache, pending events, and ACKs are stored in
anime_updates.dbin the same plugin-data directory. Disablinganime_push.enableddoes not delete this database.
Design Documents
Development Verification
python -m pip install -r mcp/requirements.txt -r requirements-dev.txt
pytest
PYTHONPATH=/path/to/plugin-contracts \
python -m akashic_plugin_contracts check plugin.pyAll unit tests use fake HTTP sessions, do not access real Bangumi accounts, and do not require Access Token.
This server cannot be deployed
Maintenance
Related MCP Connectors
Access and interact with anime and manga data seamlessly. Retrieve detailed information about your…
Track Bilibili creators and get the latest updates on videos, dynamics, and articles. Fetch user p…
AniList MCP — wraps AniList GraphQL API (free, no auth)
Accurate anime-song (anison) database for AI-built playlists — export to Spotify/Apple/YT Music
Related MCP Servers
- FlicenseAqualityDmaintenanceProvides MCP access to the BangumiTV API, allowing users to retrieve and interact with anime, manga, music, and game information through natural language queries.1725-
- AlicenseAqualityDmaintenanceEnables users to search for anime information via the Bangumi API and discover corresponding real-world pilgrimage locations through the Anitabi API. It provides tools for retrieving anime metadata and detailed geographic coordinates for 'seichi junrei' locations.3AGPL 3.0
- AlicenseBqualityCmaintenanceEnables searching and retrieving information about anime, manga, and related content via the Bangumi API.5515MIT
- AlicenseAqualityAmaintenanceEnables searching and browsing anime/manga, characters, staff, and more on AniList without credentials, and with a one-time login allows managing personal lists, favorites, follows, and activity.4980 npm1MIT