bilibili-info-mcp
 
MCP server for fetching Bilibili video metadata and subtitles. Runs locally via stdio transport.
Features
- Fetch video metadata: title, author, view count, description, duration, publish date
- Fetch subtitles (requires login cookie): prioritizes Chinese, falls back to English
- WBI signature support for reliable subtitle retrieval
- Stdio transport for local MCP client integration
Usage
No installation required. Use directly with npx:
npx bilibili-info-mcp
MCP Client Configuration
Cursor / Claude Desktop
{
"mcpServers": {
"bilibili-info": {
"command": "npx",
"args": ["bilibili-info-mcp"],
"env": {
"SESSDATA": "your_bilibili_sessdata_cookie"
}
}
}
}
Environment Variables
| Variable | Required | Description | |---|---|---| | SESSDATA | Only for subtitles | Bilibili login cookie. Find it in browser DevTools > Application > Cookies > bilibili.com after logging in. |
Tool: get-bilibili-video-info
Fetches Bilibili video metadata and optionally subtitles.
Input
| Parameter | Type | Required | Default | Description | |---|---|---|---|---| | url | string | Yes | - | Bilibili video URL, e.g. https://www.bilibili.com/video/BVxxxxx | | includeSubtitles | boolean | No | false | Whether to fetch subtitles. Requires SESSDATA env var. |
Supported URL formats:
https://www.bilibili.com/video/BVxxxxxhttps://m.bilibili.com/video/BVxxxxx?k=vhttps://bilibili.com/video/BVxxxxx/
Output
{
"title": "Video title",
"author": "Author name",
"viewCount": "12345",
"description": "Video description",
"lengthSeconds": "360",
"publishDate": "2025-01-15T12:00:00+08:00",
"subtitle": {
"languageCode": "zh-Hans",
"content": "Subtitle text content joined by spaces"
}
}
| Field | Type | Description | |---|---|---| | title | string | Video title | | author | string | Uploader name | | viewCount | string | Total view count | | description | string | Video description (prefers desc_v2, falls back to desc) | | lengthSeconds | string | Video duration in seconds | | publishDate | string | Publish time in ISO 8601 format with +08:00 timezone | | subtitle | object (optional) | Subtitle track, only present when includeSubtitles is true and subtitles are available |
Subtitle Priority
When includeSubtitles is true, returns a single subtitle track with the following priority:
- Chinese (matching
中文,zh-CN,zh-Hans,zh) - English (matching
English,英语,en,en-US)
Development
git clone https://github.com/sunwu51/bilibili-info-mcp.git
cd bilibili-info-mcp
npm install
npm run build
Project Structure
src/
index.ts # MCP server entry point (stdio transport)
bilibili-fetcher.ts # Bilibili API calls (video info + subtitles)
wbi.ts # WBI signature algorithm implementation
How It Works
- Video info -- Calls
https://api.bilibili.com/x/web-interface/view?bvid=BVIDto get metadata. - WBI keys -- Fetches
img_keyandsub_keyfromhttps://api.bilibili.com/x/web-interface/nav(cached for 1 hour). - Subtitles -- Calls
https://api.bilibili.com/x/player/wbi/v2with WBI signature (w_rid+wts) andSESSDATAcookie to get subtitle URLs, then fetches the subtitle JSON content.
License
ISC











