Skip to main content
Glama
bilibili-agent-mcp
by Gsxcheng

bilibili-agent-mcp

让 AI Agent 直接使用 B 站的 MCP 服务。

非 Bilibili-Evolved 官方项目。功能参考并部分移植自 the1812/Bilibili-Evolved(MIT),在此致谢。

把 Bilibili-Evolved 里「能脱离浏览器页面独立运行」的功能移植成 MCP 服务,让 Claude / Cursor 等 AI 客户端可以直接调用:查视频、下视频、抓弹幕、拿字幕文字稿、看评论、搜索、热榜、UP 主信息、稍后再看 / 收藏 / 历史 / 动态。

版本 V0.1 · Node.js ≥ 18.17 · 本地 stdio / 远程 HTTP 两种模式 · 15 个工具 + 1 个提示词模板

为什么不是“直接把脚本包一层”

Bilibili-Evolved 是油猴脚本,运行在 B 站网页里,大部分组件是改 DOM / 改样式 / 改播放器行为。这类功能离开浏览器没有意义,AI 也调用不了。本项目只移植以数据和 B 站接口为核心的功能,并在服务端补上浏览器原本自动完成的部分(WBI 签名、buvid 风控 Cookie、Referer、ffmpeg 合并)。

Bilibili-Evolved 功能

MCP 工具

说明

BV 号转换、av 号链接

bili_resolve

识别链接 / BV / av / ep / ss / md / cv / UID / 直播间,展开 b23.tv 短链

展开完整简介、查看封面、视频元数据

bili_video_info

标题、完整简介、封面、UP 主、数据、标签、分 P、合集;番剧返回剧集与评分

下载视频(DASH,AVC/HEVC/AV1)

bili_video_streams

清晰度 / 编码列表与直链

下载视频 + 输出插件、批量下载、下载音频、查看封面

bili_download / bili_download_status

后台任务;ffmpeg 自动合并并写入章节;可附带封面 / 弹幕 / 字幕 / 元数据

下载弹幕、弹幕转换器(XML→ASS)

bili_danmaku

stats 统计高频弹幕与高能时间点、lines 带时间戳文本、ass/xml/json 存文件

下载字幕

bili_subtitles

文字稿(最适合 AI 总结)、SRT、ASS、JSON

保存视频元数据(ffmetadata / OGM 章节)

bili_chapters

UP 主看点章节;番剧 OP/ED 转章节

评论区增强

bili_comments

热门 / 最新、置顶、IP 属地、楼中楼,可翻页

搜索栏 / Launch Bar 搜索

bili_search

视频、用户、番剧、影视、直播间、专栏

热搜、排行

bili_hot

热搜词、综合热门、分区排行、每周必看

UID 搜索、查看头像

bili_user

资料、粉丝、获赞、认证、最近投稿

直播相关

bili_live_room

标题、开播状态、人气、分区

稍后再看、收藏、历史、动态

bili_account

需登录 Cookie,只读

稍后再看添加 / 移除

bili_watch_later_edit

写操作,默认关闭

—

提示词 summarize_bilibili_video

一键「总结这个视频」:信息 + 字幕 + 章节 + 弹幕反应

没有移植的(依赖网页 DOM 或纯视觉):夜间模式、自定义导航栏、播放器定位 / 快捷键 / 手势、宽屏、去广告、样式调整、直播礼物框隐藏等。

Related MCP server: Bilibili MCP Server

安装

git clone https://github.com/Gsxcheng/Bilibili-Agent-mcp.git bilibili-agent-mcp
cd bilibili-agent-mcp
npm install          # 会自动编译到 dist/
npm test             # 可选:36 个离线测试

想要下载后自动合并音视频,请安装 ffmpeg 并确保在 PATH 中(或设置 BILIBILI_FFMPEG)。

接入 AI 客户端

两种方式:

方式

适用客户端

怎么接

本地 stdio

Claude Desktop、Claude Code、Cursor 等能启动本地程序的客户端

在客户端配置里写启动命令(见下)

远程 HTTP

Claude 网页版 / 手机 App 的连接器、ChatGPT 网页版 Developer mode

npm run start:http + Cloudflare Tunnel,详见 部署说明

本地 stdio

下面的 /绝对路径/bilibili-agent-mcp 换成你本机路径(Windows 用 C:\\path\\to\\... 形式)。

Claude Desktop(设置 → 开发者 → 编辑配置,claude_desktop_config.json):

{
  "mcpServers": {
    "bilibili": {
      "command": "node",
      "args": ["/绝对路径/bilibili-agent-mcp/dist/index.js"],
      "env": {
        "BILIBILI_COOKIE": "SESSDATA=...; bili_jct=...; buvid3=...",
        "BILIBILI_DOWNLOAD_DIR": "/Users/你/Downloads/bilibili"
      }
    }
  }
}

Claude Code:

claude mcp add bilibili -e BILIBILI_COOKIE="SESSDATA=...; bili_jct=..." -- node /绝对路径/bilibili-agent-mcp/dist/index.js

Cursor(~/.cursor/mcp.json):与 Claude Desktop 相同的 mcpServers 结构。

配置后重启客户端,直接对 AI 说:「总结一下 https://b23.tv/xxxx」「把这个视频 1080P 下载下来并带上弹幕」「这期视频观众在哪几分钟最激动?」。

远程 HTTP(Claude / ChatGPT 网页版连接器)

cp .env.example .env     # 可选:填 Cookie 等配置
npm run start:http       # 启动后会打印带访问密钥的连接器地址
cloudflared tunnel --url http://127.0.0.1:8787   # 临时隧道,先跑通用

把 https://<隧道域名>/mcp/<访问密钥> 填到 Claude 的 Customize → Connectors → Add custom connector,或 ChatGPT 的 Settings → Apps → Developer mode → Create app。固定域名、开机自启、常见问题见 docs/DEPLOY-CLOUDFLARE.md。

远程模式要点:访问密钥自动生成并持久保存(~/.bilibili-agent-mcp/token),密钥不对一律返回 404;默认只监听 127.0.0.1;返回普通 JSON(不用 SSE),兼容 Cloudflare 临时隧道;生成的文件会附带受密钥保护的下载链接。

环境变量

变量

作用

默认

BILIBILI_COOKIE

浏览器里完整 Cookie 字符串(推荐)

空(游客)

BILIBILI_SESSDATA / BILIBILI_BILI_JCT

只填这两项也可以

空

BILIBILI_DOWNLOAD_DIR

下载与导出目录

~/Downloads/bilibili

BILIBILI_FFMPEG

ffmpeg 路径

ffmpeg

BILIBILI_ALLOW_WRITE

true 才开放会修改账号的工具

关闭

BILIBILI_USER_AGENT

自定义 UA

Chrome 130

BILIBILI_MCP_TOKEN

远程模式访问密钥(≥16 位)

自动生成

BILIBILI_MCP_PORT / BILIBILI_MCP_HOST

远程模式监听端口 / 地址

8787 / 127.0.0.1

BILIBILI_MCP_PUBLIC_URL

远程模式对外地址(生成下载链接用)

从请求头识别

以上变量都可以写在 .env 里(项目根目录或 ~/.bilibili-agent-mcp/.env),参考 .env.example。系统环境变量优先。

不配 Cookie 能用什么:视频信息、480P 以下流与下载、弹幕、评论、搜索、热榜、用户、直播间、章节。 需要 Cookie 的:720P/1080P 及以上(部分需大会员)、AI 字幕、稍后再看 / 收藏 / 历史 / 动态。

获取 Cookie:浏览器登录 bilibili.com → F12 → 应用(Application) → Cookie → https://www.bilibili.com,复制 SESSDATA、bili_jct、buvid3。

安全设计

  • Cookie 只发往 *.bilibili.com / b23.tv,不会发给视频 CDN(bilivideo.com、hdslb.com)或其他域名。

  • 修改账号数据的工具默认禁用,需显式设置 BILIBILI_ALLOW_WRITE=true,且工具带 destructiveHint 标注,客户端会提示确认。

  • 本服务只读写 BILIBILI_DOWNLOAD_DIR 下的文件;远程模式的文件下载接口同样需要访问密钥,且只能访问该目录。

  • 远程模式的连接器地址等同于密码,请勿外泄;更换方法见部署说明。

  • SESSDATA 等同于登录态,请勿把含 Cookie 的配置文件提交到 Git 或分享给他人;Cookie 过期后重新复制即可。

验证情况(V0.1)

项目

状态

WBI 签名、av⇄BV 算法

公开参考向量 + 5 个线上真实 av/BV 对比通过

弹幕 protobuf 解码与 ASS 转换

用线上 seg.so / dm/web/view 真实二进制数据解码通过

wbi/view、wbi/playurl、player/wbi/v2、reply/wbi/main、wbi/search/type、热搜、排行、每周必看、用户卡片、直播间、番剧季信息、buvid 获取

2026-10 线上请求,返回结构与代码一致

发现并修复

未签名的 /x/web-interface/view 现在会被返回 HTTP 412,已改用 wbi/view 并保留回退

MCP 协议、15 个工具、后台下载、ffmpeg 合并 + 章节写入、备用 CDN 回退、Cookie 隔离

26 个离线测试(真实 MCP Client + 模拟 B 站后端 + 真实 ffmpeg)

远程 HTTP 模式:密钥校验、Bearer 头、JSON 响应、文件下载链接、路径穿越防护、CLI 启动

10 个离线测试(真实 Streamable HTTP 客户端)

经 Cloudflare Tunnel 实际接入 Claude / ChatGPT

UNVERIFIED:开发环境无法建立隧道,需在你自己电脑上按部署说明验证

从 CDN 实际下载媒体、登录态接口(稍后再看 / 收藏 / 历史 / 动态 / AI 字幕 / 写操作)

UNVERIFIED:开发环境无法直连 B 站 CDN,且未使用登录账号测试

已知限制 / 路线图

  • B 站风控变化频繁;遇到 -352 / -412 时,配置完整 Cookie(含 buvid3)通常能解决。

  • 弹幕 ASS 的文字宽度是估算值(原脚本在浏览器里用 canvas 精确测量),极少数情况下滚动弹幕间距略有差异。

  • 下载任务保存在内存中,服务重启后任务列表清空(已下载的文件不受影响)。

  • 后续可加:专栏 / 动态图文、直播弹幕实时流、合集 / 收藏夹批量下载、视频截图(videoshot)、OAuth 登录(替代地址密钥)、发布到 npm。

许可与致谢

MIT。弹幕转换器、字幕 ASS 转换、DASH 选流逻辑移植自 the1812/Bilibili-Evolved(MIT),源文件头部标注了出处。本项目不分发 Bilibili-Evolved 脚本本体。B 站接口为非公开接口,请遵守 B 站用户协议,仅用于个人学习与合理使用;下载内容版权归原作者所有。

Available Tools

15 tools
bili_account我的账号 / 稍后再看 / 收藏 / 历史 / 动态A
Read-only

读取已登录账号的数据(需配置 BILIBILI_COOKIE):me=账号信息;watch_later=稍后再看列表;favorites=收藏夹(不传 folder_id 列出收藏夹,传了则列出内容);history=观看历史;feed=关注动态(默认只看视频)。对应 Bilibili-Evolved 的「稍后再看」「收藏」「历史」「动态过滤」等功能。

NameRequiredDescriptionDefault
pageNo
whatYes
cursorNohistory/feed 翻页游标(上次返回的 next / nextOffset)
keywordNofavorites:在收藏夹内搜索
feed_typeNofeed:只看视频动态或全部
folder_idNofavorites:收藏夹 ID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real context beyond that: the cookie/auth requirement, the conditional favorites behavior, and the default "videos only" scope for feed. It stops short of describing pagination semantics or result volume.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence front-loads the verb, resource, and auth prerequisite, then enumerates modes with semicolons — zero filler. It is somewhat packed, but every clause carries a distinct fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six parameters, no output schema, and a multi-mode dispatch, the description covers the mode semantics and the auth prerequisite well. Return shape and pagination behavior are left implicit, though cursor/next is documented in the schema, which is a reasonable division of labor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description compensates by defining every `what` value and the folder_id presence/absence branch, which the schema only labels as "收藏夹 ID". It says nothing about page or cursor beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("读取已登录账号的数据") and then enumerates all five values of the `what` enum with their meanings (me/watch_later/favorites/history/feed). An agent can distinguish this from bili_user (other users) and bili_watch_later_edit (mutation) without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear prerequisite (BILIBILI_COOKIE must be configured) and spells out the branch condition for favorites: without folder_id it lists folders, with folder_id it lists contents. It does not explicitly name alternatives such as bili_user or bili_watch_later_edit or state when not to use this tool, so it falls short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_chapters章节与元数据A
Read-only

获取视频的分段章节(UP主设置的看点 / 番剧 OP、ED 时间),可输出为 ffmetadata(ffmpeg 写入章节)或 OGM 章节格式。对应 Bilibili-Evolved 的「保存视频元数据」。

NameRequiredDescriptionDefault
pageNo分P序号(从1开始);番剧季为第几集。默认取链接里的 ?p= 或第1P
inputYes视频标识:B站视频/番剧链接、BV号、av号、ep号、ss号或 b23.tv 短链
formatNolist

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context about what is produced (ffmetadata / OGM chapter markup), but says nothing about behavior when a video has no chapters, whether pagination/season handling differs, or access limits — gaps that matter for an agent reasoning about failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences; the core purpose and the available outputs come first, with the Bilibili-Evolved mapping as trailing context. Nothing is redundant, though the parenthetical about OP/ED could be folded more tightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing return shape, and it never says what the default `list` output looks like (field names, time units, whether entries include titles). For a read-only 3-parameter tool the remaining gaps are moderate rather than severe, but an agent cannot predict what it will receive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, and the description usefully compensates for the one undocumented piece: the `format` enum has no schema description, but the text explains that list is chapters data while ffmetadata and ogm are chapter-file encodings for ffmpeg or OGM tooling. The `page` and `input` parameters are already documented in the schema, so no repetition is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (获取视频的分段章节) and clarifies what chapters are in this domain (UP主设置的看点 / 番剧 OP、ED 时间), which rules out confusion with bili_danmaku or bili_subtitles. It also names the Bilibili-Evolved feature it mirrors. It stops short of naming any sibling tool explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the mention of ffmetadata for ffmpeg chapter writing hints at when a caller would pick a non-default format. There is no explicit 'use this when…' or 'do not use this for…' guidance, and no pointer to bili_video_info or bili_danmaku as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_comments视频评论A
Read-only

获取视频评论(热门或最新),包括置顶评论、点赞数、IP 属地与热门楼中楼。用 next_offset 翻页。对应 Bilibili-Evolved 的评论区相关功能。

NameRequiredDescriptionDefault
sortNohot
inputYes视频标识:B站视频/番剧链接、BV号、av号、ep号、ss号或 b23.tv 短链
limitNo
offsetNo上一次返回的 nextOffset,用于翻页

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds genuinely useful behavior: which fields come back (pinned comment, like counts, IP location, hot sub-replies) and that pagination is offset-based. It does not mention rate limits or whether deep pagination is capped, which keeps it below 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the resource and the payload, then pagination, then provenance. The Bilibili-Evolved reference is the weakest sentence but does give implementation context; nothing else is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing return values, and it only sketches them rather than naming the cursor field precisely. It says '用 next_offset 翻页' while the schema's parameter is 'offset' and the cursor field is described there as 'nextOffset', an inconsistency that could make an agent guess at the pagination token's name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; 'sort' and 'limit' have no schema descriptions at all. The description partially compensates by naming the two sort modes (热门/最新) and explaining that the offset parameter is fed from the previous response's cursor, but it never mentions the limit ceiling of 20 or the accepted input identifier formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (获取视频评论) and narrows scope with the sort modes (热门或最新) plus the data returned (置顶评论、点赞数、IP 属地、楼中楼). It is clearly distinguishable from most siblings, though it never explicitly separates itself from bili_danmaku, which an agent could plausibly confuse with 'comments'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent infers 'call this to read a video's comment section.' There is no statement of when not to use it, no prerequisite about needing a resolved video ID, and no pointer to bili_danmaku as the alternative for bullet comments.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_danmaku弹幕获取与分析A
Read-only

获取视频全部弹幕。mode=stats 返回总数、高频弹幕、弹幕密度与高能时间点(适合分析观众反应);mode=lines 返回带时间戳的弹幕文本(可按时间段过滤,过多时均匀抽样);mode=ass/xml/json 把完整弹幕保存为文件并返回路径(ASS 可直接被播放器加载)。对应 Bilibili-Evolved 的「下载弹幕」与弹幕转换器。

NameRequiredDescriptionDefault
modeNostats
pageNo分P序号(从1开始);番剧季为第几集。默认取链接里的 ?p= 或第1P
inputYes视频标识:B站视频/番剧链接、BV号、av号、ep号、ss号或 b23.tv 短链
limitNolines 模式最多返回条数
to_secondsNolines 模式:结束时间(秒)
from_secondsNolines 模式:起始时间(秒)
block_keywordsNoass 模式:屏蔽包含这些词的弹幕

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds real behavior beyond the annotations: stats aggregates (总数、高频弹幕、密度、高能时间点), uniform sampling in lines mode when the volume is too large, and that the file modes write a file and return its path. One tension: readOnlyHint=true while the tool writes files to disk, though the description at least discloses that side effect rather than hiding it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The mode enumeration is front-loaded and each clause maps to one mode's output, so the density is functional rather than padding. It is a single long sentence chain, however, without separators, which slightly hurts scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 7 parameters, the description compensates by describing the return shape for every mode, including the file-path return for ass/xml/json. An agent can call this correctly and know what to expect from each mode without further information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 86%, so parameters like input, page, from_seconds/to_seconds, limit and block_keywords are already documented in the schema. The description only adds the sampling behavior tied to limit, which is minor value on top of an already well-documented schema — the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (获取视频全部弹幕) and then enumerates the five modes with what each returns, so the agent knows exactly what the tool produces. It does not differentiate itself from nearby siblings such as bili_comments or bili_subtitles, which is the only reason it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Each mode carries an implicit use case (stats '适合分析观众反应', lines for timestamped text with time-range filtering, ass/xml/json for file export playable in a player), giving clear selection context. There is no explicit 'when not to use this' or pointer to an alternative tool for comment/subtitle retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_download下载视频 / 音频 / 弹幕 / 字幕 / 封面A

把视频下载到本机(默认 ~/Downloads/bilibili,可用 BILIBILI_DOWNLOAD_DIR 修改)。DASH 音视频会用 ffmpeg 自动合并为 mp4 并写入章节元数据;没有 ffmpeg 时保留分离文件。可附带下载封面、ASS/XML 弹幕、SRT 字幕。任务在后台运行,超过 wait_seconds 未完成会先返回任务 ID,之后用 bili_download_status 查询。对应 Bilibili-Evolved 的「下载视频」「下载音频」「下载弹幕」「下载字幕」「查看封面」。

NameRequiredDescriptionDefault
modeNovideo=音视频;audio=仅音频;none=只下附加内容video
codecNo偏好编码,默认 avc
inputYes视频标识:B站视频/番剧链接、BV号、av号、ep号、ss号或 b23.tv 短链
mergeNo是否用 ffmpeg 合并音视频,默认 true
pagesNo要下载的分P序号列表(批量下载);不填则只下载链接对应的那一P
extrasNo附带下载:封面、ASS 弹幕、XML 弹幕、SRT 字幕、ffmetadata 元数据
qualityNo清晰度代码,同 bili_video_streams;默认最高可用
wait_secondsNo最多等待多少秒再返回(上限 90,远程模式下避免网关超时);0 表示立即返回任务 ID

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations it discloses the concrete output location (~/Downloads/bilibili, overridable via BILIBILI_DOWNLOAD_DIR), the ffmpeg merge-and-chapter-metadata behavior, and the graceful fallback to separate files when ffmpeg is absent — none of which the annotations convey. It still leaves out whether files are overwritten on re-download, whether login/cookies are required, and any rate-limit behavior for batch pages.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description leads with the action and destination, then layers merge behavior, extras, and the async/status flow in a logical order with no filler. It is dense but each clause (directory override, ffmpeg fallback, task ID handoff) carries actionable information; only the closing Bilibili-Evolved naming is low-value padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter tool with no output schema, it covers the essentials an agent needs: where files land, how merging behaves, and how the async return is used. It doesn't describe the shape of the immediate response (e.g., task ID field name, progress fields) which matters when wait_seconds is 0, leaving a small gap before the bili_download_status handoff.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including mode, codec, pages and wait_seconds already carries its own explanation; the description adds no parameter-level detail beyond restating the ffmpeg merge and the wait_seconds timeout behavior. That meets the baseline for a fully documented schema but doesn't improve on it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb (下载到本机) plus resource and destination, and the tool's scope is further sharpened by naming which artifacts it can fetch (视频/音频/封面/弹幕/字幕). It is clearly distinguishable from siblings like bili_danmaku or bili_subtitles because it frames them as optional extras of a single download job, and from bili_download_status because it names that tool as the follow-up.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says the task runs in the background, that exceeding wait_seconds returns a task ID, and that bili_download_status is the way to check afterwards — a clear usage path. What's missing is routing guidance versus the dedicated siblings (bili_danmaku, bili_subtitles, bili_chapters) when the user only wants danmaku/subtitles, and any note on prerequisites such as login for high qualities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_download_status查询下载任务A
Read-only

查询下载任务进度与结果文件路径。不传 job_id 时列出本次会话的全部任务。

NameRequiredDescriptionDefault
job_idNo
wait_secondsNo若任务未完成,最多等待多少秒(上限 90)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds the session-scoping behavior of the listing mode, but omits polling semantics, terminal/failure states, and how long results persist — all relevant for an async download status tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core purpose and followed by the mode-switching behavior. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does name what's returned (progress plus result file path), which is the most important thing. But it doesn't cover failure states, job expiration, or the polling/waiting pattern an agent needs for a 0-90s wait parameter, leaving meaningful gaps for an async task tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: wait_seconds is documented in the schema itself, but job_id has no schema description. The description partially compensates by explaining that omitting job_id lists all session tasks, which is the key semantic for that parameter. Baseline 3 fits given the schema already carries the wait_seconds documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: querying download task progress and the resulting file path. It's clearly distinct from bili_download (which starts a download), though the differentiation is implied rather than stated by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains one usage mode: omitting job_id lists all tasks in the current session, which is real guidance for choosing between the two call shapes. However, it doesn't say when to use this rather than bili_download, or when to poll vs. use wait_seconds — that's left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_hot热搜 / 热门 / 排行榜A
Read-only

search_words=当前热搜词;popular=综合热门视频;ranking=分区排行榜(可指定 region);weekly=每周必看。对应 Bilibili-Evolved 的「热搜」与排行入口。

NameRequiredDescriptionDefault
kindNopopular
pageNo
limitNo
regionNoranking 的分区,默认 all

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety and openness profile is covered. The description adds nothing further about behavior — no indication of what the results look like, pagination semantics, or mode-specific restrictions — but it does not contradict the annotations either.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The mode list is compact, parallel, and dense with meaning, using one clause per enum value. The trailing sentence about Bilibili-Evolved entry points adds little for an agent, and the payload is not front-loaded with a purpose statement, keeping it slightly below top marks.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter, no-output-schema, multi-mode tool, the description covers the mode selector but says nothing about pagination or result shape for each mode, and the two numeric parameters remain undocumented anywhere. Adequate to invoke, not complete enough to know what to expect back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 25% (only `region` has a description), so the description has to carry weight — and it does, defining all four `kind` enum values with their real-world meaning and flagging that `region` applies to ranking only. It leaves `page` and `limit` unexplained beyond their numeric bounds, which is the remaining gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates the four concrete retrieval modes of the tool (hot search words, popular videos, per-region rankings, weekly must-watch), so an agent can tell this is a Bilibili trending/ranking fetch tool. It never states the operation in a single upfront verb+resource sentence and does not differentiate itself from siblings like bili_search, which keeps it out of the top band.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implicitly says which `kind` value to pick by glossing each one, and notes that region only applies to ranking. But there is no explicit when-to-use statement, no exclusion of alternatives (e.g. use bili_search for keyword lookup instead), and no note on what happens for modes that ignore page/limit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_live_room直播间信息B
Read-only

查询直播间标题、开播状态、人气、分区、开播时间。

NameRequiredDescriptionDefault
inputYes直播间号或 live.bilibili.com 链接

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and network-openness are covered. The description adds value by naming the data returned (title, live status, popularity, partition, start time), which substitutes for the missing output schema, but says nothing about failure modes for nonexistent or offline rooms.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the verb front-loaded and no filler. It is terse but every word carries information; only slightly clipped for a description serving as the sole summary of a tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only lookup, the description plus annotations plus the fully documented schema cover what an agent needs. The enumerated return fields compensate for the absence of an output schema; only error/edge-case behavior is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents that it accepts a room ID or a live.bilibili.com URL. The description adds nothing about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (查询) and resource (直播间) plus an enumeration of the fields returned (标题, 开播状态, 人气, 分区, 开播时间). No sibling covers live rooms, so the tool is distinguishable by name alone, though the description never explicitly contrasts it with bili_video_info or bili_user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of when to prefer bili_video_info or bili_user instead, and no note that it works for offline rooms. Usage is only implied by the field list, similar to the calibration case that scored 2.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_resolve解析 B 站链接 / 编号A
Read-only

把任意 B 站链接或编号解析成结构化 ID(视频 aid/bvid、番剧 ep/ss、用户 mid、直播间号、专栏 cv),支持 b23.tv 短链,并做 av⇄BV 互转。对应 Bilibili-Evolved 的「BV号转换」「av号链接」。

NameRequiredDescriptionDefault
inputYes链接或编号,如 BV1xx411c7mD、av170001、https://b23.tv/xxxx

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so safety and network scope are covered by structured data. The description adds that b23.tv short links are resolved (implying a network hop) and that av⇄BV both directions are supported, but says nothing about failure behavior for unparseable input or about the shape of the resolved result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The capability statement is front-loaded and the second clause lists output ID types compactly. The trailing mapping to Bilibili-Evolved features is provenance rather than actionable instruction and could be trimmed, but overall there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description helpfully compensates by naming the ID types that come back, which is what an agent needs to chain into bili_video_info or bili_live_room. What remains unstated is the concrete return shape (field names, single vs. multi-match) and permission/rate considerations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage, the schema already carries the burden and baseline 3 applies. The description's enumeration of ID families slightly extends the schema by signaling the range of accepted formats, but it adds no syntax or validation detail beyond the schema's own examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("解析...链接或编号成结构化 ID") and enumerates exactly which ID families are produced (aid/bvid, ep/ss, mid, room, cv), plus the extra capability of av⇄BV conversion. An agent can tell immediately that this is the URL/ID normalization entry point rather than a content-fetching tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Accepted inputs are exemplified and short-link support is mentioned, so usage is implied, but nothing says when to pick this over siblings like bili_video_info or bili_user (which presumably expect a raw ID). There is no explicit "call this first to normalize a link, then pass the result to X" guidance or any exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_subtitles字幕 / 文字稿A
Read-only

获取视频字幕(含 AI 生成字幕)。format=text 返回「[mm:ss] 台词」形式的文字稿,最适合让 AI 总结、翻译、提炼要点;srt/ass/json 可选择保存为文件。只传 input 不传 lang 时会同时列出全部可用字幕语言。注意:AI 字幕通常需要登录 Cookie。对应 Bilibili-Evolved 的「下载字幕」。

NameRequiredDescriptionDefault
langNo语言代码或名称,如 zh-CN、ai-zh、en-US、中文;默认优先人工中文字幕
pageNo分P序号(从1开始);番剧季为第几集。默认取链接里的 ?p= 或第1P
saveNo是否保存为文件(srt/ass/json 推荐保存)
inputYes视频标识:B站视频/番剧链接、BV号、av号、ep号、ss号或 b23.tv 短链
formatNotext
timestampsNotext 格式是否带时间戳

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, but the description adds genuinely new behavioral context: AI subtitles typically require a login Cookie, and omitting lang switches the tool into a listing mode rather than a fetch mode. It does not cover error behavior or rate limits, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense paragraph, front-loaded with the core action and followed by format guidance, the lang-omission rule, and the cookie caveat in priority order. Slightly packed, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by describing the text return format, and it flags the auth prerequisite for AI subtitles. Page/multi-P selection and save behavior are left to the schema, which covers them adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 83%, so the baseline is 3, but the description adds meaning the schema lacks: the concrete output shape of format=text ('[mm:ss] 台词') and the semantic effect of omitting lang. This is real value beyond the enum and per-param descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (获取视频字幕, including AI-generated) and immediately clarifies the return shapes for each format. An agent can distinguish it from siblings like bili_danmaku, bili_chapters, or bili_video_info without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives actionable selection guidance: format=text is recommended for AI summarization/translation, while srt/ass/json should be saved as files. It also explains the special 'input only, no lang' case that enumerates available languages. No explicit sibling exclusion is offered, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_userUP 主 / 用户信息A
Read-only

获取用户资料:昵称、签名、等级、粉丝数、获赞、认证,并可附带最近投稿。参数可以是 UID、空间链接或视频链接(取 UP 主)。

NameRequiredDescriptionDefault
inputYesUID、space.bilibili.com 链接,或视频链接/BV号(自动取 UP 主)
recent_videosNo附带最近投稿数量

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds the payload shape (which profile fields come back, plus the optional recent-submission block), but says nothing about failure behavior for unknown users, auth requirements, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with the field list front-loaded after the colon and the optional recent-submissions capability appended last. Every clause carries information; there is no boilerplate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by enumerating the returned profile fields and noting the optional recent-video attachment. For a 2-parameter read tool this is nearly sufficient; only edge-case behavior for invalid or unresolvable input is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already fully documented with the same example forms (UID, space.bilibili.com link, video link/BV号). The description restates rather than adds, so baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (获取) and resource (用户资料) and enumerates the returned fields (昵称、签名、等级、粉丝数、获赞、认证), so the agent knows exactly what it gets. It does not explicitly contrast with the overlapping sibling bili_resolve, which also accepts links, so differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the accepted input forms, including the useful routing rule that a video link yields its UP 主, which is implicit guidance on when this tool applies. However, it never says when NOT to use it or name bili_resolve/bili_video_info as the alternative path for link resolution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_video_info视频 / 番剧详情A
Read-only

获取视频的标题、完整简介、封面、UP主、发布时间、时长、播放/点赞/投币/收藏等数据、标签、分P列表与合集信息;番剧链接返回剧集列表与评分。对应 Bilibili-Evolved 的「展开完整简介」「查看封面」「元数据」等功能。

NameRequiredDescriptionDefault
inputYes视频标识:B站视频/番剧链接、BV号、av号、ep号、ss号或 b23.tv 短链

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, network-fetching read. The description adds useful context about what data is returned (including paginated part lists for videos and episode lists plus rating for bangumi links), but it does not cover error behavior for invalid IDs or rate limits. Given that annotations already cover the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is essentially one dense sentence listing return fields, followed by a short mapping to Bilibili-Evolved features. The return-value information is front-loaded, and the description is generally efficient, though the feature-mapping clause is marginal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description must enumerate what comes back, and it does so thoroughly: video metadata, statistics, tags, part lists, collection info, and bangumi episode lists plus scores. For a one-parameter read tool this covers the essentials; only failure modes and pagination behavior are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the single `input` parameter is already documented as accepting BV号, av号, ep号, ss号, b23.tv short links, and full URLs. The description repeats the concept of video/bangumi links but adds no syntax or format details beyond what the schema provides. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and resource (获取视频/番剧详情) and enumerates the returned fields (标题、简介、封面、UP主、播放量、分P、合集、番剧评分), so the purpose is unambiguous. It does not differentiate itself from the sibling bili_resolve, which likely handles the same link/ID inputs, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the intended use case: retrieving details for a video or bangumi link. However, it gives no explicit guidance on when to use this tool instead of bili_resolve (for the same identifier types) or bili_video_streams, bili_danmaku, or bili_subtitles (for fetching other aspects). The agent must infer the choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_video_streams获取视频流地址A
Read-only

列出视频可用清晰度、编码,并返回选中的 DASH 视频流/音频流直链(含体积估算)。直链必须带 Referer: https://www.bilibili.com/ 请求头才能下载,有效期约 2 小时。想直接存到本地请用 bili_download。

NameRequiredDescriptionDefault
pageNo分P序号(从1开始);番剧季为第几集。默认取链接里的 ?p= 或第1P
codecNo偏好编码,默认 avc(兼容性最好)
inputYes视频标识:B站视频/番剧链接、BV号、av号、ep号、ss号或 b23.tv 短链
qualityNo期望清晰度代码:127=8K 120=4K 116=1080P60 112=1080P+ 80=1080P 64=720P 32=480P 16=360P;默认取最高可用
include_allNo是否返回全部清晰度/编码的流(默认 false,仅返回选中的一组)

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, it discloses two operationally critical facts: the direct URLs require a `Referer: https://www.bilibili.com/` header and expire in about 2 hours. Both would silently break an agent's downstream download if omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with what is returned, then the download caveat and the sibling pointer. Nothing is padded and every clause carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description still names the return payload (quality/codec list, selected DASH video and audio URLs, size estimates) and the constraints on using those URLs. An agent has everything needed to call it and act on the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (page, codec, quality codes, include_all) fully documented in the schema itself, so the baseline is 3. The description only echoes the quality/codec enumeration at a high level and adds no format or default nuance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it lists available qualities/codecs and returns the selected DASH video/audio stream direct URLs with size estimates. This is clearly separable from siblings like bili_video_info (metadata) and bili_download (file saving).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent away from this tool when the goal is saving locally ("想直接存到本地请用 bili_download"), which is the key fork. It does not say when to prefer bili_video_info over this tool, but the main alternative is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bili_watch_later_edit添加 / 移除稍后再看A
DestructiveIdempotent

把视频加入或移出「稍后再看」。会修改账号数据:需要 Cookie(含 bili_jct)且设置 BILIBILI_ALLOW_WRITE=true 才可用。

NameRequiredDescriptionDefault
inputYes视频标识:B站视频/番剧链接、BV号、av号、ep号、ss号或 b23.tv 短链
actionYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

注解已声明 readOnlyHint=false、destructiveHint=true、idempotentHint=true,安全画像清楚;描述在此之上补充了注解无法表达的鉴权与开关要求(bili_jct Cookie、BILIBILI_ALLOW_WRITE 环境变量),这是真正增量信息。未说明失败场景(未登录/视频不存在)或移除操作是否可撤销,故非满分。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

两句话零冗余:第一句说明做什么,第二句前置警示鉴权与开关要求。信息密度高且前后顺序合理,安全警示紧跟用途之后。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

两参数、无输出 schema、注解已覆盖安全与幂等画像,描述的职责主要是说明用途与写入准入,这两点都做到了。剩余缺口是失败/错误行为与返回值形态未提及,但因无 output schema 且工具简单,属可接受范围。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

schema 覆盖率仅 50%:input 有描述(多种视频标识格式),action 仅靠枚举值自解释。描述中「加入或移出」恰好为 add/remove 提供了语义映射,但未补充 action 之外的行为差异(如 add 幂等、remove 后列表顺序等)。基线 3 合适。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

「把视频加入或移出「稍后再看」」以具体动词(加入/移出)指向明确资源(稍后再看列表),并直接对应 action 枚举的 add/remove。同名参数 input 接受 BV/av/ep/ss/短链,由 schema 补全,不与任何兄弟工具重叠,agent 无需打开 schema 即可区分。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

描述给出了可写前置条件(Cookie 含 bili_jct、BILIBILI_ALLOW_WRITE=true),这属于环境前提而非使用时机建议。没有任何「何时该用/何时不该用」或与 bili_video_info、bili_download 等兄弟工具的选择指引,agent 只能靠自己推断。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 15 tool updatesv0.1.0
    • First observedbili_account
    • First observedbili_chapters
    • First observedbili_comments
    • First observedbili_danmaku
    • First observedbili_download
    • First observedbili_download_status
    • First observedbili_hot
    • First observedbili_live_room
    • First observedbili_resolve
    • First observedbili_search
    • First observedbili_subtitles
    • First observedbili_user
    • First observedbili_video_info
    • First observedbili_video_streams
    • First observedbili_watch_later_edit

TDQS

A3.7/5.0

Scored across 15 tools

Disambiguation4/5

Each tool targets a distinct resource or stage of the pipeline: link resolution, metadata, stream URLs, download, download status, danmaku, subtitles, chapters, comments, search, hot lists, live rooms, and account data are all clearly separated by their descriptions. Minor overlap exists between bili_user and bili_account (arbitrary user vs. logged-in self), and between bili_video_info and bili_chapters (video_info also mentions collection/分P info), but the descriptions disambiguate these well enough.

Naming Consistency4/5

All 15 tools share the bili_ prefix and snake_case, giving a predictable, scannable namespace. Most names are resource-oriented nouns (bili_user, bili_video_info, bili_danmaku, bili_search) with a couple of verb-style outliers (bili_download, bili_watch_later_edit), a minor deviation from a strict pattern but still coherent.

Tool Count4/5

15 tools sits at the top of the comfortable range, but each covers a genuinely different capability (metadata, streams, download, danmaku, subtitles, chapters, comments, search, hot, live, account, watch-later edit) with little redundancy. Slightly heavy but well justified by the breadth of the Bilibili domain.

Completeness5/5

The read surface is remarkably complete for a Bilibili content/analysis agent: identity resolution, user profiles, video metadata, streams, downloads with async status, danmaku, subtitles, chapters, comments, search, hot/ranking, live rooms, and account data (favorites, history, feed, watch later). The only write operation is watch-later editing, which is intentionally gated; broader write actions (like/coin/favorite/follow) are absent but arguably out of scope for this read-focused server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Bilibili (哔哩哔哩) through its API, supporting video search and recommendations, user search, dynamic feeds, video collections, and danmaku retrieval through natural language.
    5
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    An 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.
    129 npm
    196
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI coding agents to access Bilibili video data and turn videos into notes, including search, video info, subtitles, chapters, audio download, ASR transcription, comments, uploader collections, and favorites.
    15
    2
    MIT