
222wcnm Bilistalkermcp
ai.smithery由 smithery.ai 發布官方發布者v1.15.0更新於 Nov 10, 2026
Track Bilibili creators and get the latest updates on videos, dynamics, and articles. Fetch user p…
概覽
Bilibili 創作者分析伺服器,讓助理查詢指定使用者的個人資料、影片、動態、專欄、字幕、追蹤清單與留言。
- 可以做什麼
- 搜尋使用者並把使用者名稱解析為數字 UID,或一次取得個人資料快照,含近期影片、動態與專欄,以及等級、大會員、粉絲數等詳細資料。列出並依關鍵字搜尋某位使用者的影片,取得影片完整詳情,可選擇抓取字幕,支援 smart、full、minimal 模式與分頁範圍。列出使用者動態並支援類型篩選與游標分頁,列出專欄並讀取專欄全文,檢視使用者的追蹤清單。讀取影片、專欄與動態的留言及完整回覆串,含圖片中繼資料。
- 適用情境
- 適合需要從 UID 或使用者名稱出發追蹤、分析某位 Bilibili 創作者,或抓取字幕、專欄正文與留言串進行內容分析的場合。
- 執行需求
- 本機 Python 環境,使用 uv 或 uvx 執行 PyPI 套件 bili-stalker-mcp,或使用 Docker 映像以 stdio 執行。需要 Bilibili 工作階段權杖,透過 SESSDATA 或 BILI_COOKIE_FILE 指定的 Cookie 檔案提供;可選 BILI_JCT、BUVID3、代理與更新設定。需能連線至 Bilibili,雲端主機 IP 常被封鎖。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 222wcnm Bilistalkermcp,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/ai.smithery%2F222wcnm-bilistalkermcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"222wcnm-bilistalkermcp": {
"type": "http",
"url": "https://server.smithery.ai/@222wcnm/bilistalkermcp/mcp"
}
}
}README
BiliStalkerMCP
[Python] [MCP] [PyPI version] [PyPI Total Downloads]
Bilibili MCP Server for Specific User Analysis
BiliStalkerMCP is a Bilibili MCP server and command-line tool built on Model Context Protocol (MCP), designed for AI agents that need to analyze a specific Bilibili user or creator.
It is optimized for workflows that start from a target uid or username, then retrieve that user's profile, videos, dynamics, articles, subtitles, and followings with structured tools.
If you are searching for a Bilibili MCP server, a Bilibili Model Context Protocol server, or an MCP server for tracking and analyzing a specific Bilibili user, this repository is designed for that use case.
English | 中文说明
🚀 Quick Start
🤖 Method 1: Let your AI Agent configure it (Recommended)
Copy and send the following to Claude Code, Codex, or other AI agents:
🛠️ Method 2: Manual Configuration (MCP Clients)
Configuration paths and syntax may vary across different clients.
1. Run the PyPI release directly
2. Run from cloned source
Then replace /path/to/BiliStalkerMCP below with your actual absolute path:
Prefer
uv run --directory ...for faster local updates when PyPI release propagation is delayed. You can still useuvx bili-stalker-mcpfor quick one-off usage.
Auth: Provide
SESSDATAdirectly, or put it inBILI_COOKIE_FILE. Obtain it from Browser DevTools (F12) > Application > Cookies >.bilibili.com.
Method 3: Command-line queries
From this checkout, use the CLI to query any of the 12 tools without configuring an MCP client or starting a persistent server:
tools lists names and descriptions; tools TOOL returns the full MCP schema,
including required arguments, defaults, and limits. call TOOL accepts the same
names and JSON arguments as the MCP tools. IDs declared as strings in the schema
must remain quoted, including numeric UIDs and long article/dynamic IDs.
doctor prints JSON diagnostics for credential sources, refresh configuration,
proxy settings, and dependency versions. By default it does not use the network,
change credential files, or print credential values. doctor --network adds a TCP
connectivity check; it does not verify login or an API response.
For larger arguments or to avoid shell quoting issues, read a UTF-8 JSON file or pipe a JSON object through stdin:
Set the environment variables below in the calling shell, for example
$env:BILI_COOKIE_FILE = 'D:\BiliStalkerSecrets\bili-cookie.txt' in PowerShell.
An MCP client's env configuration is not automatically inherited by a separate
terminal. The CLI uses the same credential, refresh, proxy, and rate-limit behavior
as MCP. Help, version, and tool discovery do not require login credentials.
If the checkout already has a .env file, load it explicitly for the command;
neither the CLI nor a plain uv run automatically loads it:
Successful queries write one UTF-8 JSON value to stdout; logs and errors go to
stderr. Redirect stdout to save a result. Exit codes are 0 for success, 1 for
query/configuration failures (including an unhealthy doctor report), 2 for
invalid commands or arguments, and 130 for interruption. Query and argument
failures end with a JSON error object on stderr; risk-control errors
retain code and retry_after. A snapshot can succeed with incomplete
sections: inspect its errors field before interpreting it.
uv run python -m bili_stalker_mcp ... accepts the same arguments. With an
installed package, use bili-stalker-mcp ... directly. Running without a subcommand
still starts the MCP stdio server; bili-stalker-mcp serve makes that explicit.
Environment Variables
Optional Safe Cookie Refresh
Automatic refresh is disabled by default. Enable it only when the Cookie file and
refresh-token file are existing, readable, writable regular files. The Cookie file
may contain only ordinary Cookie values (SESSDATA, bili_jct, buvid3,
buvid4, and DedeUserID); the refresh token belongs only in its own file.
When refresh is enabled, do not set SESSDATA, BILI_JCT, or DEDEUSERID in
the environment: those rotating values must come from the Cookie file so a restart
cannot reload stale credentials. BUVID3 and BUVID4 may still be provided through
the environment. Refresh checks are rate-limited, and concurrent MCP calls or server
processes sharing these files use one refresh lock. Pending confirmation is recovered
before another refresh. The .bili-cookie-refresh.lock sidecar may remain on disk
between runs.
For a quicker initial setup, copy the complete Cookie header value from a Bilibili
browser request and ac_time_value from Local Storage, then run:
For a PyPI-only invocation without cloning this repository:
The script hides both pasted values, refuses directories inside the repository and
existing credential files, and prints only a non-secret MCP env block. Do not
paste an entire cURL command: paste only the value after its cookie: header.
Local Verification
All verification commands use mocks and do not require Bilibili credentials:
Available Tools
When starting from a username, call search_users once and reuse the returned numeric
UID for subsequent tools. Implicit username resolution accepts exact matches only; it
does not silently select the first similar search result.
Comment pictures contain the original image URLs. Regular long comments retain the
full text returned by Bilibili. Note-style comments may contain only a preview; use
the returned note.cvid with get_article_content to retrieve the full note.
For video comments, pass content_type="video" and a BVID, AV number, or video URL
as content_id. Use a top-level comment's rpid as root_rpid when fetching its
complete reply thread.
Dynamic Filtering (dynamic_type)
ALL(default): Text, Draw, Reposts, and Video dynamics.ALL_RAW: Unfiltered (additionally includes Articles and unknown types).VIDEO,ARTICLE,DRAW,TEXT: Specific category filtering.REVIEW: Recognized five-slot rating cards only. Each result exposesreview.rating(filled stars, 0-5),review.title,review.text, cover and jump URLs, plus the source score description when available. This filter does not independently classify whether the rated title is an anime.
Each dynamic item includes an images list. Every image contains url, width,
and height; invalid URLs are omitted, and unavailable dimensions are null.
image_count always equals the number of returned images. Reposts expose the same
fields under origin.images and origin.image_count. Non-image dynamics return
an empty images list.
Pagination: Responses include next_cursor. Pass this to subsequent requests for seamless scrolling.
Subtitle Modes (get_video_detail)
Page scope is independent of language/track mode. The default subtitle_scope="single"
queries only P1 in both smart and full. A full URL with p=2 selects P2;
alternatively pass subtitle_page=2 or a subtitle_cid belonging to this video.
Page/CID must be positive integers, and the two explicit selectors are mutually
exclusive. Conflicting URL/explicit selections, missing pages, and foreign CIDs
return invalid_subtitle_selection without falling back to another page.
For all pages, explicitly set subtitle_scope="all" with a BVID or URL without p.
It cannot be combined with page/CID selectors or URL p. All scope still scans
every page's subtitle metadata; single scope queries only the selected page.
Default behavior change: callers relying on the previous all-page scan must add subtitle_scope="all".
smart(default whenfetch_subtitles=true): download one best-matched track within the selected scope.full: download every language track within the selected scope (higher cost).minimal: skip subtitle metadata and subtitle text fetching.
In smart mode, subtitle_lang can request a language (for example en-US);
auto uses built-in priority fallback.
subtitle_max_chars caps returned subtitle text size to avoid token explosion.
Subtitle text is returned once via full_text; tracks carry metadata only
(text is always empty). In full mode with multiple tracks, each segment in
full_text is prefixed with a [language · part] label.
Video detail includes owner: {mid, name, face} (or null), duration (upstream
total seconds across all parts), pic, tname, videos, and ctime (Unix
seconds). Missing metadata is null; pages[] keeps cid/page/part/duration
with each part's duration in seconds. mid and uid both identify a Bilibili
user. An empty tags array can also mean the detail source omitted tags.
selected_language is set only in smart mode; full mode returns null
and lists languages in tracks[].lan. truncated=true means the character
budget cut or dropped subtitle text. A track can remain in tracks when its
download fails; check errors and full_text. Subtitle text has no timecodes.
subtitles.scope contains mode, target_page, total_pages, returned_pages,
and summary, distinguishing the selected scope from pages actually represented
in the returned text and stating how many pages have no returned text.
returned_pages means at least one text character was returned for that page;
it does not guarantee completeness, so check errors and truncated.
Video pages[] always keeps the complete list. With subtitles disabled, scope is
null and selectors do not apply. minimal validates the selected range but
returns no text pages and makes no subtitle API calls.
Bundled Skill
The repository ships a ready-to-use AI agent skill in skills/bili-content-analysis/:
What It Does
Guides compatible AI agents (Gemini, Claude, etc.) through a structured 6-step workflow for deep Bilibili content analysis using MCP tools or the CLI:
- Clarify target and scope (uid / bvid / keyword).
- Collect evidence — lightweight lists first, heavy detail only for high-value items.
- Reconstruct source structure before interpreting (timeline, chapters, speakers).
- Analyze — facts, logic chain, assumptions, themes, and shifts.
- Retain anchors — uid, bvid, article_id, timestamps, key source snippets.
- Handle failures — state blockers explicitly, stop speculation.
Usage
Copy the bili-content-analysis folder into your project's skill directory:
The agent will automatically activate the skill when user requests involve Bilibili creator tracking, transcript interpretation, timeline reconstruction, or content analysis.
Development
Release (Maintainers)
Credentials: The release script uses
UV_PUBLISH_TOKENwhen set; otherwise it reads the matching[pypi]or[testpypi]token from$HOME\.pypirc. Twine is invoked transiently throughuvxonly for package metadata validation and is not a project dependency.
Docker
Runs via stdio transport. No ports exposed.
Troubleshooting
- 412 Precondition Failed: Bilibili anti-crawling system triggered. Refresh
SESSDATAor provideBUVID3. - Cloud IPs: Highly susceptible to blocking; local execution is recommended.
- Long ~20s stalls or DNS timeouts on upstream calls: configure
BILI_PROXY.bilibili_api's curl_cffi client ignores system and environment proxies unless an explicit proxy is set.
Upstream Dependency Note
bilibili-api-python is pinned to ==17.4.2. Its upstream repository has been
permanently shut down following a legal notice from Bilibili, so no further
maintenance or fixes can be expected from that project. Additionally, the
package is licensed GPL-3.0-or-later, which means its source cannot be
vendored or forked into this MIT-licensed repository.
The mitigation path is incremental migration of the remaining SDK-backed
endpoints (user info, video lists, subtitles in video details, dynamics, articles)
onto this project's own raw HTTP stack (SharedRawHttpClient), which already
serves comments, followings, relation stats, and video details without subtitles
independently of the SDK. The pin
should be kept exact so installs never pick up an unknown future version.
License
MIT
Disclaimer: For personal research and learning only. Bulk profiling, harassment, or commercial surveillance is prohibited.
This project is built and maintained with the help of AI.
來源:README.md,提交 952fd83
工具
0版本歷史
1- v1.15.0最新Sep 16, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具必需15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Smithery 整合

Zwldarren Akshare One Mcp
ai.smithery官方發布者
遠端 MCP 伺服器,讓助理以唯讀方式取得中國股市資料:歷史與即時行情、新聞和財務報表。

Zhaoganghao Hellomcp
ai.smithery官方發布者
一個小型遠端 MCP 伺服器,讓助理依名字向人問候,並介紹「Hello, World」的由來。

Zeta Chain Cli
ai.smithery官方發布者
一個遠端 MCP 伺服器,讓助理為任意姓名或受眾產生友善、可自訂的問候語。

Yuna0x0 Hackmd Mcp
ai.smithery官方發布者
一個連接 HackMD API 的 MCP 伺服器,讓助理讀取、建立、更新和刪除 HackMD 筆記並管理團隊。

Yuna0x0 Anilist Mcp
ai.smithery官方發布者
AniList MCP 伺服器,讓助理搜尋與讀取動畫、漫畫、角色、製作人員、工作室與使用者資料,並憑權杖管理清單、動態和收藏。