Back to Browse

Bilitrack MCP Server

Developer ToolsModerate6.7MCP RegistryLocal
Free

Server data from the Official MCP Registry

Track Bilibili users, videos, dynamics, articles, and comments via the public web API.

About

Track Bilibili users, videos, dynamics, articles, and comments via the public web API.

Security Report

6.7
Moderate6.7Moderate Risk

bilitrack is a read-only client for Bilibili's public web API with no shell execution, eval, or data exfiltration patterns observed. Optional SESSDATA/BILI_JCT/BUVID3 cookies are read from environment variables and sent only to Bilibili endpoints, and input validation via zod and helper functions is present. Minor observations are limited to the truncated test file and the network_http permission, which is expected for this Developer Tools server. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.

8 files analyzed · 7 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

SESSDATARequired
BILI_JCTRequired
BUVID3Required
BILIBILI_API_URLRequired

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-cloudcorprecords-bilitrack": {
      "env": {
        "BUVID3": "your-buvid3-here",
        "BILI_JCT": "your-bili-jct-here",
        "SESSDATA": "your-sessdata-here",
        "BILIBILI_API_URL": "your-bilibili-api-url-here"
      },
      "args": [
        "-y",
        "@reneturcios/bilitrack"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

bilitrack

bilitrack follows people and content on Bilibili: look a user up, see what they have posted lately — videos, dynamics, and articles — check who they follow, and read the comment threads under a video, dynamic, or article, including subtitle text for a video when you ask for it. Everything is read from Bilibili's public web API.

This package is a clean-room rebuild of the 12-tool BiliStalkerMCP tool list, written fresh from its public README spec.

How it talks to the service

Each tool maps onto a public endpoint under https://api.bilibili.com/x/... and returns that endpoint's data payload:

# Optional: a logged-in session raises limits and unlocks gated reads.
export SESSDATA="your SESSDATA cookie value"
export BILI_JCT="your bili_jct cookie value (optional)"
export BUVID3="your buvid3 cookie value (optional)"
# Optional override (default: https://api.bilibili.com)
export BILIBILI_API_URL="https://api.bilibili.com"

The cookies are genuinely optional. With none set, requests go out cookieless, which Bilibili accepts for most public reads — nothing fails just because SESSDATA is missing. When the API answers with a non-zero code, the call fails with that code and message; an upstream HTTP error is reported with its status and a body excerpt.

Username resolution: tools take user_id_or_username. A numeric value is used as the user's mid directly; anything else is resolved through user search and only an exact username match is accepted — a near match is an error, not a guess.

Subtitle simplification: with fetch_subtitles set, get_video_detail uses the player API to list subtitle tracks and returns either the track metadata (subtitle_scope: "metadata") or the joined text of the selected track (by subtitle_lang, or the first track), truncated to subtitle_max_chars when given. It does not stitch multi-part or AI-generated tracks the way a full player client would.

Install

npx @reneturcios/bilitrack search_users '{"keyword":"example"}'

Or run the container image:

docker run -i ghcr.io/cloudcorprecords/bilitrack

The container defaults to the MCP server. Pass CLI arguments to use it as a CLI instead.

CLI

The CLI mirrors the tools: one subcommand per tool, taking its arguments as a single JSON object.

bilitrack search_users '{"keyword":"example","limit":5}'
bilitrack get_user_info '{"user_id_or_username":"12345"}'
bilitrack get_user_snapshot '{"user_id_or_username":"example"}'
bilitrack get_user_videos '{"user_id_or_username":"12345","page":2}'
bilitrack get_video_detail '{"bvid":"BV1xx411c7mD","fetch_subtitles":true,"subtitle_lang":"zh-CN"}'
bilitrack get_content_comments '{"content_type":"video","content_id":"12345","sort":"hot"}'
bilitrack --version

Exit codes: 0 on success, 1 on an API or validation error (the error names the problem), 2 for usage errors.

MCP server

One bin serves both faces. The mcp subcommand starts a stdio MCP server:

npx -y @reneturcios/bilitrack mcp

MCP client configuration:

{
  "mcpServers": {
    "bilitrack": {
      "command": "npx",
      "args": ["-y", "@reneturcios/bilitrack", "mcp"],
      "env": { "SESSDATA": "your cookie value (optional)" }
    }
  }
}

Tools

All ID parameters are strings in these schemas.

ToolInputWhat it does
search_userskeyword (required), limitSearch Bilibili users by keyword.
get_user_snapshotuser_id_or_username (required), video_limit, dynamic_limit, article_limitGet a combined snapshot of a Bilibili user: profile, videos, dynamics, and articles.
get_user_infouser_id_or_username (required)Get profile information for a Bilibili user.
get_user_videosuser_id_or_username (required), page, limitList a Bilibili user's videos, paged.
search_user_videosuser_id_or_username (required), keyword (required), page, limitSearch within a Bilibili user's videos by keyword.
get_video_detailbvid (required), fetch_subtitles, subtitle_scope, subtitle_page, subtitle_cid, subtitle_mode, subtitle_lang, subtitle_max_charsGet detail for a Bilibili video by BVID, optionally fetching subtitles.
get_user_dynamicsuser_id_or_username (required), cursor, limit, dynamic_typeList a Bilibili user's dynamics (feed posts), paged by cursor.
get_user_articlesuser_id_or_username (required), page, limitList a Bilibili user's articles, paged.
get_article_contentarticle_id (required; numeric or cv-prefixed)Get the full content of a Bilibili article.
get_user_followingsuser_id_or_username (required), page, limitList accounts a Bilibili user follows, paged.
get_content_commentscontent_type (required), content_id (required), cursor, limit, sortList comments on a Bilibili video, dynamic, or article.
get_content_comment_repliescontent_type (required), content_id (required), root_rpid (required), page, limitList replies under one root comment on Bilibili content.

content_type accepts video, article, dynamic, audio, album, course, or a numeric Bilibili reply type as a string.

Development

npm install
npm run build   # tsc -> dist/
npm test        # node test runner over test/*.test.ts, fake fetch only, no network
npm run dev     # run the CLI from source via tsx

License

MIT — see LICENSE.

Reviews

No reviews yet

Be the first to review this server!