这个MCP服务器提供了搜索和交互B站(哔哩哔哩)内容的功能,包括视频搜索、字幕获取和视频信息查询等。
现在同时提供两种服务:
- MCP 服务(默认
8000,SSE/stdio) - Flask REST API 服务(默认
8001)
- 搜索B站视频
- 获取视频字幕(自动生成的AI字幕)
- 查询视频详细信息
- 使用必剪API获取媒体文件的AI字幕
-
search_video
- 从B站搜索视频,支持按发布时间范围和排序方式筛选
- 输入:
keyword(string): 搜索关键词page(int, 可选): 页码,默认1page_size(int, 可选): 每页数量,默认20time_start(string, 可选): 发布时间起始,格式 YYYY-MM-DDtime_end(string, 可选): 发布时间截止,格式 YYYY-MM-DDorder_type(string, 可选): 排序方式,可选 totalrank(综合)/click(播放量)/pubdate(发布时间)/dm(弹幕)/stow(收藏)/scores(评论),默认 totalrank
-
get_video_subtitle
- 获取B站视频的字幕
- 输入:
bvid(string): 视频的BV号format(string, 可选): 字幕格式,可选 txt(纯文本,默认)/srt(带时间戳)/raw(原始时间戳数据)
-
get_video_info
- 获取B站视频的详细信息
- 输入:
bvid(string): 视频的BV号
-
get_media_subtitle
- 使用必剪API获取媒体文件的AI中文字幕
- 输入:
url(string): 媒体文件URLformat(string, 可选): 字幕格式,同上
-
send_comment
- 在B站资源下发送评论,支持顶级评论和回复评论
- 输入:
text(string): 评论内容oid(int): 目标资源ID(视频的aid,可通过 get_video_info 获取)type(string, 可选): 资源类型,可选 video/article/dynamic/audio,默认 videoroot(int, 可选): 根评论ID,0表示顶级评论parent(int, 可选): 父评论ID,0表示顶级评论
-
get_comments
- 获取B站资源的评论列表
- 输入:
oid(int): 目标资源ID(视频的aid)type(string, 可选): 资源类型,可选 video/article/dynamic/audio,默认 videopage_index(int, 可选): 页码,从1开始order(string, 可选): 排序方式,可选 time(按时间)/like(按点赞),默认 time
- 克隆仓库
- 安装依赖:
pip install -r requirements.txt - 设置环境变量(从B站官网cookie获取):
sessdata: B站SESSDATAbili_jct: B站bili_jctbuvid3: B站buvid3
- 启动服务器:
python server.py
如需同时启动 MCP + Flask REST API:
python run_servers.pyGET /api— 返回所有可用接口及其参数说明GET /healthGET /api/video/search?keyword=关键词&page=1&page_size=20&time_start=2024-01-01&time_end=2024-06-30&order_type=pubdateGET /api/video/info/<bvid>GET /api/video/pbp/<bvid>?page_index=0GET /api/video/subtitle/<bvid>?format=txtPOST /api/media/subtitle,JSON body:{ "url": "媒体地址", "format": "txt" }POST /api/comment/send,JSON body:{ "text": "评论内容", "oid": 视频aid, "type": "video", "root": 0, "parent": 0 }GET /api/comment/list/<oid>?type=video&page_index=1&order=time
要将此服务器与桌面应用集成,请在应用的服务器配置中添加以下内容:
{
"mcpServers": {
"bilibili-mcp": {
"command": "python",
"args": [
"{绝对路径}/server.py"
],
"env": {
"sessdata": "你的B站SESSDATA",
"bili_jct": "你的B站bili_jct",
"buvid3": "你的B站buvid3"
}
}
}
}- 安装依赖:
pip install -r requirements.txt - 启动服务器:
python server.py - 同时启动 MCP + Flask:
python run_servers.py
- mcp: MCP SDK
- bilibili-api-python: B站API Python库
- aiohttp: 异步HTTP客户端/服务器框架
- brotlicffi: Brotli 压缩解码支持(修复 aiohttp 3.13+ 与 B站 API 的
br内容编码兼容问题)
新增评论接口
- 新增
send_commentMCP 工具:支持在视频/文章/动态等资源下发送评论,支持顶级评论和回复评论 - 新增
get_commentsMCP 工具:获取资源的评论列表,支持分页和排序 - 新增 Flask REST API:
POST /api/comment/send和GET /api/comment/list/<oid>
修复 Brotli 解码错误
- 新增
brotlicffi依赖,修复 aiohttp 3.13+ 无法解码 B站返回的Content-Encoding: br响应的问题,影响所有工具(search_video、get_video_info、get_video_subtitle)
字幕获取优化(PR #1 by @Zhao-zzzzZ)
- 修复
get_video_subtitle:字幕列表获取改用.get()安全访问,避免视频无字幕时崩溃 - 修复 AI 字幕语言匹配条件,放宽为只需
lan == "ai-zh",兼容更多视频 - 异步化音频字幕获取:
get_audio_subtitle改为通过asyncio.to_thread包装为异步,避免阻塞事件循环 - 修复错误处理:
get_audio_subtitle将错误由返回值改为正确抛出APIError异常 - 修复
ResultRspSchema模型:result和remark字段改为可选,避免解析失败 - 补全
requirements.txt缺失的requests、pydantic、tabulate依赖 - 支持音频格式扩展至 mp4/m4s,改进音频 URL 选择策略
本项目采用MIT许可证。