Skip to main content
Glama

Bili Agent · B站资料助手

Check License: Apache-2.0

在 Codex 或其他 MCP 客户端中搜索和阅读 B 站视频,把最终推荐加入本人稍后再看或收藏夹,并回读确认。

A local-first Bilibili MCP plugin for searching videos, reading timed subtitles, sampling frames, and saving selected resources to your watch-later list or favorite folders. It reuses Playwright MCP and the MCP TypeScript SDK. Account sessions stay on your computer.

第一版复用官方 Playwright MCP 和 MCP SDK v2。浏览器连接、协议和文件锁使用现有库;本项目维护 B 站业务工具、内容证据、保存偏好和回执。无需额外模型 API Key,字幕和采样画面由当前 Agent 阅读。

可用功能

  • 现有 Chrome/Edge 扩展连接,以及独立持久化浏览器扫码登录。

  • 搜索、元数据、分 P、人工/平台 AI 字幕、时间点链接和分页读取。

  • 播放器画面采样,返回实际时间点的图片。

  • 加入稍后再看、加入本人指定收藏夹,支持预览、查重、回读核验和持久化回执。

  • Skill 在推荐资料时按本地偏好自动保存最终推荐集。

不含本地 ASR;没有字幕时明确返回状态,可以采样画面但不能当作完整音视频理解。插件启用后的 Skill 和服务 instructions 提供相关任务的流程指导,不是对所有聊天回答的强制监听器。

本地使用

需要 Node.js 22.13+、已安装的 Chrome 或 Edge。推荐 Node.js 24。Windows 已在 Edge 上运行验证。

git clone https://github.com/zabccc123/bili-agent.git
cd bili-agent
npm ci
npm run check
node dist/cli.js setup --mode managed --browser msedge

打包本地插件还需要 Python 3.9+,使用标准库生成 ZIP;日常运行无需 Python。

在打开的 B 站网页登录。程序确认实际账号后绑定 UID,默认自动将最终推荐加入稍后再看。Windows 个人状态在 %LOCALAPPDATA%\BiliAgent,与项目和插件安装目录分离。升级插件不会覆盖登录态。

复用日常浏览器需要安装官方 Playwright Extension,然后运行:

node dist/cli.js setup --mode extension --browser chrome

按照浏览器连接页提示选择 B 站标签页。两种登录模式通过配置切换;本人决定换账号时才使用 --rebind-account。项目和聊天均不需要接收 Cookie。

node dist/cli.js doctor
node dist/cli.js doctor --online
node dist/cli.js search --keyword 'MCP 开发 教程' --headless
node dist/cli.js inspect --video 'https://www.bilibili.com/video/BV1RNTtzMENj/' --headless

安装为 Codex 插件

开发版本打包和安装:

npm run package:local
codex plugin marketplace add ./artifacts/marketplace --json
codex plugin add bili-agent@bili-local --json
node scripts/configure-codex.mjs

打包目录包含编译结果、Skill 和生产依赖。安装后在 Codex 中重新加载插件或打开新聊天;必要时重启应用。插件安装结果与聊天工具列表可能需要不同的刷新周期。可用 codex plugin list --marketplace bili-local --json 检查本地安装。

configure-codex.mjs 仅为本插件的 bilibili_save_videos 添加逐工具自动批准设置,匹配本人要求的自动保存;其他工具和全局权限不变。已有同名逐工具设置时保留原设置。

在新聊天里说:

用 B站资料助手找几条 MCP 开发教程,读一下关键内容,把最终推荐加入稍后再看。

Skill 名称为 $bilibili-research。MCP 服务名为 bili-agent。所有工具名以 bilibili_ 开头。

其他 MCP 客户端使用同一服务,配置格式示例:

{
  "mcpServers": {
    "bili-agent": {
      "command": "node",
      "args": ["/absolute/path/to/bili-agent/dist/cli.js", "serve"]
    }
  }
}

保存偏好

config.json 只存 UID、浏览器模式和偏好;浏览器负责登录数据。可以运行 setup --auto-save off 暂停自动保存,或 setup --auto-save on 恢复。setup --folder-id ID 将默认目标改为本人收藏夹。也可以编辑 default_targets,同时包含:

[{"kind":"watch_later"},{"kind":"favorite","folder_id":"真实收藏夹ID"}]

保存工具本身可用于用户明确要求的手动保存;auto_save 控制 Skill 是否在推荐时自动调用它。收藏夹目标需通过当前账号归属检查。

saved 和 already_present 表示成员状态已确认。pending_verification 表示结果不确定,需先调用回执工具再次查询。写入超时不自动重发。只有明确决定重试先前未确认动作时才使用 retry_unconfirmed: true,工具仍会先重新检查远端成员状态。

验证和维护

npm run check
npm run smoke
node scripts/live-acceptance.mjs --frames

前一项不访问真实 B 站账号;它包含完整适配器的合成上游场景和真实 MCP stdio 协议测试。smoke 用独立测试状态目录检查官方浏览器桥接。live-acceptance 是登录后的只读验收;加 --save 才会把指定视频加入稍后再看,加 --folder-id ID 还会加入对应收藏夹。测试结果在被 Git 忽略的 artifacts/acceptance。该目录可含字幕和截图,不随插件分发。

维护时运行 npm ci 复现锁定依赖。站点变化集中在 src/bilibili/;浏览器层在 src/browser.ts;保存闭环在 src/service.ts。增加网站可以实现平台接口,新 Agent 宿主复用 MCP。远程 HTTP 和自动更新尚未实现。

专用 profile 一次由一个浏览器进程持有。使用 Codex 前请结束单独运行的 setup 或在线诊断;占用时等待原操作结束,不要删除 profile。项目会对同一账号的保存动作加跨进程锁。登录失效时重新运行 setup;验证码或权限问题在网页中处理。

源码与复用归属见 THIRD_PARTY_NOTICES.md。

参与和后续功能

欢迎通过 Issues 报告问题和讨论功能,通过 Pull Request 提交改进。开发流程见 CONTRIBUTING.md,本地验收范围见 VALIDATION.md。报告问题时请保留错误码和运行版本,移除个人账号、Cookie、浏览器 profile、截图中的私人信息及带签名的媒体地址。

后续方向包括可选本地 ASR、更多浏览器与系统的在线验收,以及更完善的长视频任务恢复。功能以实际测试和资源投入为准。

本项目采用 Apache License 2.0,是独立第三方集成,与哔哩哔哩或 OpenAI 均无官方隶属关系。只操作本人有权访问的内容;验证码、会员权限或其他访问限制需要在网页中正常处理。

Available Tools

8 tools
bilibili_auth_statusA
Read-onlyIdempotent

检查本地偏好;online=true 时连接浏览器验证实际账号。不会返回登录凭据。

NameRequiredDescriptionDefault
onlineNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower; the description still adds real value by explaining that online=true triggers an actual browser connection and by stating that login credentials are never returned, a genuine security-relevant disclosure. It omits whether the browser check can be slow, fail, or require an open session.

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 compact clauses, the local-first behavior front-loaded, the opt-in browser branch second, and the credential caveat last. No filler, no restatement of the tool name.

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?

There is no output schema and the description only says what is NOT returned (credentials) rather than what is returned, so an agent cannot anticipate the shape of the status result. For a status-check tool whose entire purpose is producing that result, this is a noticeable gap, though the call semantics themselves are fully covered.

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 0%, so the description carries the parameter burden. It explains the online=true path but leaves the default/false path ('本地偏好' only) implicit, and gives no hint about what the local preference check reads or where it comes from. Useful but only half the semantics of the single flag.

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 pairs a concrete action (checking local preferences, then verifying the live account against the browser) with the auth-status subject implied by the tool name, and it is clearly unlike any of the content-oriented siblings. It stops short of stating outright that it returns a logged-in/not-logged-in result, so the resource is inferred rather than named.

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?

The conditional 'online=true 时连接浏览器验证实际账号' tells the agent exactly when to pay the cost of a live browser check versus staying local, which is the only real branching decision for this tool. There are no competing auth siblings to route to, so the absence of an explicit alternative is minor.

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

bilibili_get_save_receiptA
Read-onlyIdempotent

查询最近保存回执;传 action_id 可回读 B 站实际状态。不会重复执行写入。

NameRequiredDescriptionDefault
limitNo
action_idNo

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, idempotentHint and destructiveHint=false, so '不会重复执行写入' largely restates what structured data provides. What the description does add is the open-world detail that action_id triggers a re-read of the live Bilibili state rather than local cache, which is genuinely useful context not encoded in the annotations.

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 clauses, front-loaded with the listing behavior and then the action_id mode, plus one reassurance clause. No filler or repetition.

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 read-only two-parameter query with full annotation coverage and no output schema, the description covers both operational modes and the safety profile adequately. Minor gaps remain around receipt retention and whether action_id results still appear when the underlying save failed.

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 description coverage is 0%, but the description clarifies action_id's semantics — it looks up the actual remote status of a prior save action rather than just a local receipt — which the bare uuid pattern does not convey. The limit parameter (default 20, max 100) is still undocumented as to what it bounds (number of receipts), so the compensation is partial but meaningful.

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: querying recent save receipts, with an optional action_id mode to re-read the actual Bilibili state. This clearly distinguishes it from the sibling write tool bilibili_save_videos, though it never explicitly names that sibling or state the relationship.

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 phrase '传 action_id 可回读' implies the two usage modes (list recent receipts vs. check one action's real status), and the closing clause '不会重复执行写入' hints it is the safe verification step after a save. But it never states explicitly when to prefer this over simply re-calling bilibili_save_videos or how soon after a save it should be used.

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

bilibili_get_videoA
Read-onlyIdempotent

读取视频元数据与分 P。URL 中的 p 会被保留;part 可显式覆盖。

NameRequiredDescriptionDefault
partNo
videoYes

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, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description's additional value is the precedence rule (URL p kept unless part is given), which is real behavioral detail; it does not mention what happens on an invalid or unreachable video identifier, so it stops short of rich transparency.

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 with no filler, and the override/precedence information comes immediately after the resource statement. It is well front-loaded, though the second clause is terse enough that its referent (which p, which URL) needs a second read.

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, but the description names what comes back (metadata and分 P), and annotations carry the safety and idempotency profile, so the description is close to sufficient for a 2-parameter read tool. The remaining hole is the format of the required video argument, which an agent must guess.

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 0%, so the description is the only source of parameter meaning – and it only partially compensates. It explains part as an explicit override of the URL's p value, but leaves video completely uncharacterized: nothing says whether it is a full URL, a BV id, or something else, despite a 2048-character cap that hints at URLs.

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?

A specific verb (读取, "read") plus a specific resource (视频元数据与分 P, "video metadata and parts"), so the agent knows the payload involves both metadata and per-part data. However, the very similar sibling bilibili_read_video is never mentioned, so the boundary between the two read tools has to be inferred rather than read off the description.

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 clause about the URL's p being preserved and part explicitly overriding it implies when to set part, which is genuinely useful usage context. Beyond that there is no stated when-to-use or when-not-to-use guidance, and nothing routes the agent between this tool and bilibili_read_video or bilibili_search.

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

bilibili_list_favorite_foldersA
Read-onlyIdempotent

列出当前登录账号创建的收藏夹,提供精确 ID,供保存工具使用。

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds that results are scoped to the current logged-in account and that IDs are exact/usable downstream, which is genuine context, but it says nothing about authentication failure behavior or whether followed/collected folders are excluded.

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?

A single compact sentence with the resource and the account scope front-loaded and the downstream purpose trailing. No filler, no restatement of the tool name.

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 does its part by stating that precise folder IDs are returned, which is the key return-value fact an agent needs. For a zero-parameter read tool with full annotation coverage this is nearly complete; only the logged-out/empty-list edge cases are unaddressed.

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?

The tool takes zero parameters, so the schema carries no semantic burden and the baseline is 4; however, the description also adds no parameter-level information because none exists. It sits just below the zero-parameter baseline because it neither confirms the absence of filters nor explains that no pagination or filtering options are available.

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 verb and resource ('列出...收藏夹') and narrows the scope to folders created by the currently logged-in account, which separates it from the saving siblings. It does not explicitly name bilibili_save_videos as its counterpart, so differentiation is implied through the stated downstream use rather than spelled out.

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?

'提供精确 ID,供保存工具使用' establishes the workflow context: call this before a save operation to obtain the folder identifier. That is clear when-to-use guidance, but there are no explicit exclusions or notes about what to do when the list is empty or the account is not authenticated.

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

bilibili_read_videoA
Read-onlyIdempotent

读取一个分 P 的带时间戳字幕,区分人工和平台 AI 字幕。返回覆盖范围与截断游标;没有字幕时明确报错。本版不提供 ASR。

NameRequiredDescriptionDefault
partNo
limitNo
videoYes
end_secondsNo
start_secondsNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior, yet the description still adds real context: output carries a coverage range and a truncation cursor, subtitle type (human vs AI) is surfaced, and missing subtitles produce an explicit error. Missing is any statement about auth or rate limits, though openWorldHint signals external dependence.

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?

Four short clauses, each carrying distinct information: scope, subtitle typing, return shape, error behavior, and exclusion of ASR. The most important constraint (one part, subtitles) comes first with 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?

Return behavior and error behavior are explained even though there is no output schema, which is good. But with five parameters at zero schema coverage, an agent cannot tell what 'video' accepts or how start_seconds/end_seconds interact with the returned coverage range, so the definition is not complete enough for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% across 5 parameters, and the description documents none of them. '分P' hints at part and '截断游标' hints at limit, but video format, start_seconds/end_seconds ranges, and the 200/500 limits are left entirely unstated — the largest gap in this definition.

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 states a specific verb and resource: it reads the timestamped subtitles of one part (分P) and distinguishes human from platform-AI subtitles. That is precise enough to separate it from bilibili_get_video, but no sibling is named, so the differentiation is only implied by scope.

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 negative scope sentence '本版不提供 ASR' tells the agent what this tool will not do, which is useful routing information. However, it never says when to call this instead of bilibili_get_video or how to react to a no-subtitle error beyond 'it errors clearly'.

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

bilibili_sample_framesA
Read-onlyIdempotent

在 B 站播放器采样画面,返回截图和实际时间点。默认采样 10%、50%、90%;最多 6 帧。采样不代表逐帧看过全片。会打开目标视频页面。

NameRequiredDescriptionDefault
partNo
timesNo
videoYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, open-world and non-destructive semantics. The description adds real value beyond them: it discloses the side effect of opening the target video page in a browser, the default sampling positions (10%/50%/90%), the 6-frame ceiling, and the epistemic limit of the 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?

Four short sentences, front-loaded with the return value and defaults. Every sentence carries information; the "not frame-by-frame" caveat earns its place by preventing overclaiming, though the phrasing is slightly repetitive with the default-sampling sentence.

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, but the description does state what comes back (screenshots and real timestamps). For a browser-driving, open-world tool it omits prerequisites such as authentication (a sibling auth-status tool exists) and expected latency, and leaves two parameters undocumented.

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 0%, so the description must compensate. It explains the `times` parameter well (defaults and max 6 frames), but leaves `video` (URL vs BV/av id) and `part` (multi-part index) undefined in both schema and description.

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 concrete verb+resource pair: sampling frames from the Bilibili player and returning screenshots plus actual timestamps. This is clearly distinct from sibling tools like bilibili_read_video, though it never names an alternative explicitly, so it stops 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?

Usage is implied (visual verification of a video) but there is no explicit "use this when / use X instead" guidance against bilibili_read_video or bilibili_get_video. The caveat that sampling is not equivalent to watching the whole video is a useful interpretation constraint but is not routing guidance.

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

bilibili_save_videosA
Idempotent

将最终推荐或用户明确要求的视频加入稍后再看/本人收藏夹。默认使用已配置目标。先查重,再添加并回读验证;不删除任何内容。preview=true 只检查。对未确认的旧任务默认只核验,不盲目重发。

NameRequiredDescriptionDefault
videosYes
previewNo
targetsNo
retry_unconfirmedNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=true, but the description adds meaningful behavior beyond that: it deduplicates before adding, reads back to verify, deletes nothing, and treats unconfirmed old tasks as verify-only. It does not describe rate limits or what the verification read-back returns, which keeps it below 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.

Conciseness5/5

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

Four short clauses, front-loaded with the primary action, then the default target, then the safety sequence (dedupe, add, verify, no deletion), then the preview and retry qualifiers. Every sentence adds information with no repetition.

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 4-parameter mutation tool with no output schema, the definition covers the mutation semantics, the safety guarantees, and the dry-run mode. Gaps remain around what a successful save returns and how target/folder selection interacts with the configured default, which an agent would need.

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 description coverage is 0%, so the description must carry parameter meaning, and it largely does: preview=true is explained as check-only, the default configured target explains why targets is optional, and the 'don't blindly resend' clause maps to retry_unconfirmed. It never explains the videos array limits or the watch_later/favorite target kinds explicitly, leaving some schema detail unstated.

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 concrete verb (add to watch-later / favorites) and the resource (videos), and scopes it to 'final recommendation or explicitly user-requested' items. It does not explicitly name a sibling to contrast with, even though bilibili_get_save_receipt and bilibili_list_favorite_folders sit adjacent to it, so it falls one step short of full differentiation.

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?

The usage context is clear: use it for final recommendations or explicit user requests, use preview=true to only check, and for unconfirmed legacy tasks default to verification rather than resending. What's missing is a pointer to the sibling tools (e.g. get_save_receipt for reading back receipts, list_favorite_folders for folder IDs), so the agent must infer alternatives.

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. 8 tool updatesv0.1.0
    • First observedbilibili_auth_status
    • First observedbilibili_get_save_receipt
    • First observedbilibili_get_video
    • First observedbilibili_list_favorite_folders
    • First observedbilibili_read_video
    • First observedbilibili_sample_frames
    • First observedbilibili_save_videos
    • First observedbilibili_search

TDQS

A4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct phase of the workflow: search returns candidates, get_video reads metadata and parts, read_video returns subtitles, sample_frames returns screenshots, and save_videos/get_save_receipt handle writes vs. verification. The descriptions explicitly delimit boundaries (e.g., search candidates are not auto-saved, preview=true only checks), so an agent can pick correctly.

Naming Consistency5/5

All eight tools use a uniform bilibili_ prefix with snake_case verb_noun phrasing (list_favorite_folders, read_video, search, get_video, sample_frames, save_videos, get_save_receipt). The only deviation is auth_status, a noun-form status query, which is a widely accepted convention.

Tool Count5/5

Eight tools cover a research-then-save pipeline cleanly, with no redundant or filler entries. Each tool maps to a necessary step (discovery, inspection, verification of write, auth prerequisite).

Completeness4/5

The lifecycle is well covered: auth check, folder listing for save targets, search, metadata, subtitles, frame sampling, save with dedupe/preview, and receipt readback. Minor gaps remain — no way to list existing watch-later or favorite contents, no comment/metadata enrichment, and function removal is intentionally absent.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • 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.
    125 npm
    198
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides tools for parsing and retrieving Bilibili video information, including video details, download links, and collection listings.
    5
    35 npm
    1
    -
  • A
    license
    B
    quality
    C
    maintenance
    Bilibili MCP server enabling video search, comment management, danmaku, user info, dynamics, live streaming analysis, and more via 31 tools.
    31
    6,555 npm
    7
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server for interacting with Bilibili, enabling AI assistants to search videos, fetch comments and subtitles, publish content, and manage interactions. It also adds private message reading, stable TV login, and an automated comment workflow requiring human confirmation.
    MIT