@xzxzzx/bilibili-mcp 1.4.1 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +239 -40
- package/README_EN.md +245 -38
- package/dist/bilibili/http.js +2 -2
- package/dist/bilibili/http.js.map +1 -1
- package/dist/bilibili/subtitle.js +1 -1
- package/dist/bilibili/subtitle.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +63 -9
- package/dist/server.js.map +1 -1
- package/dist/utils/credential-guidance.d.ts +24 -0
- package/dist/utils/credential-guidance.d.ts.map +1 -0
- package/dist/utils/credential-guidance.js +49 -0
- package/dist/utils/credential-guidance.js.map +1 -0
- package/dist/utils/credentials.d.ts +2 -0
- package/dist/utils/credentials.d.ts.map +1 -1
- package/dist/utils/credentials.js +20 -0
- package/dist/utils/credentials.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ Bilibili MCP server — 让 Claude、Cursor、Codex 等 AI 客户端直接读取
|
|
|
9
9
|
🌐 [English Documentation](https://github.com/365903728-oss/bilibili-mcp/blob/master/README_EN.md) · 📜 [更新日志](https://github.com/365903728-oss/bilibili-mcp/blob/master/CHANGELOG.md) · 📦 [npm](https://www.npmjs.com/package/@xzxzzx/bilibili-mcp) · 🚀 [Release v1.4.0](https://github.com/365903728-oss/bilibili-mcp/releases/tag/v1.4.0)
|
|
10
10
|
|
|
11
11
|
> [!TIP]
|
|
12
|
-
> ⚠️
|
|
12
|
+
> ⚠️ 你可以把下方“用 agent 工具帮你安装”的提示词复制给 Codex、Claude Code、Cursor 等 agent,让它帮你完成 MCP 客户端接入和 Cookie 配置引导。为了稳定获取字幕、转录和评论,安装后仍需配置 B 站 Cookie(agent会引导你);不要把 Cookie 写进 MCP 客户端配置。Metadata 可能无需 Cookie。详见 [**凭证配置**](#️-凭证配置)。
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -17,6 +17,29 @@ Bilibili MCP server — 让 Claude、Cursor、Codex 等 AI 客户端直接读取
|
|
|
17
17
|
|
|
18
18
|
选择你正在使用的 AI 客户端,点击后可直接跳转到详细配置方法:
|
|
19
19
|
|
|
20
|
+
### 用 agent 工具帮你安装
|
|
21
|
+
|
|
22
|
+
如果你正在使用 Codex、Claude Code、Cursor、Qoder、Kimi Code、Antigravity、Windsurf、Cline 等带 agent 的工具,可以把下面这段话复制给你的 agent,让它先在本 README 中找到对应客户端的安装方式,再帮你写入 MCP 配置:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
请帮我安装 Bilibili MCP server:@xzxzzx/bilibili-mcp。
|
|
26
|
+
|
|
27
|
+
请先阅读这个项目 README 的“快速开始”和“客户端接入方式”章节,找到我当前使用的 agent/客户端对应的 MCP 配置方式,然后按该客户端的官方配置位置添加这个 server。
|
|
28
|
+
|
|
29
|
+
MCP server 配置要求:
|
|
30
|
+
- server 名称:bilibili-mcp
|
|
31
|
+
- command:npx
|
|
32
|
+
- args:["-y", "@xzxzzx/bilibili-mcp"]
|
|
33
|
+
|
|
34
|
+
不要把真实 Bilibili Cookie 写入 MCP 客户端配置文件、客户端配置里的 env 字段、args 或聊天消息中。
|
|
35
|
+
添加 MCP server 后,请继续引导我单独运行下面的命令,把 Cookie 保存到本机凭证配置;MCP server 启动后会自动读取这些凭证:
|
|
36
|
+
|
|
37
|
+
npx -y @xzxzzx/bilibili-mcp config
|
|
38
|
+
npx -y @xzxzzx/bilibili-mcp check
|
|
39
|
+
|
|
40
|
+
连接 MCP server 后,如可用,请调用 get_credential_setup_instructions 或 check_bilibili_credentials,确认我完成 Cookie 配置。
|
|
41
|
+
```
|
|
42
|
+
|
|
20
43
|
- [Codex app / Codex CLI](#codex-app--codex-cli)
|
|
21
44
|
- [Claude Code](#claude-code)
|
|
22
45
|
- [Claude Desktop](#claude-desktop)
|
|
@@ -29,6 +52,8 @@ Bilibili MCP server — 让 Claude、Cursor、Codex 等 AI 客户端直接读取
|
|
|
29
52
|
- [Trae International](#trae-international)
|
|
30
53
|
- [Trae SOLO CN](#trae-solo-cn)
|
|
31
54
|
- [Trae SOLO International](#trae-solo-international)
|
|
55
|
+
- [Qoder IDE / Qoder CLI / QoderWork](#qoder-ide--qoder-cli--qoderwork)
|
|
56
|
+
- [Kimi Code / Kimi Code CLI](#kimi-code--kimi-code-cli)
|
|
32
57
|
- [Antigravity / Antigravity CLI](#antigravity--antigravity-cli)
|
|
33
58
|
- [Pi](#pi)
|
|
34
59
|
- [Oh My Pi](#oh-my-pi)
|
|
@@ -36,7 +61,6 @@ Bilibili MCP server — 让 Claude、Cursor、Codex 等 AI 客户端直接读取
|
|
|
36
61
|
- [DeepSeek-TUI](#deepseek-tui)
|
|
37
62
|
- [Deep Code](#deep-code)
|
|
38
63
|
- [Reasonix](#reasonix)
|
|
39
|
-
- [Langcli](#langcli)
|
|
40
64
|
- [GitHub Copilot CLI](#github-copilot-cli)
|
|
41
65
|
- [Cursor](#cursor)
|
|
42
66
|
- [Cline](#cline)
|
|
@@ -60,7 +84,8 @@ Bilibili MCP server — 让 Claude、Cursor、Codex 等 AI 客户端直接读取
|
|
|
60
84
|
- [2. 评论总结 (`get_video_comments`)](#2-评论总结-get_video_comments)
|
|
61
85
|
- [3. 视频转录 (`get_video_transcript`)](#3-视频转录-get_video_transcript)
|
|
62
86
|
- [4. 视频元数据 (`get_video_metadata`)](#4-视频元数据-get_video_metadata)
|
|
63
|
-
- [5.
|
|
87
|
+
- [5. 凭证助手工具](#5-凭证助手工具)
|
|
88
|
+
- [6. 行为说明与错误处理](#6-行为说明与错误处理)
|
|
64
89
|
- [📋 环境要求](#-环境要求)
|
|
65
90
|
- [🚀 客户端接入方式](#-客户端接入方式)
|
|
66
91
|
- [⚙️ 凭证配置](#️-凭证配置)
|
|
@@ -107,7 +132,12 @@ Bilibili MCP server — 让 Claude、Cursor、Codex 等 AI 客户端直接读取
|
|
|
107
132
|
- 不获取字幕或评论
|
|
108
133
|
- 仅需 `bvid_or_url` 参数
|
|
109
134
|
|
|
110
|
-
### 5.
|
|
135
|
+
### 5. 凭证助手工具
|
|
136
|
+
|
|
137
|
+
- `get_credential_setup_instructions`: 返回安全的 Bilibili Cookie 配置命令和说明。AI agent 安装此 MCP 后可调用此工具引导用户完成配置。
|
|
138
|
+
- `check_bilibili_credentials`: 检查凭证是否已配置并处于登录状态,不返回任何 Cookie 值。配置缺失或失效时返回下一步操作指引。
|
|
139
|
+
|
|
140
|
+
### 6. 行为说明与错误处理
|
|
111
141
|
|
|
112
142
|
- **Cookie 过期智能检测**:当字幕获取为空时自动验证登录状态,区分“无字幕视频”与“凭证失效”,并抛出明确的 `COOKIE_EXPIRED` 错误,避免静默降级。
|
|
113
143
|
|
|
@@ -143,7 +173,26 @@ Bilibili MCP server — 让 Claude、Cursor、Codex 等 AI 客户端直接读取
|
|
|
143
173
|
## 🚀 客户端接入方式
|
|
144
174
|
|
|
145
175
|
> [!NOTE]
|
|
146
|
-
>
|
|
176
|
+
> 不要在 MCP 客户端配置文件中写入真实 Cookie。建议先用 `bilibili-mcp config` 保存到本机凭证配置,或在运行环境中提供环境变量;MCP server 启动后会自动读取这些凭证。详见 [⚙️ 凭证配置](#️-凭证配置)。
|
|
177
|
+
|
|
178
|
+
> [!IMPORTANT]
|
|
179
|
+
> 如果你是正在帮用户安装本 MCP 的 AI agent:不要只写入 MCP 配置就结束。添加 `bilibili-mcp` server 后,必须继续提醒并引导用户完成 Bilibili Cookie 配置。连接 MCP server 后,agent 也可调用 `get_credential_setup_instructions` 或 `check_bilibili_credentials` 工具来引导用户。
|
|
180
|
+
>
|
|
181
|
+
> 推荐引导用户运行:
|
|
182
|
+
>
|
|
183
|
+
> ```bash
|
|
184
|
+
> npx -y @xzxzzx/bilibili-mcp config
|
|
185
|
+
> npx -y @xzxzzx/bilibili-mcp check
|
|
186
|
+
> ```
|
|
187
|
+
>
|
|
188
|
+
> 如果用户已经全局安装,也可以使用:
|
|
189
|
+
>
|
|
190
|
+
> ```bash
|
|
191
|
+
> bilibili-mcp config
|
|
192
|
+
> bilibili-mcp check
|
|
193
|
+
> ```
|
|
194
|
+
>
|
|
195
|
+
> `config` 用于输入 `SESSDATA`、`bili_jct`、`DedeUserID`;`check` 用于确认凭证已加载。不要要求用户把 Cookie 粘贴进 Claude、Cursor、Codex、Qoder、Kimi 或其他 MCP 客户端配置文件。
|
|
147
196
|
|
|
148
197
|
### Codex app / Codex CLI
|
|
149
198
|
|
|
@@ -580,6 +629,112 @@ Trae SOLO International 已存在,官方 FAQ 说明国际版 SOLO 面向 Pro
|
|
|
580
629
|
|
|
581
630
|
如果使用 Trae International 的 UI,打开 AI 对话窗口右上角 Settings → MCP,手动添加同等 `mcpServers` 配置。
|
|
582
631
|
|
|
632
|
+
### Qoder IDE / Qoder CLI / QoderWork
|
|
633
|
+
|
|
634
|
+
Qoder 有多种形态,MCP 入口略有不同:Qoder IDE 在设置页配置,Qoder CLI 用 `qodercli mcp` 命令,QoderWork 桌面端在 MCP Servers 页面添加。
|
|
635
|
+
|
|
636
|
+
#### Qoder IDE
|
|
637
|
+
|
|
638
|
+
打开右上角用户图标 → Qoder Settings → MCP,在 My Servers 中点击 + Add,然后添加本地 STDIO server:
|
|
639
|
+
|
|
640
|
+
```json
|
|
641
|
+
{
|
|
642
|
+
"mcpServers": {
|
|
643
|
+
"bilibili-mcp": {
|
|
644
|
+
"command": "npx",
|
|
645
|
+
"args": ["-y", "@xzxzzx/bilibili-mcp"]
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
Qoder 文档说明 Streamable HTTP 可按 SSE endpoint 方式配置并自动检测;本项目是本地 stdio server,因此使用上面的 `command` / `args` 配置。
|
|
652
|
+
|
|
653
|
+
#### Qoder CLI
|
|
654
|
+
|
|
655
|
+
Qoder CLI 可直接添加 stdio MCP server:
|
|
656
|
+
|
|
657
|
+
```bash
|
|
658
|
+
qodercli mcp add bilibili-mcp -- npx -y @xzxzzx/bilibili-mcp
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
常用检查命令:
|
|
662
|
+
|
|
663
|
+
```bash
|
|
664
|
+
qodercli mcp list
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
如果 Qoder CLI 已经在运行,添加或修改 MCP server 后在会话中执行 `/mcp reload` 重新发现工具。默认 scope 是当前项目本地配置;也可以用 `-s user` 保存到用户级配置,或用 `-s project` 写入项目级 `.mcp.json`。
|
|
668
|
+
|
|
669
|
+
常见配置文件位置:
|
|
670
|
+
|
|
671
|
+
- 用户级:`~/.qoder/settings.json`
|
|
672
|
+
- 当前项目本地:`.qoder/settings.local.json`
|
|
673
|
+
- 项目级共享:`.mcp.json`
|
|
674
|
+
|
|
675
|
+
#### QoderWork
|
|
676
|
+
|
|
677
|
+
打开 QoderWork desktop app → Settings → MCP Servers,点击右上角 + Add。
|
|
678
|
+
|
|
679
|
+
最快方式是选择 Paste JSON Config,并粘贴:
|
|
680
|
+
|
|
681
|
+
```json
|
|
682
|
+
{
|
|
683
|
+
"mcpServers": {
|
|
684
|
+
"bilibili-mcp": {
|
|
685
|
+
"command": "npx",
|
|
686
|
+
"args": ["-y", "@xzxzzx/bilibili-mcp"]
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
也可以选择 Fill in Config Manually,Server Type 选择 STDIO:
|
|
693
|
+
|
|
694
|
+
- Server Name: `bilibili-mcp`
|
|
695
|
+
- Command: `npx -y @xzxzzx/bilibili-mcp`
|
|
696
|
+
|
|
697
|
+
添加后在 Custom Servers 中确认 server 已启用,并展开查看可用 tools。不要在 Qoder / QoderWork 的 MCP 配置中写真实 Cookie;凭证请使用 `bilibili-mcp config` 或环境变量配置。
|
|
698
|
+
|
|
699
|
+
### Kimi Code / Kimi Code CLI
|
|
700
|
+
|
|
701
|
+
Kimi Code CLI 可作为 MCP client 连接本地 stdio server。当前 Kimi Code 文档推荐把 MCP server 写入 `mcp.json`:
|
|
702
|
+
|
|
703
|
+
- 用户级:`~/.kimi-code/mcp.json`
|
|
704
|
+
- 项目级:`.kimi-code/mcp.json`
|
|
705
|
+
|
|
706
|
+
添加:
|
|
707
|
+
|
|
708
|
+
```json
|
|
709
|
+
{
|
|
710
|
+
"mcpServers": {
|
|
711
|
+
"bilibili-mcp": {
|
|
712
|
+
"command": "npx",
|
|
713
|
+
"args": ["-y", "@xzxzzx/bilibili-mcp"]
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
项目级 `.kimi-code/mcp.json` 只对当前仓库生效,并会覆盖同名用户级配置。进入 Kimi Code CLI 后,可以用:
|
|
720
|
+
|
|
721
|
+
```text
|
|
722
|
+
/mcp
|
|
723
|
+
/mcp-config
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
`/mcp` 查看连接状态和工具列表,`/mcp-config` 交互式添加、编辑或删除 MCP server。
|
|
727
|
+
|
|
728
|
+
旧版 Kimi CLI 文档也提供过 `kimi mcp add` 命令;如果你使用的安装版本仍支持该命令,可用:
|
|
729
|
+
|
|
730
|
+
```bash
|
|
731
|
+
kimi mcp add bilibili-mcp -- npx -y @xzxzzx/bilibili-mcp
|
|
732
|
+
kimi mcp list
|
|
733
|
+
kimi mcp test bilibili-mcp
|
|
734
|
+
```
|
|
735
|
+
|
|
736
|
+
不要在 Kimi Code 的 `mcp.json`、`env` 或命令参数中写真实 Cookie;凭证请用 `bilibili-mcp config` 或环境变量配置。
|
|
737
|
+
|
|
583
738
|
### Antigravity / Antigravity CLI
|
|
584
739
|
|
|
585
740
|
Gemini CLI 已迁移到 Antigravity CLI。新的 MCP 配置不再写在 `~/.gemini/settings.json`,而是使用独立的 `mcp_config.json`。
|
|
@@ -795,24 +950,6 @@ npx reasonix code --mcp "bilibili=npx -y @xzxzzx/bilibili-mcp"
|
|
|
795
950
|
|
|
796
951
|
Reasonix 的格式是 `name=command arg1 arg2`。如果需要项目级覆盖,可放在项目的 `.reasonix/` 下。
|
|
797
952
|
|
|
798
|
-
### Langcli
|
|
799
|
-
|
|
800
|
-
Langcli 当前官方文档只明确提供内置 Chrome MCP 用法,没有找到可添加任意 stdio MCP server 的 `mcpServers` 或 CLI 配置方式。因此这里暂不提供 `bilibili-mcp` 接入配置,避免误导用户。
|
|
801
|
-
|
|
802
|
-
如果只需要使用 Langcli 的内置 Chrome MCP,可按官方文档启动:
|
|
803
|
-
|
|
804
|
-
```bash
|
|
805
|
-
langcli --chrome
|
|
806
|
-
```
|
|
807
|
-
|
|
808
|
-
然后在 Langcli 中输入:
|
|
809
|
-
|
|
810
|
-
```text
|
|
811
|
-
/mcp
|
|
812
|
-
```
|
|
813
|
-
|
|
814
|
-
在 MCP 面板里管理 `mcp-chrome`。等 Langcli 官方公开任意 MCP server 配置方式后,再补充本项目的 `npx -y @xzxzzx/bilibili-mcp` 接入示例。
|
|
815
|
-
|
|
816
953
|
### GitHub Copilot CLI
|
|
817
954
|
|
|
818
955
|
GitHub Copilot CLI 可在交互模式里使用 `/mcp add` 添加 MCP server。按表单选择 `STDIO` 或 `Local`,然后填入:
|
|
@@ -996,21 +1133,27 @@ nanobot 的 MCP 配置兼容 Claude Desktop / Cursor 风格;也支持远程 MC
|
|
|
996
1133
|
|
|
997
1134
|
## ⚙️ 凭证配置
|
|
998
1135
|
|
|
999
|
-
|
|
1136
|
+
如果你使用上方“用 agent 工具帮你安装”的提示词,agent 会引导你完成本节步骤;通常不需要手动阅读完整配置。这里用于说明 Cookie 保存位置、安全边界,以及 Docker、本地开发等手动场景。为了稳定获取字幕、转录和评论,建议配置 Bilibili Cookie;公开视频元数据可能无需 Cookie。
|
|
1000
1137
|
|
|
1001
|
-
###
|
|
1138
|
+
### 推荐方式:让 agent 引导你配置
|
|
1139
|
+
|
|
1140
|
+
```bash
|
|
1141
|
+
npx -y @xzxzzx/bilibili-mcp config
|
|
1142
|
+
npx -y @xzxzzx/bilibili-mcp check
|
|
1143
|
+
```
|
|
1144
|
+
|
|
1145
|
+
如果你使用上方“用 agent 工具帮你安装”的提示词,agent 会在添加 MCP server 后引导你运行这两个命令。`config` 会把 Cookie 保存到本机凭证配置,MCP server 启动后会自动读取;不会写入 MCP 客户端配置或仓库。
|
|
1146
|
+
|
|
1147
|
+
如果已经全局安装,也可以运行:
|
|
1002
1148
|
|
|
1003
1149
|
```bash
|
|
1004
|
-
npm install -g @xzxzzx/bilibili-mcp
|
|
1005
1150
|
bilibili-mcp config
|
|
1006
1151
|
bilibili-mcp check
|
|
1007
1152
|
```
|
|
1008
1153
|
|
|
1009
|
-
CLI 会把凭证保存在本地配置目录,不会写入仓库。
|
|
1010
|
-
|
|
1011
1154
|
### 环境变量方式
|
|
1012
1155
|
|
|
1013
|
-
适合 Docker
|
|
1156
|
+
适合 Docker、本地开发或你明确知道当前 MCP server 运行环境的情况。不要把真实 Cookie 写进可共享的 MCP 客户端配置文件。
|
|
1014
1157
|
|
|
1015
1158
|
| 变量名 | 说明 |
|
|
1016
1159
|
|---|---|
|
|
@@ -1049,11 +1192,43 @@ BILIBILI_DEDEUSERID=<your_dedeuserid>
|
|
|
1049
1192
|
| 只想拿完整转录文本 | `get_video_transcript` | 纯字幕文本、语言、数据来源 |
|
|
1050
1193
|
| 想查看标题、作者、播放量等结构化信息 | `get_video_metadata` | 标题、作者、时长、发布时间、标签、统计数据 |
|
|
1051
1194
|
| 想看观众反馈和热门评论 | `get_video_comments` | 热门评论、时间戳评论、可选回复 |
|
|
1195
|
+
| 让 agent 引导用户配置 Cookie | `get_credential_setup_instructions` | 安全配置步骤、推荐命令、注意事项 |
|
|
1196
|
+
| 检查 Cookie 是否已配置/登录 | `check_bilibili_credentials` | configured、source、logged_in、next_steps |
|
|
1052
1197
|
|
|
1053
1198
|
## 💡 工具调用示例
|
|
1054
1199
|
|
|
1055
1200
|
> AI 客户端会自动将你的自然语言意图转换为对应的 JSON 调用。
|
|
1056
1201
|
|
|
1202
|
+
### `get_credential_setup_instructions`
|
|
1203
|
+
|
|
1204
|
+
**适合**:agent 安装 MCP server 后,引导用户完成 Cookie 配置。
|
|
1205
|
+
|
|
1206
|
+
请求示例:
|
|
1207
|
+
|
|
1208
|
+
```json
|
|
1209
|
+
{
|
|
1210
|
+
"name": "get_credential_setup_instructions",
|
|
1211
|
+
"arguments": {}
|
|
1212
|
+
}
|
|
1213
|
+
```
|
|
1214
|
+
|
|
1215
|
+
返回内容:推荐配置命令、全局安装命令、所需 Cookie 字段和安全提醒;不会返回任何 Cookie 值。
|
|
1216
|
+
|
|
1217
|
+
### `check_bilibili_credentials`
|
|
1218
|
+
|
|
1219
|
+
**适合**:检查当前环境是否已配置 Cookie,以及是否处于登录状态。
|
|
1220
|
+
|
|
1221
|
+
请求示例:
|
|
1222
|
+
|
|
1223
|
+
```json
|
|
1224
|
+
{
|
|
1225
|
+
"name": "check_bilibili_credentials",
|
|
1226
|
+
"arguments": {}
|
|
1227
|
+
}
|
|
1228
|
+
```
|
|
1229
|
+
|
|
1230
|
+
返回内容:`configured`、`source`(`env` / `global_config` / `none`)、`logged_in` 和 `next_steps`;不会返回任何 Cookie 值。
|
|
1231
|
+
|
|
1057
1232
|
### `get_video_transcript`
|
|
1058
1233
|
|
|
1059
1234
|
**适合**:需要把视频内容交给 AI 做摘要、笔记、问答或知识整理。
|
|
@@ -1139,10 +1314,12 @@ BILIBILI_DEDEUSERID=<your_dedeuserid>
|
|
|
1139
1314
|
|
|
1140
1315
|
## 🛡️ API 限流机制
|
|
1141
1316
|
|
|
1142
|
-
|
|
1317
|
+
为降低触发 Bilibili 风控和接口限流的概率,已内置以下请求控制策略:
|
|
1143
1318
|
|
|
1144
|
-
-
|
|
1145
|
-
-
|
|
1319
|
+
- **请求启动间隔**:默认 500ms(0.5 秒),可通过 `BILIBILI_RATE_LIMIT_MS` 调整。
|
|
1320
|
+
- **执行方式**:对 API 请求启动做节流,避免瞬时大并发;适合本地单用户 MCP 使用。
|
|
1321
|
+
- **重试策略**:对 408、429、5xx、网络错误和超时进行最多 3 次指数退避重试。
|
|
1322
|
+
- **超时控制**:默认 10 秒,可通过 `BILIBILI_REQUEST_TIMEOUT_MS` 调整。
|
|
1146
1323
|
|
|
1147
1324
|
---
|
|
1148
1325
|
|
|
@@ -1156,11 +1333,31 @@ cd bilibili-mcp
|
|
|
1156
1333
|
# 2. 安装依赖包
|
|
1157
1334
|
npm install
|
|
1158
1335
|
|
|
1159
|
-
# 3.
|
|
1336
|
+
# 3. 运行测试
|
|
1337
|
+
npm test
|
|
1338
|
+
|
|
1339
|
+
# 4. 编译 TypeScript
|
|
1340
|
+
npm run build
|
|
1341
|
+
|
|
1342
|
+
# 5. 启动监听与实时编译
|
|
1160
1343
|
npm run watch
|
|
1161
1344
|
```
|
|
1162
1345
|
|
|
1163
|
-
|
|
1346
|
+
常用命令:
|
|
1347
|
+
|
|
1348
|
+
| 命令 | 用途 |
|
|
1349
|
+
|---|---|
|
|
1350
|
+
| `npm run build` | 编译 TypeScript 到 `dist/` |
|
|
1351
|
+
| `npm test` | 运行 Vitest 单元测试 |
|
|
1352
|
+
| `npm run watch` | 开发时持续编译 |
|
|
1353
|
+
| `npm start` | 运行已编译的 stdio MCP server |
|
|
1354
|
+
| `npm pack --dry-run` | 检查 npm 包会包含哪些文件 |
|
|
1355
|
+
|
|
1356
|
+
本地调试说明:
|
|
1357
|
+
|
|
1358
|
+
- MCP server 的入口是 `dist/index.js`,CLI 入口是 `dist/cli.js`;修改源码后先运行 `npm run build`。
|
|
1359
|
+
- 启动 stdio MCP server 后,`stdout` 必须保留给 MCP 协议数据;调试日志和错误信息应写到 `stderr`,因此本项目使用 `console.error` 输出运行日志。
|
|
1360
|
+
- 不要在测试、日志、示例或提交内容中写入真实 Cookie。需要验证凭证时,使用 `npx -y @xzxzzx/bilibili-mcp check` 或本地环境变量。
|
|
1164
1361
|
|
|
1165
1362
|
---
|
|
1166
1363
|
|
|
@@ -1168,14 +1365,15 @@ npm run watch
|
|
|
1168
1365
|
|
|
1169
1366
|
> **⚠️ 重要:使用本工具即代表您同意以下条款**
|
|
1170
1367
|
|
|
1171
|
-
-
|
|
1172
|
-
-
|
|
1173
|
-
-
|
|
1174
|
-
-
|
|
1368
|
+
- **非官方项目**:Bilibili(哔哩哔哩)是哔哩哔哩公司的注册商标。本项目是第三方开源辅助工具,不隶属于 Bilibili,也不代表 Bilibili 官方。
|
|
1369
|
+
- **使用边界**:本项目仅供个人学习、辅助阅读和内容理解使用。请遵守 Bilibili 用户协议、robots/接口访问规则和当地法律法规;不要用于商业剥削、大规模抓取、绕过权限或其他滥用场景。
|
|
1370
|
+
- **账号风险**:所有请求均由用户本机发起。高频调用、异常访问模式、Cookie 泄露或账号自身状态可能触发风控、限流或账号异常;相关后果由使用者自行承担。
|
|
1371
|
+
- **Cookie 安全**:不要把真实 Cookie 写入 MCP 客户端配置、公开聊天、Issue、PR、README、日志或测试文件。建议使用本项目的本机凭证配置、运行环境变量或本地 `.env` 管理 Cookie;Cookie 泄露后应立即在 Bilibili 账号侧失效旧登录状态。
|
|
1372
|
+
- **隐私说明**:本项目不会把 Cookie 上传到除 Bilibili 官方接口以外的第三方服务。凭证仅在本机按用户选择的方式保存或读取;当前本地配置文件不承诺系统级加密,请自行保护设备、账号和配置文件访问权限。
|
|
1175
1373
|
|
|
1176
1374
|
### 许可证
|
|
1177
1375
|
|
|
1178
|
-
|
|
1376
|
+
本项目基于 **GNU General Public License v3.0** 开源。使用、复制、修改和分发本项目时,请遵守 GPL-3.0 的许可要求。
|
|
1179
1377
|
|
|
1180
1378
|
---
|
|
1181
1379
|
|
|
@@ -1185,6 +1383,7 @@ npm run watch
|
|
|
1185
1383
|
|
|
1186
1384
|
1. **初版生成**:由 **Claude Code** (搭载 **GLM-4.7** 模型) 快速搭建核心架构与基础逻辑。
|
|
1187
1385
|
2. **调试与优化**:在 **Antigravity** 环境下,利用 **Claude** 和 **Gemini** 模型进行深度的 Bug 修复与功能增强,确保了字幕提取与评论分析的稳定性。
|
|
1386
|
+
3. **迭代与扩展**:由 **Codex** 进行架构决策与计划分解,**Claude Code** 接入 **DeepSeek** 模型执行实现;目前覆盖 30+ AI 客户端的 MCP 接入配置、6 个 MCP 工具、122 个单元测试。
|
|
1188
1387
|
|
|
1189
1388
|
---
|
|
1190
1389
|
|
|
@@ -1193,7 +1392,7 @@ npm run watch
|
|
|
1193
1392
|
如果您在使用过程中遇到任何问题,或者有好的功能建议,欢迎通过以下方式联系:
|
|
1194
1393
|
|
|
1195
1394
|
- **提交 Issue**:[GitHub Issues](https://github.com/365903728-oss/bilibili-mcp/issues) —— **推荐方式**,我会定期查看并回复。
|
|
1196
|
-
- **项目讨论**:在 [GitHub Discussions](https://github.com/365903728-oss/bilibili-mcp/discussions)
|
|
1395
|
+
- **项目讨论**:在 [GitHub Discussions](https://github.com/365903728-oss/bilibili-mcp/discussions) 中交流。
|
|
1197
1396
|
|
|
1198
1397
|
感谢您的支持!
|
|
1199
1398
|
|
package/README_EN.md
CHANGED
|
@@ -9,7 +9,7 @@ MCP server that gives AI clients access to Bilibili video subtitles, transcripts
|
|
|
9
9
|
View in [简体中文](https://github.com/365903728-oss/bilibili-mcp/blob/master/README.md) · 📜 [Changelog](https://github.com/365903728-oss/bilibili-mcp/blob/master/CHANGELOG_EN.md) · 📦 [npm](https://www.npmjs.com/package/@xzxzzx/bilibili-mcp) · 🚀 [Release v1.4.0](https://github.com/365903728-oss/bilibili-mcp/releases/tag/v1.4.0)
|
|
10
10
|
|
|
11
11
|
> [!TIP]
|
|
12
|
-
> ⚠️
|
|
12
|
+
> ⚠️ You can copy the "Install With Your Agent" prompt below to Codex, Claude Code, Cursor, or another agent and let it add this MCP server to your client and guide Cookie setup. For reliable subtitles, transcripts, and comments, you still need to configure Bilibili Cookies after installation; do not write Cookies into MCP client config. Metadata may work without cookies. See [**Credential Configuration**](#-credential-configuration).
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
@@ -17,6 +17,29 @@ View in [简体中文](https://github.com/365903728-oss/bilibili-mcp/blob/master
|
|
|
17
17
|
|
|
18
18
|
Choose your AI client and jump directly to the detailed setup instructions:
|
|
19
19
|
|
|
20
|
+
### Install With Your Agent
|
|
21
|
+
|
|
22
|
+
If you use an agent-based tool such as Codex, Claude Code, Cursor, Qoder, Kimi Code, Antigravity, Windsurf, or Cline, copy the prompt below to your agent. Ask it to find the matching client setup section in this README and write the MCP config for that client:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
Please help me install the Bilibili MCP server: @xzxzzx/bilibili-mcp.
|
|
26
|
+
|
|
27
|
+
First read this project's README, especially the "Quick Start" and "Client Setup" sections. Find the MCP setup method that matches my current agent/client, then add this server in that client's official configuration location.
|
|
28
|
+
|
|
29
|
+
MCP server config requirements:
|
|
30
|
+
- server name: bilibili-mcp
|
|
31
|
+
- command: npx
|
|
32
|
+
- args: ["-y", "@xzxzzx/bilibili-mcp"]
|
|
33
|
+
|
|
34
|
+
Do not write real Bilibili Cookie values into MCP client config files, client-config env fields, args, or chat messages.
|
|
35
|
+
After adding the MCP server, continue guiding me to run the commands below. They save Cookies to the local credential config; the MCP server will read those credentials automatically when it starts:
|
|
36
|
+
|
|
37
|
+
npx -y @xzxzzx/bilibili-mcp config
|
|
38
|
+
npx -y @xzxzzx/bilibili-mcp check
|
|
39
|
+
|
|
40
|
+
After the MCP server is connected, if available, call get_credential_setup_instructions or check_bilibili_credentials to confirm that I completed Cookie setup.
|
|
41
|
+
```
|
|
42
|
+
|
|
20
43
|
- [Codex app / Codex CLI](#codex-app--codex-cli)
|
|
21
44
|
- [Claude Code](#claude-code)
|
|
22
45
|
- [Claude Desktop](#claude-desktop)
|
|
@@ -29,6 +52,8 @@ Choose your AI client and jump directly to the detailed setup instructions:
|
|
|
29
52
|
- [Trae International](#trae-international)
|
|
30
53
|
- [Trae SOLO CN](#trae-solo-cn)
|
|
31
54
|
- [Trae SOLO International](#trae-solo-international)
|
|
55
|
+
- [Qoder IDE / Qoder CLI / QoderWork](#qoder-ide--qoder-cli--qoderwork)
|
|
56
|
+
- [Kimi Code / Kimi Code CLI](#kimi-code--kimi-code-cli)
|
|
32
57
|
- [Antigravity / Antigravity CLI](#antigravity--antigravity-cli)
|
|
33
58
|
- [Pi](#pi)
|
|
34
59
|
- [Oh My Pi](#oh-my-pi)
|
|
@@ -36,7 +61,6 @@ Choose your AI client and jump directly to the detailed setup instructions:
|
|
|
36
61
|
- [DeepSeek-TUI](#deepseek-tui)
|
|
37
62
|
- [Deep Code](#deep-code)
|
|
38
63
|
- [Reasonix](#reasonix)
|
|
39
|
-
- [Langcli](#langcli)
|
|
40
64
|
- [GitHub Copilot CLI](#github-copilot-cli)
|
|
41
65
|
- [Cursor](#cursor)
|
|
42
66
|
- [Cline](#cline)
|
|
@@ -60,7 +84,8 @@ Choose your AI client and jump directly to the detailed setup instructions:
|
|
|
60
84
|
- [2. Comment Summarization (`get_video_comments`)](#2-comment-summarization-get_video_comments)
|
|
61
85
|
- [3. Video Transcript (`get_video_transcript`)](#3-video-transcript-get_video_transcript)
|
|
62
86
|
- [4. Video Metadata (`get_video_metadata`)](#4-video-metadata-get_video_metadata)
|
|
63
|
-
- [5.
|
|
87
|
+
- [5. Credential Helper Tools](#5-credential-helper-tools)
|
|
88
|
+
- [6. Behavior and Error Handling](#6-behavior-and-error-handling)
|
|
64
89
|
- [📋 Requirements](#-requirements)
|
|
65
90
|
- [🚀 Client Setup](#-client-setup)
|
|
66
91
|
- [⚙️ Credential Configuration](#-credential-configuration)
|
|
@@ -107,7 +132,12 @@ Choose your AI client and jump directly to the detailed setup instructions:
|
|
|
107
132
|
- Does not fetch subtitles or comments.
|
|
108
133
|
- Only requires the `bvid_or_url` parameter.
|
|
109
134
|
|
|
110
|
-
### 5.
|
|
135
|
+
### 5. Credential Helper Tools
|
|
136
|
+
|
|
137
|
+
- `get_credential_setup_instructions`: Returns safe setup commands for Bilibili Cookie configuration. AI agents installing this MCP can call this tool to guide users through setup.
|
|
138
|
+
- `check_bilibili_credentials`: Checks whether credentials are configured and logged in without returning Cookie values. Returns next steps when credentials are missing or invalid.
|
|
139
|
+
|
|
140
|
+
### 6. Behavior and Error Handling
|
|
111
141
|
|
|
112
142
|
- **Intelligent Cookie Expiration Detection**: Automatically verifies login status when subtitles are empty, distinguishing between "videos without subtitles" and "invalid credentials," and throwing a clear `COOKIE_EXPIRED` error to prevent silent degradation.
|
|
113
143
|
|
|
@@ -143,7 +173,26 @@ Choose your AI client and jump directly to the detailed setup instructions:
|
|
|
143
173
|
## 🚀 Client Setup
|
|
144
174
|
|
|
145
175
|
> [!NOTE]
|
|
146
|
-
> Do not write real Cookie values in client config files. Prefer `bilibili-mcp config` or environment variables. See [⚙️ Credential Configuration](#-credential-configuration).
|
|
176
|
+
> Do not write real Cookie values in MCP client config files. Prefer `bilibili-mcp config` to save credentials to the local credential config, or provide environment variables in the runtime environment; the MCP server will read those credentials automatically when it starts. See [⚙️ Credential Configuration](#-credential-configuration).
|
|
177
|
+
|
|
178
|
+
> [!IMPORTANT]
|
|
179
|
+
> If you are an AI agent installing this MCP for a user: do not stop after writing the MCP client config. After adding the `bilibili-mcp` server, you must remind and guide the user to configure Bilibili Cookies separately. After connecting the MCP server, agents can also call `get_credential_setup_instructions` or `check_bilibili_credentials` to guide the user.
|
|
180
|
+
>
|
|
181
|
+
> Recommended commands:
|
|
182
|
+
>
|
|
183
|
+
> ```bash
|
|
184
|
+
> npx -y @xzxzzx/bilibili-mcp config
|
|
185
|
+
> npx -y @xzxzzx/bilibili-mcp check
|
|
186
|
+
> ```
|
|
187
|
+
>
|
|
188
|
+
> If the package is already installed globally, use:
|
|
189
|
+
>
|
|
190
|
+
> ```bash
|
|
191
|
+
> bilibili-mcp config
|
|
192
|
+
> bilibili-mcp check
|
|
193
|
+
> ```
|
|
194
|
+
>
|
|
195
|
+
> `config` collects `SESSDATA`, `bili_jct`, and `DedeUserID`; `check` verifies that credentials can be loaded. Do not ask users to paste Cookie values into Claude, Cursor, Codex, Qoder, Kimi, or any other MCP client configuration file.
|
|
147
196
|
|
|
148
197
|
### Codex app / Codex CLI
|
|
149
198
|
|
|
@@ -419,6 +468,112 @@ Project-level config also uses `.trae/mcp.json`:
|
|
|
419
468
|
|
|
420
469
|
If using the Trae International UI, open Settings → MCP from the top-right of the AI chat window and add the same `mcpServers` configuration manually.
|
|
421
470
|
|
|
471
|
+
### Qoder IDE / Qoder CLI / QoderWork
|
|
472
|
+
|
|
473
|
+
Qoder has multiple surfaces, and each uses a slightly different MCP entry point: Qoder IDE configures MCP from settings, Qoder CLI uses `qodercli mcp`, and QoderWork adds servers from its MCP Servers page.
|
|
474
|
+
|
|
475
|
+
#### Qoder IDE
|
|
476
|
+
|
|
477
|
+
Open the top-right user icon → Qoder Settings → MCP. On the My Servers tab, click + Add, then add this local STDIO server:
|
|
478
|
+
|
|
479
|
+
```json
|
|
480
|
+
{
|
|
481
|
+
"mcpServers": {
|
|
482
|
+
"bilibili-mcp": {
|
|
483
|
+
"command": "npx",
|
|
484
|
+
"args": ["-y", "@xzxzzx/bilibili-mcp"]
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
Qoder documents that Streamable HTTP can be configured like an SSE endpoint and auto-detected. This project is a local stdio server, so use the `command` / `args` setup above.
|
|
491
|
+
|
|
492
|
+
#### Qoder CLI
|
|
493
|
+
|
|
494
|
+
Qoder CLI can add this stdio MCP server directly:
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
qodercli mcp add bilibili-mcp -- npx -y @xzxzzx/bilibili-mcp
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
Useful check:
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
qodercli mcp list
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
If Qoder CLI is already running, run `/mcp reload` in the session after adding or changing an MCP server. The default scope is local to the current project; use `-s user` for user-level config or `-s project` for project-level `.mcp.json`.
|
|
507
|
+
|
|
508
|
+
Common config files:
|
|
509
|
+
|
|
510
|
+
- User level: `~/.qoder/settings.json`
|
|
511
|
+
- Local project-specific: `.qoder/settings.local.json`
|
|
512
|
+
- Project-level shared: `.mcp.json`
|
|
513
|
+
|
|
514
|
+
#### QoderWork
|
|
515
|
+
|
|
516
|
+
Open QoderWork desktop app → Settings → MCP Servers, then click + Add.
|
|
517
|
+
|
|
518
|
+
The fastest path is Paste JSON Config:
|
|
519
|
+
|
|
520
|
+
```json
|
|
521
|
+
{
|
|
522
|
+
"mcpServers": {
|
|
523
|
+
"bilibili-mcp": {
|
|
524
|
+
"command": "npx",
|
|
525
|
+
"args": ["-y", "@xzxzzx/bilibili-mcp"]
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
You can also choose Fill in Config Manually, set Server Type to STDIO, and enter:
|
|
532
|
+
|
|
533
|
+
- Server Name: `bilibili-mcp`
|
|
534
|
+
- Command: `npx -y @xzxzzx/bilibili-mcp`
|
|
535
|
+
|
|
536
|
+
After adding it, confirm the server is enabled under Custom Servers and expand it to inspect available tools. Do not write real Cookie values in Qoder / QoderWork MCP config; configure credentials with `bilibili-mcp config` or environment variables.
|
|
537
|
+
|
|
538
|
+
### Kimi Code / Kimi Code CLI
|
|
539
|
+
|
|
540
|
+
Kimi Code CLI can act as an MCP client for local stdio servers. Current Kimi Code docs recommend declaring MCP servers in `mcp.json`:
|
|
541
|
+
|
|
542
|
+
- User level: `~/.kimi-code/mcp.json`
|
|
543
|
+
- Project level: `.kimi-code/mcp.json`
|
|
544
|
+
|
|
545
|
+
Add:
|
|
546
|
+
|
|
547
|
+
```json
|
|
548
|
+
{
|
|
549
|
+
"mcpServers": {
|
|
550
|
+
"bilibili-mcp": {
|
|
551
|
+
"command": "npx",
|
|
552
|
+
"args": ["-y", "@xzxzzx/bilibili-mcp"]
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
Project-level `.kimi-code/mcp.json` applies only to the current repository and overrides a same-named user-level server. Inside Kimi Code CLI, use:
|
|
559
|
+
|
|
560
|
+
```text
|
|
561
|
+
/mcp
|
|
562
|
+
/mcp-config
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
`/mcp` shows server connection status and tools. `/mcp-config` opens the interactive MCP server manager for adding, editing, or deleting servers.
|
|
566
|
+
|
|
567
|
+
Legacy Kimi CLI docs also documented `kimi mcp add`; if your installed version still supports it, you can use:
|
|
568
|
+
|
|
569
|
+
```bash
|
|
570
|
+
kimi mcp add bilibili-mcp -- npx -y @xzxzzx/bilibili-mcp
|
|
571
|
+
kimi mcp list
|
|
572
|
+
kimi mcp test bilibili-mcp
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
Do not write real Cookie values in Kimi Code `mcp.json`, `env`, or command arguments. Configure credentials with `bilibili-mcp config` or environment variables.
|
|
576
|
+
|
|
422
577
|
### Antigravity / Antigravity CLI
|
|
423
578
|
|
|
424
579
|
Gemini CLI has migrated to Antigravity CLI. New MCP setup no longer lives in `~/.gemini/settings.json`; Antigravity uses a standalone `mcp_config.json`.
|
|
@@ -634,24 +789,6 @@ Add an entry to the `mcp` array:
|
|
|
634
789
|
|
|
635
790
|
Reasonix uses `name=command arg1 arg2` strings. Project-level overrides live under `.reasonix/`.
|
|
636
791
|
|
|
637
|
-
### Langcli
|
|
638
|
-
|
|
639
|
-
Langcli's current official documentation only clearly documents its built-in Chrome MCP flow. I did not find a reliable `mcpServers` or CLI configuration path for adding arbitrary stdio MCP servers, so this README does not present `bilibili-mcp` as a supported Langcli setup yet.
|
|
640
|
-
|
|
641
|
-
If you only need Langcli's built-in Chrome MCP, start it with:
|
|
642
|
-
|
|
643
|
-
```bash
|
|
644
|
-
langcli --chrome
|
|
645
|
-
```
|
|
646
|
-
|
|
647
|
-
Then run this inside Langcli:
|
|
648
|
-
|
|
649
|
-
```text
|
|
650
|
-
/mcp
|
|
651
|
-
```
|
|
652
|
-
|
|
653
|
-
Use the MCP panel to manage `mcp-chrome`. Once Langcli documents a generic MCP server configuration path, add `npx -y @xzxzzx/bilibili-mcp` there.
|
|
654
|
-
|
|
655
792
|
### GitHub Copilot CLI
|
|
656
793
|
|
|
657
794
|
In GitHub Copilot CLI interactive mode, use `/mcp add`. Choose `STDIO` or `Local`, then fill in:
|
|
@@ -996,21 +1133,27 @@ nanobot's MCP config is compatible with Claude Desktop / Cursor style config. It
|
|
|
996
1133
|
|
|
997
1134
|
## ⚙️ Credential Configuration
|
|
998
1135
|
|
|
999
|
-
|
|
1136
|
+
If you use the "Install With Your Agent" prompt above, the agent should guide you through this section; you usually do not need to read the full setup manually. This section explains where Cookies are stored, the safety boundary, and manual scenarios such as Docker or local development. For reliable subtitles, transcripts, and comments, configure Bilibili Cookies; public video metadata may work without cookies.
|
|
1137
|
+
|
|
1138
|
+
### Recommended: Agent-Guided Credential Setup
|
|
1139
|
+
|
|
1140
|
+
```bash
|
|
1141
|
+
npx -y @xzxzzx/bilibili-mcp config
|
|
1142
|
+
npx -y @xzxzzx/bilibili-mcp check
|
|
1143
|
+
```
|
|
1144
|
+
|
|
1145
|
+
If you use the "Install With Your Agent" prompt above, the agent should guide you to run these commands after it adds the MCP server. `config` saves Cookies to the local credential config, which the MCP server reads automatically when it starts; it does not write Cookies into MCP client config or the repository.
|
|
1000
1146
|
|
|
1001
|
-
|
|
1147
|
+
If the package is already installed globally, you can also run:
|
|
1002
1148
|
|
|
1003
1149
|
```bash
|
|
1004
|
-
npm install -g @xzxzzx/bilibili-mcp
|
|
1005
1150
|
bilibili-mcp config
|
|
1006
1151
|
bilibili-mcp check
|
|
1007
1152
|
```
|
|
1008
1153
|
|
|
1009
|
-
The CLI saves credentials to a local config directory, outside the repository.
|
|
1010
|
-
|
|
1011
1154
|
### Environment Variables
|
|
1012
1155
|
|
|
1013
|
-
For Docker, local development, or
|
|
1156
|
+
For Docker, local development, or cases where you explicitly control the MCP server runtime environment. Do not put real Cookies in shareable MCP client config files.
|
|
1014
1157
|
|
|
1015
1158
|
| Variable | Description |
|
|
1016
1159
|
|---|---|
|
|
@@ -1049,11 +1192,43 @@ Do not share cookies with others. Do not paste them into public chats, issues, P
|
|
|
1049
1192
|
| Get clean transcript text | `get_video_transcript` | Plain subtitle text, language, data source |
|
|
1050
1193
|
| See structured metadata | `get_video_metadata` | Title, author, duration, publish date, tags, stats |
|
|
1051
1194
|
| View audience reactions | `get_video_comments` | Popular comments, timestamped highlights, optional replies |
|
|
1195
|
+
| Guide users through Cookie setup | `get_credential_setup_instructions` | Safe setup steps, recommended commands, security notes |
|
|
1196
|
+
| Check whether Cookies are configured/logged in | `check_bilibili_credentials` | configured, source, logged_in, next_steps |
|
|
1052
1197
|
|
|
1053
1198
|
## 💡 Tool Call Examples
|
|
1054
1199
|
|
|
1055
1200
|
> Your AI client will automatically turn your natural-language intent into the corresponding JSON call.
|
|
1056
1201
|
|
|
1202
|
+
### `get_credential_setup_instructions`
|
|
1203
|
+
|
|
1204
|
+
**Best for**: letting an agent guide Cookie setup after installing the MCP server.
|
|
1205
|
+
|
|
1206
|
+
Request:
|
|
1207
|
+
|
|
1208
|
+
```json
|
|
1209
|
+
{
|
|
1210
|
+
"name": "get_credential_setup_instructions",
|
|
1211
|
+
"arguments": {}
|
|
1212
|
+
}
|
|
1213
|
+
```
|
|
1214
|
+
|
|
1215
|
+
Returns: recommended setup commands, global-install commands, required Cookie fields, and security notes; never returns Cookie values.
|
|
1216
|
+
|
|
1217
|
+
### `check_bilibili_credentials`
|
|
1218
|
+
|
|
1219
|
+
**Best for**: checking whether the current environment has Cookies configured and whether they are logged in.
|
|
1220
|
+
|
|
1221
|
+
Request:
|
|
1222
|
+
|
|
1223
|
+
```json
|
|
1224
|
+
{
|
|
1225
|
+
"name": "check_bilibili_credentials",
|
|
1226
|
+
"arguments": {}
|
|
1227
|
+
}
|
|
1228
|
+
```
|
|
1229
|
+
|
|
1230
|
+
Returns: `configured`, `source` (`env` / `global_config` / `none`), `logged_in`, and `next_steps`; never returns Cookie values.
|
|
1231
|
+
|
|
1057
1232
|
### `get_video_transcript`
|
|
1058
1233
|
|
|
1059
1234
|
**Best for**: feeding video content into AI for summarization, note-taking, Q&A, or knowledge management.
|
|
@@ -1139,31 +1314,63 @@ Returns: `comments[]` (author, content, likes, timestamp, has_timestamp), `summa
|
|
|
1139
1314
|
|
|
1140
1315
|
## 🛡️ API Rate Limiting
|
|
1141
1316
|
|
|
1142
|
-
Built-in
|
|
1143
|
-
|
|
1144
|
-
- **
|
|
1317
|
+
Built-in request controls reduce the chance of triggering Bilibili risk checks or API rate limits:
|
|
1318
|
+
|
|
1319
|
+
- **Request start interval**: defaults to 500ms (0.5s), configurable with `BILIBILI_RATE_LIMIT_MS`.
|
|
1320
|
+
- **Execution model**: throttles API request starts to avoid burst concurrency; intended for local single-user MCP usage.
|
|
1321
|
+
- **Retry strategy**: retries 408, 429, 5xx, network errors, and timeouts up to 3 times with exponential backoff.
|
|
1322
|
+
- **Timeout**: defaults to 10 seconds, configurable with `BILIBILI_REQUEST_TIMEOUT_MS`.
|
|
1145
1323
|
|
|
1146
1324
|
---
|
|
1147
1325
|
|
|
1148
1326
|
## 🛠️ Development Guide
|
|
1149
1327
|
|
|
1150
1328
|
```bash
|
|
1329
|
+
# 1. Clone the repository
|
|
1151
1330
|
git clone https://github.com/365903728-oss/bilibili-mcp.git
|
|
1152
1331
|
cd bilibili-mcp
|
|
1332
|
+
|
|
1333
|
+
# 2. Install dependencies
|
|
1153
1334
|
npm install
|
|
1335
|
+
|
|
1336
|
+
# 3. Run tests
|
|
1337
|
+
npm test
|
|
1338
|
+
|
|
1339
|
+
# 4. Build TypeScript
|
|
1340
|
+
npm run build
|
|
1341
|
+
|
|
1342
|
+
# 5. Watch and rebuild during development
|
|
1154
1343
|
npm run watch
|
|
1155
1344
|
```
|
|
1156
1345
|
|
|
1346
|
+
Common commands:
|
|
1347
|
+
|
|
1348
|
+
| Command | Purpose |
|
|
1349
|
+
|---|---|
|
|
1350
|
+
| `npm run build` | Compile TypeScript into `dist/` |
|
|
1351
|
+
| `npm test` | Run the Vitest unit tests |
|
|
1352
|
+
| `npm run watch` | Continuously compile during development |
|
|
1353
|
+
| `npm start` | Run the compiled stdio MCP server |
|
|
1354
|
+
| `npm pack --dry-run` | Inspect which files would be included in the npm package |
|
|
1355
|
+
|
|
1356
|
+
Local debugging notes:
|
|
1357
|
+
|
|
1358
|
+
- The MCP server entry point is `dist/index.js`, and the CLI entry point is `dist/cli.js`; run `npm run build` after changing source files.
|
|
1359
|
+
- For stdio MCP servers, `stdout` must be reserved for MCP protocol data. Runtime logs and errors should go to `stderr`, so this project uses `console.error` for operational logs.
|
|
1360
|
+
- Do not put real Cookies in tests, logs, examples, or commits. To verify credentials, use `npx -y @xzxzzx/bilibili-mcp check` or local environment variables.
|
|
1361
|
+
|
|
1157
1362
|
---
|
|
1158
1363
|
|
|
1159
1364
|
## ⚖️ Safety and Disclaimer
|
|
1160
1365
|
|
|
1161
|
-
- **
|
|
1162
|
-
- **
|
|
1163
|
-
- **
|
|
1366
|
+
- **Unofficial project**: Bilibili is a registered trademark of Bilibili Inc. This is a third-party open-source helper tool. It is not affiliated with, endorsed by, or representative of Bilibili.
|
|
1367
|
+
- **Usage boundary**: This project is intended for personal learning, assisted reading, and content understanding. Follow Bilibili's terms, robots/interface access rules, and applicable laws. Do not use it for commercial exploitation, large-scale scraping, permission bypassing, or other abusive scenarios.
|
|
1368
|
+
- **Account risk**: Requests are initiated from the user's local machine. High-frequency access, abnormal request patterns, Cookie leaks, or account-specific state may trigger risk controls, rate limits, or account issues. Users are responsible for their own usage and consequences.
|
|
1369
|
+
- **Cookie safety**: Do not put real Cookies in MCP client config, public chats, issues, PRs, READMEs, logs, or test files. Prefer this project's local credential config, runtime environment variables, or a local `.env` file. If Cookies leak, invalidate the old Bilibili login session immediately.
|
|
1370
|
+
- **Privacy**: This project does not upload Cookies to any third-party service other than Bilibili's official API. Credentials are stored or read locally according to the user's chosen setup. The current local config file does not promise system-level encryption; protect your device, account, and config file permissions.
|
|
1164
1371
|
|
|
1165
1372
|
### License
|
|
1166
|
-
Open-sourced under **GNU General Public License v3.0**.
|
|
1373
|
+
Open-sourced under **GNU General Public License v3.0**. When using, copying, modifying, or distributing this project, follow the GPL-3.0 license requirements.
|
|
1167
1374
|
|
|
1168
1375
|
---
|
|
1169
1376
|
|
|
@@ -1173,7 +1380,7 @@ This project is a crystal of AI-collaborative development, spanning from prototy
|
|
|
1173
1380
|
|
|
1174
1381
|
1. **Initial Generation**: Core architecture and base logic were rapidly built by **Claude Code** (powered by **GLM-4.7** model).
|
|
1175
1382
|
2. **Debugging & Optimization**: Bugs were fixed and features enhanced using **Claude** and **Gemini** models within the **Antigravity** environment, ensuring stable subtitle extraction and comment analysis.
|
|
1176
|
-
3. **
|
|
1383
|
+
3. **Iteration & Expansion**: **Codex** handles architectural decisions and planning, while **Claude Code** with **DeepSeek** executes implementation; now covers 30+ AI client MCP configurations, 6 MCP tools, and 122 unit tests.
|
|
1177
1384
|
|
|
1178
1385
|
---
|
|
1179
1386
|
|
|
@@ -1182,6 +1389,6 @@ This project is a crystal of AI-collaborative development, spanning from prototy
|
|
|
1182
1389
|
If you encounter any issues or have feature suggestions, feel free to reach out:
|
|
1183
1390
|
|
|
1184
1391
|
- **Submit an Issue**: [GitHub Issues](https://github.com/365903728-oss/bilibili-mcp/issues) — **Recommended**, I check and respond regularly.
|
|
1185
|
-
- **Discussions**: Join our [GitHub Discussions](https://github.com/365903728-oss/bilibili-mcp/discussions)
|
|
1392
|
+
- **Discussions**: Join our [GitHub Discussions](https://github.com/365903728-oss/bilibili-mcp/discussions) for general chat.
|
|
1186
1393
|
|
|
1187
1394
|
Thank you for your support!
|
package/dist/bilibili/http.js
CHANGED
|
@@ -155,7 +155,7 @@ export async function fetchWithWBI(path, params, additionalHeaders = {}) {
|
|
|
155
155
|
console.error("❌ 检测到 Bilibili Cookie 已过期或失效 (-101):", {
|
|
156
156
|
url: url.toString(),
|
|
157
157
|
});
|
|
158
|
-
throw new BilibiliAPIError("
|
|
158
|
+
throw new BilibiliAPIError("Current Bilibili credentials are expired or not logged in. Run \"npx -y @xzxzzx/bilibili-mcp config\", then \"npx -y @xzxzzx/bilibili-mcp check\", or update environment variables.", "COOKIE_EXPIRED", undefined, { code: data.code });
|
|
159
159
|
}
|
|
160
160
|
if (data.code === -404 && data.message === "啥都木有") {
|
|
161
161
|
console.error("❌ 评论API返回错误:", {
|
|
@@ -237,7 +237,7 @@ export async function fetchWithoutWBI(path, params, additionalHeaders = {}) {
|
|
|
237
237
|
console.error("❌ 检测到 Bilibili Cookie 已过期或失效 (-101):", {
|
|
238
238
|
url: url.toString(),
|
|
239
239
|
});
|
|
240
|
-
throw new BilibiliAPIError("
|
|
240
|
+
throw new BilibiliAPIError("Current Bilibili credentials are expired or not logged in. Run \"npx -y @xzxzzx/bilibili-mcp config\", then \"npx -y @xzxzzx/bilibili-mcp check\", or update environment variables.", "COOKIE_EXPIRED", undefined, { code: data.code });
|
|
241
241
|
}
|
|
242
242
|
if (data.code === -404 && data.message === "啥都木有") {
|
|
243
243
|
throw new CommentsDisabledError("该视频的评论功能已被禁用或限制访问");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/bilibili/http.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/bilibili/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -183,7 +183,7 @@ export async function getVideoInfoWithSubtitle(bvidOrUrl, preferredLang) {
|
|
|
183
183
|
console.error(`No subtitles for video ${bvid}. Verifying login status...`);
|
|
184
184
|
const { isLogin } = await checkLoginStatus();
|
|
185
185
|
if (!isLogin) {
|
|
186
|
-
throw new BilibiliAPIError(
|
|
186
|
+
throw new BilibiliAPIError(`Video ${bvid} returned an empty subtitle list and current Bilibili credentials are not logged in. Run "npx -y @xzxzzx/bilibili-mcp config", then "npx -y @xzxzzx/bilibili-mcp check", or update environment variables.`, 'COOKIE_EXPIRED', undefined, { code: -101, bvid });
|
|
187
187
|
}
|
|
188
188
|
// 已登录但视频本身无字幕,使用简介降级
|
|
189
189
|
console.error(`No subtitles available for video ${bvid} (logged in, video has no subtitles)`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtitle.js","sourceRoot":"","sources":["../../src/bilibili/subtitle.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subtitle.js","sourceRoot":"","sources":["../../src/bilibili/subtitle.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AA2BnE,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUlB,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -8,6 +8,8 @@ import { getPreferredLanguage } from "./config.js";
|
|
|
8
8
|
import { validateBVInput, validateLanguage, validateDetailLevel, validateCommentLimit, validateCommentSort, } from "./utils/validation.js";
|
|
9
9
|
import { sanitizeBVInput } from "./utils/sanitization.js";
|
|
10
10
|
import { BilibiliAPIError, NoSubtitleError } from "./utils/errors.js";
|
|
11
|
+
import { buildCredentialSetupInstructions, buildCredentialStatus, buildCredentialNextSteps, } from "./utils/credential-guidance.js";
|
|
12
|
+
import { checkLoginStatus } from "./bilibili/http.js";
|
|
11
13
|
// 创建 MCP 服务器实例
|
|
12
14
|
export const server = new Server({
|
|
13
15
|
name: "bilibili-mcp-server",
|
|
@@ -21,9 +23,27 @@ export const server = new Server({
|
|
|
21
23
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
22
24
|
return {
|
|
23
25
|
tools: [
|
|
26
|
+
{
|
|
27
|
+
name: "get_credential_setup_instructions",
|
|
28
|
+
description: "Return safe Bilibili Cookie setup instructions for users or installing agents. Call this after installing the MCP server if credentials are not configured. Never returns Cookie values.",
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: "object",
|
|
31
|
+
properties: {},
|
|
32
|
+
required: [],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "check_bilibili_credentials",
|
|
37
|
+
description: "Check whether Bilibili credentials are configured and logged in without exposing Cookie values. If missing or invalid, returns next_steps for setup.",
|
|
38
|
+
inputSchema: {
|
|
39
|
+
type: "object",
|
|
40
|
+
properties: {},
|
|
41
|
+
required: [],
|
|
42
|
+
},
|
|
43
|
+
},
|
|
24
44
|
{
|
|
25
45
|
name: "get_video_info",
|
|
26
|
-
description: "获取 Bilibili 视频信息,优先返回字幕内容,如无字幕则返回视频简介和标签。支持指定偏好语言。",
|
|
46
|
+
description: "获取 Bilibili 视频信息,优先返回字幕内容,如无字幕则返回视频简介和标签。支持指定偏好语言。For credential help, call get_credential_setup_instructions.",
|
|
27
47
|
inputSchema: {
|
|
28
48
|
type: "object",
|
|
29
49
|
properties: {
|
|
@@ -41,7 +61,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
41
61
|
},
|
|
42
62
|
{
|
|
43
63
|
name: "get_video_comments",
|
|
44
|
-
description: "获取 Bilibili 视频热门评论。过滤表情占位符,优先保留包含时间戳的评论(如 '05:20')。支持 brief(10条)和 detailed(20条+回复)两种模式。",
|
|
64
|
+
description: "获取 Bilibili 视频热门评论。过滤表情占位符,优先保留包含时间戳的评论(如 '05:20')。支持 brief(10条)和 detailed(20条+回复)两种模式。For credential help, call get_credential_setup_instructions.",
|
|
45
65
|
inputSchema: {
|
|
46
66
|
type: "object",
|
|
47
67
|
properties: {
|
|
@@ -73,7 +93,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
73
93
|
},
|
|
74
94
|
{
|
|
75
95
|
name: "get_video_transcript",
|
|
76
|
-
description: "获取 Bilibili 视频纯字幕文本(按行合并)。不自动降级到描述;仅在 fallback_to_description 为 true 且字幕不可用时返回视频描述。",
|
|
96
|
+
description: "获取 Bilibili 视频纯字幕文本(按行合并)。不自动降级到描述;仅在 fallback_to_description 为 true 且字幕不可用时返回视频描述。Requires Bilibili Cookie for reliable subtitle access. If unavailable, call get_credential_setup_instructions.",
|
|
77
97
|
inputSchema: {
|
|
78
98
|
type: "object",
|
|
79
99
|
properties: {
|
|
@@ -115,6 +135,27 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
115
135
|
const { name, arguments: args } = request.params;
|
|
116
136
|
try {
|
|
117
137
|
switch (name) {
|
|
138
|
+
case "get_credential_setup_instructions": {
|
|
139
|
+
return {
|
|
140
|
+
content: [
|
|
141
|
+
{
|
|
142
|
+
type: "text",
|
|
143
|
+
text: JSON.stringify(buildCredentialSetupInstructions(), null, 2),
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
case "check_bilibili_credentials": {
|
|
149
|
+
const result = await buildCredentialStatus(checkLoginStatus);
|
|
150
|
+
return {
|
|
151
|
+
content: [
|
|
152
|
+
{
|
|
153
|
+
type: "text",
|
|
154
|
+
text: JSON.stringify(result, null, 2),
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
};
|
|
158
|
+
}
|
|
118
159
|
case "get_video_info": {
|
|
119
160
|
const bvidOrUrl = args?.bvid_or_url;
|
|
120
161
|
const preferredLang = args?.preferred_lang;
|
|
@@ -239,7 +280,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
239
280
|
text: JSON.stringify({
|
|
240
281
|
error: true,
|
|
241
282
|
message: error.message,
|
|
242
|
-
code: "SUBTITLE_UNAVAILABLE"
|
|
283
|
+
code: "SUBTITLE_UNAVAILABLE",
|
|
284
|
+
next_steps: [
|
|
285
|
+
"If you expected subtitles, configure Bilibili Cookies.",
|
|
286
|
+
...buildCredentialNextSteps(),
|
|
287
|
+
"Or retry get_video_transcript with fallback_to_description: true if description fallback is acceptable.",
|
|
288
|
+
],
|
|
243
289
|
}, null, 2)
|
|
244
290
|
}],
|
|
245
291
|
isError: true
|
|
@@ -252,7 +298,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
252
298
|
text: JSON.stringify({
|
|
253
299
|
error: true,
|
|
254
300
|
message: error.message,
|
|
255
|
-
code: "COOKIE_EXPIRED"
|
|
301
|
+
code: "COOKIE_EXPIRED",
|
|
302
|
+
next_steps: buildCredentialNextSteps(),
|
|
256
303
|
}, null, 2)
|
|
257
304
|
}],
|
|
258
305
|
isError: true
|
|
@@ -297,14 +344,21 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
297
344
|
}
|
|
298
345
|
catch (error) {
|
|
299
346
|
console.error(`Error processing tool ${name}:`, error);
|
|
347
|
+
const payload = {
|
|
348
|
+
error: true,
|
|
349
|
+
message: error instanceof Error ? error.message : "Unknown error",
|
|
350
|
+
};
|
|
351
|
+
if (error instanceof BilibiliAPIError) {
|
|
352
|
+
payload.code = error.code;
|
|
353
|
+
if (error.code === "COOKIE_EXPIRED") {
|
|
354
|
+
payload.next_steps = buildCredentialNextSteps();
|
|
355
|
+
}
|
|
356
|
+
}
|
|
300
357
|
return {
|
|
301
358
|
content: [
|
|
302
359
|
{
|
|
303
360
|
type: "text",
|
|
304
|
-
text: JSON.stringify(
|
|
305
|
-
error: true,
|
|
306
|
-
message: error instanceof Error ? error.message : "Unknown error",
|
|
307
|
-
}, null, 2),
|
|
361
|
+
text: JSON.stringify(payload, null, 2),
|
|
308
362
|
},
|
|
309
363
|
],
|
|
310
364
|
isError: true,
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAmB,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type CredentialSource } from "./credentials.js";
|
|
2
|
+
export type { CredentialSource };
|
|
3
|
+
export interface CredentialSetupInstructions {
|
|
4
|
+
title: "Bilibili credential setup";
|
|
5
|
+
summary: string;
|
|
6
|
+
recommended_commands: string[];
|
|
7
|
+
global_install_commands: string[];
|
|
8
|
+
required_cookie_fields: ["SESSDATA", "bili_jct", "DedeUserID"];
|
|
9
|
+
security_notes: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface CredentialStatus {
|
|
12
|
+
configured: boolean;
|
|
13
|
+
source: CredentialSource;
|
|
14
|
+
logged_in: boolean;
|
|
15
|
+
next_steps: string[];
|
|
16
|
+
security_notes: string[];
|
|
17
|
+
}
|
|
18
|
+
export declare function buildCredentialSetupInstructions(): CredentialSetupInstructions;
|
|
19
|
+
export declare function buildCredentialNextSteps(): string[];
|
|
20
|
+
export declare function hasSecretLikeValue(value: string): boolean;
|
|
21
|
+
export declare function buildCredentialStatus(checkLoginStatus: () => Promise<{
|
|
22
|
+
isLogin: boolean;
|
|
23
|
+
}>): Promise<CredentialStatus>;
|
|
24
|
+
//# sourceMappingURL=credential-guidance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-guidance.d.ts","sourceRoot":"","sources":["../../src/utils/credential-guidance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,2BAA2B,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,sBAAsB,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAC/D,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,gCAAgC,IAAI,2BAA2B,CAoB9E;AAED,wBAAgB,wBAAwB,IAAI,MAAM,EAAE,CAMnD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED,wBAAsB,qBAAqB,CACzC,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,GACpD,OAAO,CAAC,gBAAgB,CAAC,CAiB3B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { credentialManager } from "./credentials.js";
|
|
2
|
+
export function buildCredentialSetupInstructions() {
|
|
3
|
+
return {
|
|
4
|
+
title: "Bilibili credential setup",
|
|
5
|
+
summary: "For reliable Bilibili subtitles, transcripts, and comments, configure Cookies outside the MCP client config.",
|
|
6
|
+
recommended_commands: [
|
|
7
|
+
"npx -y @xzxzzx/bilibili-mcp config",
|
|
8
|
+
"npx -y @xzxzzx/bilibili-mcp check",
|
|
9
|
+
],
|
|
10
|
+
global_install_commands: [
|
|
11
|
+
"bilibili-mcp config",
|
|
12
|
+
"bilibili-mcp check",
|
|
13
|
+
],
|
|
14
|
+
required_cookie_fields: ["SESSDATA", "bili_jct", "DedeUserID"],
|
|
15
|
+
security_notes: [
|
|
16
|
+
"Do not paste Cookie values into MCP client config files.",
|
|
17
|
+
"Do not share Cookie values in chats, issues, PRs, logs, or tests.",
|
|
18
|
+
"Use the CLI helper, environment variables, or local deployment secrets.",
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function buildCredentialNextSteps() {
|
|
23
|
+
return [
|
|
24
|
+
"Run: npx -y @xzxzzx/bilibili-mcp config",
|
|
25
|
+
"Then run: npx -y @xzxzzx/bilibili-mcp check",
|
|
26
|
+
"Do not paste Cookie values into MCP client config files.",
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
export function hasSecretLikeValue(value) {
|
|
30
|
+
return /SESSDATA=|bili_jct=|DedeUserID=|BILIBILI_SESSDATA=|BILIBILI_BILI_JCT=|BILIBILI_DEDEUSERID=/i.test(value);
|
|
31
|
+
}
|
|
32
|
+
export async function buildCredentialStatus(checkLoginStatus) {
|
|
33
|
+
const source = credentialManager.getCredentialSource();
|
|
34
|
+
const configured = source !== "none";
|
|
35
|
+
const logged_in = configured
|
|
36
|
+
? (await checkLoginStatus()).isLogin
|
|
37
|
+
: false;
|
|
38
|
+
return {
|
|
39
|
+
configured,
|
|
40
|
+
source,
|
|
41
|
+
logged_in,
|
|
42
|
+
next_steps: configured && logged_in ? [] : buildCredentialNextSteps(),
|
|
43
|
+
security_notes: [
|
|
44
|
+
"This response never includes raw Cookie values.",
|
|
45
|
+
"Configure credentials outside MCP client config files.",
|
|
46
|
+
],
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=credential-guidance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-guidance.js","sourceRoot":"","sources":["../../src/utils/credential-guidance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAyB,MAAM,kBAAkB,CAAC;AAqB5E,MAAM,UAAU,gCAAgC;IAC9C,OAAO;QACL,KAAK,EAAE,2BAA2B;QAClC,OAAO,EACL,8GAA8G;QAChH,oBAAoB,EAAE;YACpB,oCAAoC;YACpC,mCAAmC;SACpC;QACD,uBAAuB,EAAE;YACvB,qBAAqB;YACrB,oBAAoB;SACrB;QACD,sBAAsB,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;QAC9D,cAAc,EAAE;YACd,0DAA0D;YAC1D,mEAAmE;YACnE,yEAAyE;SAC1E;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,yCAAyC;QACzC,6CAA6C;QAC7C,0DAA0D;KAC3D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,6FAA6F,CAAC,IAAI,CACvG,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,gBAAqD;IAErD,MAAM,MAAM,GAAG,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,CAAC;IACrC,MAAM,SAAS,GAAG,UAAU;QAC1B,CAAC,CAAC,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO;QACpC,CAAC,CAAC,KAAK,CAAC;IAEV,OAAO;QACL,UAAU;QACV,MAAM;QACN,SAAS;QACT,UAAU,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,EAAE;QACrE,cAAc,EAAE;YACd,iDAAiD;YACjD,wDAAwD;SACzD;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* 凭证管理模块
|
|
3
3
|
* 用于安全地存储和管理用户的登录凭证
|
|
4
4
|
*/
|
|
5
|
+
export type CredentialSource = "env" | "global_config" | "none";
|
|
5
6
|
export interface BilibiliCredentials {
|
|
6
7
|
sessdata: string;
|
|
7
8
|
bili_jct: string;
|
|
@@ -48,6 +49,7 @@ export declare class CredentialManager {
|
|
|
48
49
|
* 刷新凭证过期时间
|
|
49
50
|
*/
|
|
50
51
|
refreshExpiration(): void;
|
|
52
|
+
getCredentialSource(): CredentialSource;
|
|
51
53
|
/**
|
|
52
54
|
* 清除凭证
|
|
53
55
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/utils/credentials.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAC1E,eAAO,MAAM,kBAAkB,QAA8C,CAAC;AAE9E,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAC3C,OAAO,CAAC,WAAW,CAAoC;IAEvD,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAOvC;;OAEG;IACH,WAAW,IAAI,mBAAmB,GAAG,IAAI;IAmBzC;;OAEG;IACH,YAAY,IAAI,mBAAmB,GAAG,IAAI;IAiB1C;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAWlD;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAItD;;OAEG;IACH,cAAc,IAAI,mBAAmB,GAAG,IAAI;IAsB5C;;OAEG;IACH,SAAS,IAAI,OAAO;IAOpB;;OAEG;IACH,cAAc,IAAI,OAAO;IAQzB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAMzB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB;;OAEG;IACH,UAAU,IAAI,OAAO;IAKrB;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAUzC;AAED,eAAO,MAAM,iBAAiB,mBAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/utils/credentials.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,eAAe,GAAG,MAAM,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,QAA2C,CAAC;AAC1E,eAAO,MAAM,kBAAkB,QAA8C,CAAC;AAE9E,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;IAC3C,OAAO,CAAC,WAAW,CAAoC;IAEvD,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,iBAAiB;IAOvC;;OAEG;IACH,WAAW,IAAI,mBAAmB,GAAG,IAAI;IAmBzC;;OAEG;IACH,YAAY,IAAI,mBAAmB,GAAG,IAAI;IAiB1C;;OAEG;IACH,UAAU,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAWlD;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,mBAAmB,GAAG,IAAI;IAItD;;OAEG;IACH,cAAc,IAAI,mBAAmB,GAAG,IAAI;IAsB5C;;OAEG;IACH,SAAS,IAAI,OAAO;IAOpB;;OAEG;IACH,cAAc,IAAI,OAAO;IAQzB;;OAEG;IACH,iBAAiB,IAAI,IAAI;IAMzB,mBAAmB,IAAI,gBAAgB;IAwBvC;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAIxB;;OAEG;IACH,UAAU,IAAI,OAAO;IAKrB;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAUzC;AAED,eAAO,MAAM,iBAAiB,mBAAkC,CAAC"}
|
|
@@ -118,6 +118,26 @@ export class CredentialManager {
|
|
|
118
118
|
this.credentials.expiresAt = Date.now() + 30 * 24 * 60 * 60 * 1000;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
+
getCredentialSource() {
|
|
122
|
+
if (process.env.BILIBILI_SESSDATA &&
|
|
123
|
+
process.env.BILIBILI_BILI_JCT &&
|
|
124
|
+
process.env.BILIBILI_DEDEUSERID) {
|
|
125
|
+
return "env";
|
|
126
|
+
}
|
|
127
|
+
if (fs.existsSync(GLOBAL_CONFIG_FILE)) {
|
|
128
|
+
try {
|
|
129
|
+
const raw = fs.readFileSync(GLOBAL_CONFIG_FILE, "utf-8");
|
|
130
|
+
const parsed = JSON.parse(raw);
|
|
131
|
+
if (parsed.sessdata && parsed.bili_jct && parsed.dedeuserid) {
|
|
132
|
+
return "global_config";
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return "none";
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return "none";
|
|
140
|
+
}
|
|
121
141
|
/**
|
|
122
142
|
* 清除凭证
|
|
123
143
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/utils/credentials.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/utils/credentials.ts"],"names":[],"mappings":"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"}
|