bili-open-mcp
Provides tools for interacting with Bilibili's official open platform and main-site web APIs, including documentation search, endpoint specs, request signing, OAuth2, API calls, video upload planning, webhook verification, live WebSocket protocol support, sandbox mocks, error-code lookup, and Cookie-authenticated web requests.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bili-open-mcpsearch the Bilibili docs for video upload and generate Python code for it"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bili-open-mcp — 哔哩哔哩 / B站 MCP Server
关键词:哔哩哔哩 MCP · B站 MCP · bilibili MCP · bilibili MCP server · 哔哩哔哩开放平台 · bilibili open platform API · Model Context Protocol · MCP 工具 · AI 调用 B 站接口
记这个就行:
bili-open-mcp—— 一个让 AI 直接检索、直接调用哔哩哔哩开放平台的 MCP 服务。
哔哩哔哩开放平台(https://open.bilibili.com/doc/4)的 MCP 服务 + 结构化接口库 + 可运行示例。 把 170 篇文档变成 AI 能直接检索、直接调用、直接生成签名的东西。
你想要 | 看哪 |
怎么装、怎么接、每个工具怎么用 | USAGE.md —— 完整操作手册,含真实输出样例与排查表 |
我这点凭据能用哪些功能 | USAGE.md §0 —— 一张表说清 |
给 AI 读的使用契约 | |
接口来源 / 能力边界 / 免责声明 |
常见搜法都能到这里:哔哩哔哩 mcp、B站 mcp server、bilibili mcp、
b站 开放平台 mcp、用 AI 调 B 站接口、bilibili open platform api mcp。
本项目调用的所有接口均为哔哩哔哩官方公开提供的接口(开放平台文档 / 开放平台域名 / 主站 Web 接口 / 官方直播间长连协议),不含私有接口或绕过鉴权的实现。详见 DISCLAIMER.md。
凭据需自备,且缺失时功能受限:没有 BILI_COOKIE_FILE(→ secrets/cookies.json)和
BILI_CRED_FILE(→ secrets/open-platform.json),则开放平台接口与主站 Web 接口全部不可用,
只剩文档检索、错误码查询、代码生成、沙盒 mock、签名演示这些纯本地能力。
本项目不内置任何凭据,两个文件所在目录已在 .gitignore 中排除。
第三方项目,与哔哩哔哩无隶属或背书关系。请遵守官方协议并自行控制频率。
bili-open-mcp/
├─ USAGE.md 详细使用方法:19 个工具 + 端到端工作流 + 报错排查
├─ AGENTS.md 给 AI 的使用契约(详细版)
├─ DISCLAIMER.md 接口来源 / 凭据边界 / 使用者责任 / 责任限制
├─ LICENSE MIT
├─ src/
│ ├─ server.mjs MCP 服务(stdio,19 个工具 + 2 资源 + 1 提示)
│ ├─ signer.mjs 2.0 签名(HMAC-SHA256)
│ ├─ client.mjs 带签名的 HTTP 调用
│ ├─ codegen.mjs 6 种语言的调用代码生成
│ ├─ cookies.mjs 主站 Cookie 罐(EditThisCookie 导入 / 域匹配 / 脱敏)
│ ├─ credentials.mjs 开放平台凭据(参数 → 环境变量 → 文件)
│ ├─ paths.mjs 凭据文件路径解析(包目录优先,不受启动方 cwd 影响)
│ ├─ wbi.mjs wbi 签名(mixin_key / w_rid)
│ └─ knowledge.mjs 速查 / OAuth / 长连协议 / Webhook 知识块
├─ secrets/ 整个目录提交时排除(.gitignore)
│ ├─ cookies.json 主站 Cookie ← BILI_COOKIE_FILE
│ └─ open-platform.json 开放平台凭据 ← BILI_CRED_FILE
├─ scripts/
│ ├─ build-spec.mjs Markdown → data/*.json / llms.txt
│ ├─ audit.mjs 数据与文档一致性检查
│ ├─ selftest.mjs 工具 / 资源 / 提示 + 生成代码编译自检
│ ├─ check-project-config.mjs 按 opencode 项目配置实际拉起服务验证
│ └─ oauth-login.mjs 本机一键跑完 OAuth2 授权回环(npm run login)
├─ data/
│ ├─ index.json 170 篇文档的结构化规格(100 个端点)
│ ├─ llms.txt 紧凑清单,给 AI 一次性读
│ ├─ status-codes.json 118 个错误码
│ └─ mock.json 43 个沙盒 mock 接口
└─ examples/
├─ bili_open.py 零依赖 Python 客户端(签名/请求/OAuth2/上传)
├─ video_upload.py 视频投稿全流程
├─ live_ws.py 直播间长连(WebSocket + 自定义二进制协议)
├─ node_client.mjs Node 客户端
├─ sign_curl.sh bash + openssl 签名
└─ mcp-config.md Claude / Cursor / Codex / OpenCode 接入配置快速开始
cd C:/path/to/bili-open-mcp
npm install
npm run build # 重新解析 170 篇文档
npm run audit # 11 类一致性检查 → AUDIT PASSED
npm run selftest # 工具 + 资源 + 提示 + 生成代码编译 → ALL SELFTEST PASSED
npm run check-config # 用 opencode 项目配置里的命令实际拉起服务接入客户端见 examples/mcp-config.md。
Related MCP server: bilibili-mcp
工具一览(19 个)
开放平台(签名 / OAuth2)
工具 | 作用 | 典型输入 |
| 主机 / OAuth2 / 签名 / 错误码分段 / 沙盒 一次讲清 |
|
| 170 篇全文检索 |
|
| 按目录或类型列文档 |
|
| 读某篇完整 Markdown |
|
| 按 method/scope/host/关键词过滤端点 |
|
| 权限点 ↔ 端点映射 |
|
| 结构化接口规格(参数/必填/响应/子结构) |
|
| 参数类型转换 + 必填校验 + 多余字段检查 |
|
| 生成调用代码(python/node/curl/java/php/go) |
|
| 生成签名头 + 可粘贴 curl |
|
| 真调接口(或 |
|
| 授权链接 / code 换 token / refresh 续期 / 凭据体检 |
|
| 投稿分片计划(片数、offset、调用顺序) |
|
| 41 个推送事件 + 验签代码 |
|
| 直播长连协议 + 客户端骨架 |
|
| 沙盒 mock 换算与调用 |
|
| 错误码含义 / 前缀批量 |
|
主站 Web(浏览器 Cookie)
主站走 Cookie,不走 2.0 签名,两套体系互不通用。
工具 | 作用 | 典型输入 |
| Cookie 罐:状态 / 登录态体检 / 导入 / 设置 / 导出 |
|
| 带 Cookie 调 |
|
wbi 签名
2023 起 /x/space/wbi/*、/x/polymer/*、/x/v2/reply/wbi/* 这些要 wbi 签名。
bili_web_call 按路径自动判断(wbi:true/false 可强制),做的是:
从
/x/web-interface/nav的data.wbi_img取img_key/sub_key按固定重排表拼出 32 位
mixin_key参数按字典序 → 去掉
!'()*→ urlencode → 末尾接mixin_key→ md5 =w_rid请求带上
wts+w_rid
实测:/x/space/wbi/acc/info?mid=<uid> 带签名 code:0,wbi:false 则 -403 访问权限不足。
顺带一个坑:/x/space/wbi/arc/search(投稿列表)现在直接 -403,补 dm_img_list/dm_img_str/dm_img_inter
三件套也没用;旧路径 /x/space/arc/search 仍然 code:0 可用。
举报
两个入口,别混:
报什么 | 接口 | 关键参数 |
用户(资料/稿件/评论/动态/私信/专栏) |
|
|
单条评论 |
|
|
/x/space/report —— 按 mid 举报,body 是 urlencoded,csrf 自动带:
{ "mid": 3546657551551003, "reason": 5, "scene": 1, "tag_version": 1 }scene 与 reason 的合法组合由 GET /x/space/report/options 决定(以它返回的为准,别写死):
reason | 含义 | 可用 scene |
5 | 传播色情/赌博/垃圾广告资源、诱导交易 | 1,2,3,4,5,6,7 |
1 | 色情低俗 | 1,2,3,4,5,6,7 |
4 | 引战、人身攻击 | 1,2,3,4,5,6,7 |
3 | 违法违禁行为 | 1 |
2 | 虚假不实信息 | 1 |
scene | 含义 |
1 | 用户资料(头像、签名、昵称) |
2 | 稿件 |
3 | 评论 |
4 | 动态 |
5 | 私信 |
6 | 专栏 |
7 | 其他(收藏夹、播单等) |
tag_version 也取自 /options(当前为 1)。
前端(space.bilibili.com 的 index-*.js)里就是这么调的:
IC = ({mid, scene, reason, specific_reason, specific_reason_v2, tag_version}) =>
Re.request({ url: "/x/space/report", method: "POST",
headers: {"Content-Type": "application/x-www-form-urlencoded"},
data: {mid, reason, scene, specific_reason, specific_reason_v2, tag_version} })specific_reason / specific_reason_v2 没值时 axios 会丢掉,所以最小 body 是
mid=<uid>&reason=<一位数>&scene=<一位数>&csrf=<32> —— 实测 75 字节。
/x/v2/reply/report —— 报单条评论,需要 oid(稿件 aid)+ rpid:
reason: 0其他 1垃圾广告 2色情 3刷屏 4引战 5剧透 6政治 7人身攻击 8内容不相关 9违法违规
10低俗 11非法网站 12赌博诈骗 13传播不实信息 14怂恿教唆 15侵犯隐私 16抢楼 17青少年不良返回 12008 已举报过 / 12019 举报过于频繁 / -509 请求过于频繁 / -111 csrf 失败。
注意这个接口风控更紧,静默调用常见 -352。
拿 oid/rpid 的路子(都已实测):
要什么 | 调用 |
某人的动态列表 |
|
动态正文 |
|
某人的投稿 |
|
稿件评论区 |
|
Cookie 存在 secrets/cookies.json(已在 .gitignore 里),路径可用 BILI_COOKIE_FILE 覆盖;
也可以直接 BILI_COOKIE="SESSDATA=…; bili_jct=…" 用环境变量注入。
SESSDATA 是账号凭证,工具默认脱敏输出,reveal:true 才显示原值。
两套凭据,别混
开放平台 | 主站 Web | |
用什么 |
| 浏览器 |
从哪来 | open.bilibili.com 控制台 → 应用管理(需实名 + 开发者入驻) | 浏览器里登录 bilibili.com 后导出 cookie |
认证方式 | HMAC-SHA256 签名( | 直接带 |
存哪 |
|
|
工具 |
|
|
Cookie 里没有 client_id / app_secret / access_token —— 这三个不是 cookie,任何 cookie 导出都拿不到。
反过来,SESSDATA 也换不来开放平台的 access_token。两边不能互填。
补上开放平台凭据
# 1. 去 open.bilibili.com 登录 → 实名认证 → 开发者入驻 → 应用管理 → 创建「网页应用」
# 授权回调域 填 http://127.0.0.1:8848/callback
# 2. 一键跑完授权回环(自动抓 code、换 token、写入 secrets/open-platform.json)
cd C:/path/to/bili-open-mcp
npm run login -- --client-id <ClientID> --secret <Secret>跑完 bili_api_call {ref:"#5"} 就能发真实请求了。
凭据解析顺序:显式参数 → 环境变量 → secrets/open-platform.json。
用 bili_oauth {action:"status"} 可以看清每一格到底有没有、从哪来。
授权页 URL 格式(来自「接入指引 / 网页应用接入」,2025-03 新版页面):
https://account.bilibili.com/pc/account-pc/auth/oauth?client_id=<ClientID>&gourl=<urlencoded 回调地址>&state=<随机串>gourl 与应用里配的「授权回调域」不一致会报「不合法的授权请求」。
bili_oauth {action:"authorize-url", gourl:"…"} 会自动拼好并编码。
ref 接受 #12、12、012、文档 uuid、标题片段、接口 URL。
资源与提示
类型 | 名称 | 内容 |
resource |
| 170 篇压成的一页纸清单(llms.txt) |
resource |
| 单篇文档原文 Markdown |
prompt |
| 按开放平台规范生成接入任务说明(参数 |
凭据
环境变量 | 说明 |
| client_id(= |
| app_secret,别名 |
| OAuth2 access_token,别名 |
| 主站 Cookie jar 路径(覆盖默认解析) |
| 开放平台凭据文件路径(覆盖默认解析) |
| 直接给 Cookie 字符串,不落盘 |
凭据文件放在哪:secrets/cookies.json 与 secrets/open-platform.json 按
显式参数 → 环境变量 → 包目录 → 启动方 cwd 的顺序解析,写入固定落在包目录。
放包目录下的 secrets/ 最稳 —— MCP 客户端是用它自己的项目目录当 cwd 拉起服务的,
只按 cwd 找会一直显示「文件不存在」。要放别处就给 BILI_COOKIE_FILE / BILI_CRED_FILE 绝对路径。
无凭据时文档类工具照常工作,bili_api_sign 会用占位值演示签名结构,
bili_api_call {dryRun:true} 能看完整请求。完整的能力对照表见
USAGE.md §0。
数据从哪来
data/ 由 scripts/build-spec.mjs 从同级目录(文档 Markdown 所在目录)的 Markdown 生成。
文档本身来自开放平台的目录接口:
GET https://open.bilibili.com/arcopen/user/open-doc/view?id=4data.online_doc 是整棵目录树,每个 Article 节点带 md_url。文档更新后重跑:
npm run build统计
文档 170 篇:95 篇单接口 + 2 篇多接口(共 100 个端点)、41 个推送事件、30 篇指南、2 篇协议说明
1243 个参数对象,100% 带类型;359/364 个请求参数带「必传」标记
20 个 scope、118 个错误码
面向 AI 的完整使用契约见 AGENTS.md。数据一致性由 npm run audit 把关(11 类检查)。
注意
所有业务接口在
https://member.bilibili.com,OAuth 在https://api.bilibili.com。上传分片走
https://openupos.bilivideo.com,裸二进制、不带签名头,凭 url 上的upload_token鉴权。稿件删除不可逆。
免责声明(摘要)
使用前请读全文:DISCLAIMER.md。 共 15 条,要点:
接口来源:本项目调用的所有接口均为哔哩哔哩官方提供并公开的接口 (开放平台文档 / 官方业务域名 / 官方 OAuth2 / 官方上传域名 / 官方直播间长连协议 / 官方 Webhook 规范), 不含私有接口、破解接口或绕过鉴权的实现。
无隶属关系:第三方项目,与哔哩哔哩(上海幻电信息科技有限公司 / 上海宽娱数码科技有限公司) 没有隶属、赞助、合作或背书关系;相关名称与商标归其权利人所有。
凭据自备,缺失即功能受限:本项目不内置、不收集、不上传任何凭据。 没有
BILI_COOKIE_FILE(secrets/cookies.json)和BILI_CRED_FILE(secrets/open-platform.json), 则开放平台接口与主站 Web 接口全部不可用,只剩纯本地的文档检索、错误码查询、代码生成、 沙盒 mock、签名演示。secrets/已在.gitignore中排除。账号安全:
SESSDATA等同于账号登录凭证,泄露即交出账号;勿在日志、截图、Issue、对话中暴露。使用者责任:遵守用户协议、社区公约、开放平台开发者协议与当地法律;本项目不做自动限速, 节流责任在调用方,滥用会导致你自己的账号被限流或封停。
无担保:按「现状」提供,官方接口随时可能变更,不承担因使用本项目造成的任何损失。
数据为快照:
data/是某一时点抓取的结构化快照,一切以官方文档与实际返回为准; 生成的代码是骨架,边界条件与错误处理需自行补齐测试。隐私:本地服务,无遥测、无上报、不向未指定的第三方发送数据; 但通过 AI 客户端使用时,你发送的内容与工具返回值会经过该客户端与模型提供方。
不构成法律/合规建议;第三方依赖(
@modelcontextprotocol/sdk、zod)自行评估。下架通道:权利人如认为本仓库内容侵犯权益,开 Issue 或联系仓库所有者,会尽快处理。
This server cannot be deployed
Maintenance
Related MCP Connectors
Bilibili videos for AI agents: search, creators, trending, stats, tags and danmaku comments.
Bilibili public video, article, dynamic, creator, comments, reactions, and transcript tools.
Bilibili (B站) data without login: video stats, comments, danmaku, creators, trending, hot searches.
660+ data tools for agents: TikTok, Douyin, Instagram, YouTube, X, weather, GitHub. Pay per call.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Bilibili (B站) platform through API and web scraping. Supports video search, article search, video info retrieval, comment fetching, danmaku extraction, and article content access.4-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to directly operate Bilibili, providing 27 tools for login, search, content publishing, data analysis, and interaction.159MIT
- AlicenseAqualityAmaintenanceEnables 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.1541 PyPI2MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to operate a user's own Bilibili account through MCP tools: scan-code login, browsing recommendations and rankings, watching videos with AI summaries, subtitles and frame overviews, plus commenting, @-mentioning, direct messaging, posting dynamics, and uploading videos. All operations return structured JSON with built-in rate limiting, audit logging, and safety guardrails.3,796 PyPI263MIT