MCP Service について
Bangumi MCP Server は Bangumi TV API へのプログラムからのアクセスを提供し、Claude などの AI アシスタントがアニメ、マンガ、音楽、ゲーム、実写作品のデータを照会できるようにします。作品、キャラクター、人物、ユーザー、コレクション、インデックスを扱います。
主な機能
- 01Bangumi API エンドポイントを網羅する 55 のツール
- 023 つの多段階ワークフロー用プロンプト
- 03OpenAPI 仕様のリソース
- 04httpx を用いた非同期 API 呼び出し
- 05認証付き操作のための任意のアクセストークン
活用シーン
- 01キーワードによるアニメ検索と結果の要約
- 02作品のキャラクターと声優の調査
- 03認証を用いたユーザーのコレクションと視聴進捗の管理
MCP 対応
MCP サーバーとして、Bangumi API のエンドポイントを MCP クライアント向けのツールとして公開し、プロンプトと OpenAPI リソースも提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Bangumi MCP サーバー
English
Bangumi TV API へのプログラムからのアクセスを提供する Model Context Protocol (MCP) サーバーです。Claude のような AI アシスタントが、アニメ、マンガ、音楽、ゲーム、および実世界のメディアに関する包括的なデータを扱えるようにします。
機能
- 55 個の MCP ツール: Bangumi API エンドポイントを完全にカバー
- 3 個のワークフロープロンプト: 一般的なタスク向けに構築済みのマルチステップワークフロー
- 1 個のリソース: API ドキュメント用の完全な OpenAPI 仕様
- モジュラーアーキテクチャ: MCP のベストプラクティスに従った、クリーンで保守しやすいコードベース
- 型安全: 完全な Python の型ヒントと列挙型定義
- 非同期サポート: httpx を使用したノンブロッキングな API 呼び出し
クイックスタート
前提条件
- Python 3.10 以上
- uv パッケージマネージャー (推奨) または pip
インストール
# 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 .
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 # 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
利用可能なツール
サブジェクトとエピソード (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 - キャラクターを検索し、声優を特定
開発
新しいツールの追加
- 適切なカテゴリ(subject、character、person など)を特定します
src/tools/内の対応するファイルにツール関数を追加します- モジュールの
register()関数にツールを登録します - 新しいツール数でこの README を更新します
テスト
# 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
コード構造
依存関係の階層(循環インポートなし):
- レベル 0:
config.py、enums.py(依存関係なし) - レベル 1:
utils/(config と enums に依存) - レベル 2:
resources/、tools/、prompts/(utils に依存) - レベル 3:
main.py(全体を統括)
インポートのガイドライン:
src/パッケージ内では相対インポートを使用します(例:from ..config import)- パッケージレベルではなく、特定のモジュールからインポートします
- 循環インポートを避けるため、依存関係の階層に従います
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
BANGUMI_TOKEN | いいえ | 認証操作および R18 コンテンツ向けの Bangumi アクセストークン |
ライセンス
このプロジェクトは Bangumi API ドキュメントに基づいて構築されており、その利用規約に従います。
関連プロジェクト
- BangumiMCP-ts - BangumiMCP の TypeScript 版
コントリビューション
コントリビューションを歓迎します!お気軽に issue や pull request を送信してください。
中文
一个基于 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_TOKEN | 否 | Bangumi 访问令牌,用于认证操作和访问 R18 内容 |
许可证
此项目基于 Bangumi API 文档构建,并遵循其服务条款。
相关项目
- BangumiMCP-ts - BangumiMCP 的 TypeScript 版本
贡献
欢迎贡献!请随时提交问题或拉取请求。
致谢
此项目基于 Bangumi API 文档构建。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。