Skip to main content
Glama
222wcnm

BiliStalkerMCP

by 222wcnm

BiliStalkerMCP

Python MCP PyPI version

针对特定用户分析的Bilibili MCP服务器

BiliStalkerMCP 是一个基于 模型上下文协议 (MCP) 构建的 Bilibili MCP 服务器,专为需要分析特定 Bilibili 用户或创作者的 AI 代理设计。

它针对从目标 uid 或用户名开始,然后使用结构化工具检索该用户的个人资料、视频、动态、专栏、字幕和关注列表的工作流程进行了优化。

如果你正在寻找一个 Bilibili MCP 服务器、一个 Bilibili 模型上下文协议服务器,或者一个用于跟踪和分析特定 Bilibili 用户的 MCP 服务器,本仓库正是为此用例而设计。

English | 中文说明

安装

uvx bili-stalker-mcp
# or
pip install bili-stalker-mcp

配置(Claude Desktop,推荐)

{
  "mcpServers": {
    "bilistalker": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/BiliStalkerMCP", "bili-stalker-mcp"],
      "env": {
        "SESSDATA": "required_sessdata",
        "BILI_JCT": "optional_jct",
        "BUVID3": "optional_buvid3"
      }
    }
  }
}

当 PyPI 发布传播延迟时,建议使用 uv run --directory ... 以获得更快的本地更新。 你仍然可以使用 uvx bili-stalker-mcp 进行快速的一次性使用。

认证:直接提供 SESSDATA,或将其放入 BILI_COOKIE_FILE。从浏览器开发者工具 (F12) > Application > Cookies > .bilibili.com 获取。

环境变量

是否必需

描述

SESSDATA

有条件

Bilibili 会话令牌;除非 BILI_COOKIE_FILE 提供了它,否则必需。

BILI_JCT

CSRF 保护令牌。

BUVID3

硬件指纹(降低限流风险)。

BILI_COOKIE_FILE

纯 Cookie 文件的路径。

BILI_REFRESH_TOKEN_FILE

单独刷新令牌文件的路径;切勿通过环境变量设置该令牌。

BILI_ENABLE_COOKIE_REFRESH

true 启用安全的自动刷新;默认值:false

BILI_COOKIE_REFRESH_CHECK_INTERVAL_SECONDS

刷新检查间隔;默认值:21600,最小值:60

BILI_LOG_LEVEL

DEBUGINFO(默认)、WARNING

BILI_TIMEZONE

格式化时间戳的输出时区(默认值:Asia/Shanghai)。

自动刷新默认禁用。仅在 Cookie 文件和刷新令牌文件存在、可读、可写且为常规文件时启用。Cookie 文件只能包含普通的 Cookie 值(SESSDATAbili_jctbuvid3buvid4DedeUserID);刷新令牌只能放在自己的文件中。

{
  "BILI_COOKIE_FILE": "/secure/bilibili-cookie.txt",
  "BILI_REFRESH_TOKEN_FILE": "/secure/bilibili-refresh-token.txt",
  "BILI_ENABLE_COOKIE_REFRESH": "true",
  "BILI_COOKIE_REFRESH_CHECK_INTERVAL_SECONDS": "21600"
}

启用刷新后,不要在环境中设置 SESSDATABILI_JCTDEDEUSERID:这些轮换值必须来自 Cookie 文件,这样重启后不会重新加载过期的凭据。BUVID3BUVID4 仍可通过环境提供。刷新检查有速率限制,共享这些文件的并发 MCP 调用或服务器进程使用一个刷新锁。在另一次刷新之前会恢复待确认状态。.bili-cookie-refresh.lock 辅助文件可能在运行之间保留在磁盘上。

为了更快的初始设置,从 Bilibili 浏览器请求中复制完整的 Cookie 头值以及 Local Storage 中的 ac_time_value,然后运行:

uv run bili-stalker-cookie-setup --directory D:\BiliStalkerSecrets

对于不克隆此仓库的纯 PyPI 调用:

uvx --from bili-stalker-mcp bili-stalker-cookie-setup --directory D:\BiliStalkerSecrets

该脚本会隐藏粘贴的两个值,拒绝仓库内的目录和现有的凭据文件,并仅打印非机密的 MCP env 块。不要粘贴整个 cURL 命令:只粘贴其 cookie: 头之后的值。

本地验证

所有验证命令都使用模拟数据,不需要 Bilibili 凭据:

uv run pytest -q tests/test_credentials.py tests/test_cookie_refresh.py tests/test_tool_contract.py
uv run pytest -q
uv run black --check bili_stalker_mcp tests scripts
uv run isort --check-only bili_stalker_mcp tests scripts
uv run flake8 bili_stalker_mcp tests scripts
uv run mypy bili_stalker_mcp

Related MCP server: MediaCrawler MCP Server

可用工具

工具

能力

参数

search_users

轻量级用户候选,附带数字 UID

keywordlimit

get_user_snapshot

一键概览:个人资料 + 最近视频/动态/专栏(并发获取)

user_id_or_usernamevideo_limitdynamic_limitarticle_limit(0 跳过该部分)

get_user_info

丰富个人资料:等级、认证头衔、大会员、直播间、封禁状态、关注/粉丝、总视频播放量/专栏阅读量/点赞数(需要 bili_jct

user_id_or_username

get_user_videos

轻量级视频列表

user_id_or_usernamepagelimit

search_user_videos

在某个用户的视频列表中搜索关键词

user_id_or_usernamekeywordpagelimit

get_video_detail

完整视频详情 + 可选字幕

bvidfetch_subtitles(默认:false)、subtitle_modesmart/full/minimal)、subtitle_lang(默认:auto)、subtitle_max_chars

get_user_dynamics

结构化动态,包含图片元数据和游标分页

user_id_or_usernamecursorlimitdynamic_type

get_user_articles

轻量级专栏列表

user_id_or_usernamepagelimit

get_article_content

完整专栏 Markdown 内容

article_id

get_user_followings

关注列表分析

user_id_or_usernamepagelimit

get_content_comments

视频、专栏或动态的评论(包含图片和笔记元数据)

content_typecontent_idcursorlimitsort

get_content_comment_replies

视频、专栏或动态评论的完整子回复

content_typecontent_idroot_rpidpagelimit

从用户名开始时,先调用一次 search_users,然后对后续工具复用返回的数字 UID。隐式用户名解析只接受精确匹配;不会静默选择第一个相似搜索结果。

评论 pictures 包含原始图片 URL。普通长评论保留 Bilibili 返回的完整文本。笔记风格评论可能只包含预览;使用返回的 note.cvid 配合 get_article_content 获取完整笔记。对于视频评论,传递 content_type="video" 以及 BVID、AV 号或视频 URL 作为 content_id。在获取完整回复线程时,使用顶级评论的 rpid 作为 root_rpid

动态过滤(dynamic_type

  • ALL(默认):文本、图文和转发。

  • ALL_RAW:不过滤(包含视频和专栏)。

  • VIDEOARTICLEDRAWTEXT:特定类别过滤。

  • REVIEW:仅识别五槽评分卡片。每个结果暴露 review.rating(实心星数,0-5)、review.titlereview.text、封面和跳转 URL,以及可用的源评分描述。此过滤器不独立判断被评标题是否为动漫。

每个动态项包含一个 images 列表。每张图片包含 urlwidthheight;无效 URL 被省略,不可用的尺寸为 nullimage_count 始终等于返回的图片数量。转发在 origin.imagesorigin.image_count 下暴露相同字段。非图片动态返回空 images 列表。

分页:响应包含 next_cursor。将其传递给后续请求以实现无缝滚动。

字幕模式(get_video_detail

  • smart(当 fetch_subtitles=true 时的默认值):获取所有分集的元数据,仅下载一个最佳匹配的字幕轨道文本。

  • full:下载所有字幕轨道的文本(成本较高)。

  • minimal:跳过字幕元数据和字幕文本获取。

subtitle_lang 可以强制指定语言(例如 en-US);auto 使用内置优先级回退。
subtitle_max_chars 限制返回的字幕文本大小,避免令牌爆炸。

字幕文本通过 full_text 一次性返回;tracks 仅携带元数据(text 始终为空)。在 full 模式下,如果有多个轨道,full_text 中的每个片段会以 [语言 · 部分] 标签为前缀。

捆绑技能

本仓库附带一个即用型 AI 代理技能,位于 skills/bili-content-analysis/

skills/bili-content-analysis/
├── SKILL.md                        # Workflow & output contract
└── references/
    └── analysis-style.md           # Detailed writing style rules

功能

引导兼容的 AI 代理(Gemini、Claude 等)通过结构化的 6 步工作流程进行深度 Bilibili 内容分析:

  1. 明确目标与范围(uid / bvid / 关键词)。

  2. 收集证据——优先轻量级列表,仅对高价值项目进行详细分析。

  3. 重构原始结构后再进行解读(时间线、章节、发言者)。

  4. 分析——事实、逻辑链条、假设、主题及变化。

  5. 保留锚点——uid、bvid、article_id、时间戳、关键来源片段。

  6. 处理失败情况——明确说明阻塞因素,停止推测。

使用方法

bili-content-analysis 文件夹复制到项目的技能目录中:

<project>/.agent/skills/bili-content-analysis/

当用户请求涉及B站创作者追踪、转录解读、时间线重构或内容分析时,智能体将自动激活该技能。

开发

# Setup
git clone https://github.com/222wcnm/BiliStalkerMCP.git
cd BiliStalkerMCP
uv sync --dev

# Test
uv run pytest -q

# Integration & Performance (Requires Auth)
uv run python scripts/integration_suite.py -u <UID>
uv run python scripts/perf_baseline.py -u <UID> --tools dynamics -n 3

发布(维护者)

凭证:发布脚本在设置 UV_PUBLISH_TOKEN 时使用该变量;否则从 $HOME\.pypirc 读取匹配的 [pypi][testpypi] 令牌。 Twine 仅通过 uvx 临时调用以验证包元数据,并非项目依赖项。

# Build + test + package metadata validation (no upload)
.\scripts\pypi_release.ps1

# Upload to TestPyPI
.\scripts\pypi_release.ps1 -TestPyPI -Upload

# Upload to PyPI
.\scripts\pypi_release.ps1 -Upload

Docker

通过 stdio 传输运行。不暴露端口。

docker build -t bilistalker-mcp .
docker run -e SESSDATA=... bilistalker-mcp

故障排除

  • 412 前置条件失败:触发了B站反爬系统。请刷新 SESSDATA 或提供 BUVID3

  • 云IP:极易被屏蔽;建议本地执行。

许可证

MIT

免责声明:仅供个人研究与学习使用。禁止批量分析、骚扰或商业监控。


本项目借助AI构建与维护。

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
6wRelease cycle
3Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that enables users to search Bilibili videos, access trending rankings, and retrieve detailed information about videos, content creators, and anime schedules. It allows AI applications to interact directly with Bilibili content via simple API interfaces.
    45
    189
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for crawling social media platforms (e.g., Bilibili) by keywords, video IDs, or creator IDs, with support for MySQL, JSON, and CSV storage.
    39
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Bilibili MCP server enabling video search, comment management, danmaku, user info, dynamics, live streaming analysis, and more via 31 tools.
    31
    32
    1
    MIT

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/222wcnm/BiliStalkerMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server