MCP Service

by Ukenn2112

22 stars
313 downloads
Not rated
GitHub

About

BangumiMCP is 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.

Details

Author
Ukenn2112
GitHub stars
22
Downloads
313
Categories
Other

- 55 MCP tools covering all Bangumi API endpoints
- 3 pre-built workflow prompts for common tasks
- 1 OpenAPI specification resource for documentation
- Modular architecture with clean, maintainable code
- Full Python type hints and enum definitions
- Async support using httpx for non-blocking calls

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name MCP Service
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install with Python 3.10+ and the uv package manager (or pip). Clone the repository, create a virtual environment, install dependencies, then configure the server in Claude Desktop by adding an entry to claude_desktop_config.json with the command uv run main.py. Optionally, set the BANGUMI_TOKEN environment variable for authenticated operations.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "mcp service": {
            "BangumiMCP": {
                "command": "uv",
                "args": [
                    "venv"
                ]
            }
        }
    }
}

McpServers

{
    "BangumiMCP": {
        "command": "uv",
        "args": [
            "venv"
        ]
    }
}

Bangumi MCP Server

English | 中文

---

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 metadata

Available Tools

Subjects & Episodes (10 tools)

- get_daily_broadcast - Weekly broadcast schedule
- search_subjects - Full-text search with filters
- browse_subjects - Category-based browsing
- get_subject_details - Detailed subject information
- get_subject_image - Subject image URL
- get_subject_persons - Related creators/staff
- get_subject_characters - Related characters
- get_subject_relations - Related subjects
- get_episodes - Episode list
- get_episode_details - Episode information

Characters (7 tools)

- search_characters - Character search
- get_character_details - Character information
- get_character_image - Character image URL
- get_character_subjects - Subjects featuring character
- get_character_persons - Voice actors & creators
- collect_character - Add to favorites ⚠️ Requires auth
- uncollect_character - Remove from favorites ⚠️ Requires auth

Persons (7 tools)

- search_persons - Search creators/actors
- get_person_details - Person information
- get_person_image - Person image URL
- get_person_subjects - Works by person
- get_person_characters - Characters associated
- collect_person - Add to favorites ⚠️ Requires auth
- uncollect_person - Remove from favorites ⚠️ Requires auth

Users (3 tools)

- get_user_info - Public user profile
- get_user_avatar - User avatar URL
- get_current_user - Authenticated user info ⚠️ Requires auth

Collections (11 tools)

- get_user_collections - User's subject collections
- get_user_subject_collection - Subject collection status
- update_subject_collection - Update subject status ⚠️ Requires auth
- get_user_episode_collection - Episode watch list ⚠️ Requires auth
- update_episode_collection - Batch update episodes ⚠️ Requires auth
- get_single_episode_collection - Single episode status ⚠️ Requires auth
- update_single_episode_collection - Update single episode ⚠️ Requires auth
- get_user_character_collections - Character collections
- get_user_character_collection - Character collection status
- get_user_person_collections - Person collections
- get_user_person_collection - Person collection status

Revisions (8 tools)

- get_person_revisions - Person edit history
- get_person_revision - Single person edit detail
- get_character_revisions - Character edit history
- get_character_revision - Single character edit detail
- get_subject_revisions - Subject edit history
- get_subject_revision - Single subject edit detail
- get_episode_revisions - Episode edit history
- get_episode_revision - Single episode edit detail

Indices (9 tools)

- create_index - Create new index ⚠️ Requires auth
- get_index - Index details
- update_index - Update index info ⚠️ Requires auth
- get_index_subjects - Subjects in index
- add_subject_to_index - Add subject ⚠️ Requires auth
- update_index_subject - Update subject info ⚠️ Requires auth
- remove_subject_from_index - Remove subject ⚠️ Requires auth
- collect_index - Add index to collection ⚠️ Requires auth
- uncollect_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

1. Identify the appropriate category (subject, character, person, etc.)
2. Add the tool function to the corresponding file in src/tools/
3. Register the tool in the module's register() function
4. Update 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.py

Code 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 |
|----------|----------|-------------|
| BANGUMI_TOKEN | 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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.