YouTube字幕代理服务器

一个支持住宅代理、自动重试和缓存的YouTube字幕获取服务器,兼容多种MCP客户端。

  • by BB1151-dev
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 BB1151-dev/youtube-transcript-mcp-server

使用说明

YouTube字幕MCP服务器(代理版)

内置代理感知功能的MCP服务器,用于获取YouTube字幕 弹性特性——支持住宅代理、重试/退避、限流和 缓存。服务器兼容模型上下文协议客户端,如 n8n、Claude Desktop、Goose、LM Studio 等更多工具。

关键特性

  • 🔁(循环播放的符号,可译为“循环”或根据上下文具体描述为“重复播放”等) 住宅代理支持 通过 YT_PROXY_HTTP / YT_PROXY_HTTPS 或者 上游企业代理。
  • ♻️(循环箭头符号,常用于表示回收或循环利用) 自动重试与指数退避 针对IP封禁和瞬时错误 使用 tenacity。
  • 💤(表示睡觉的表情符号) 速率限制和抖动冷却时间 保持出口节点的健康状态。
  • 💾 代表“存储设备”或“硬盘驱动器”。 文件系统缓存 设置14天的生存时间(TTL),以最小化重复获取。
  • 📦 作为一件商品发货 Docker镜像 和一首单曲 uvx 零安装命令 使用。
  • 工具:MCP(可能指某种特定的工具集或软件,具体需根据上下文确定,此处直译为“MCP工具”) get_transcript, get_timed_transcript, get_video_info 和;与;带有 分页(next_cursor)支持。

安装

[!TIP] (注:这通常是一个提示或小贴士的标志,具体翻译可能根据上下文有所不同,但在此处可理解为“提示”或“小贴士”) 确保 uv 在使用前已安装 uvx.

uvx(推荐)

uvx --from git+https://github.com/<ORG>/mcp-youtube-transcript-proxy mcp-ytx --help

替换 <ORG> 如果你已经对此进行了分叉,那么请提供你的组织名或GitHub用户名 仓库。

Docker

在本地构建容器:

docker build -t mcp-ytx .

使用代理配置运行服务器:

docker run --rm -p 8088:8080 \
  -e YT_PROXY_HTTP="http://user:pass@res-proxy.example:8000" \
  -e YT_PROXY_HTTPS="http://user:pass@res-proxy.example:8000" \
  -e YT_MAX_RETRIES=6 -e YT_BACKOFF_MIN=2 -e YT_BACKOFF_MAX=60 \
  -e YT_SLEEP_BASE=3.0 -e YT_SLEEP_JITTER=1.5 \
  -e YT_RATE_LIMIT_REQUESTS=8 -e YT_RATE_LIMIT_PERIOD=60 \
  mcp-ytx serve

Docker Compose

services:
  mcp_ytx:
    build: .
    ports:
      - "8088:8080"
    environment:
      YT_PROXY_HTTP:  http://user:pass@res-proxy.example:8000
      YT_PROXY_HTTPS: http://user:pass@res-proxy.example:8000
      YT_CACHE_ENABLED: "1"
      YT_CACHE_TTL_SECONDS: "1209600"
      YT_RESPONSE_LIMIT: "50000"

调出堆栈:

docker compose up --build

MCP客户端配置

Claude Desktop / Goose / LM Studio(可翻译为):Claude 桌面版 / Goose(鹅,此处可能指某个特定应用或版本名称,若无具体上下文则保留原样)/ LM Studio(语言模型工作室)

在您的MCP配置文件中添加以下条目:

{
  "mcpServers": {
    "youtube-transcript-proxy": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/<ORG>/mcp-youtube-transcript-proxy",
        "mcp-ytx",
        "serve"
      ]
    }
  }
}

n8n MCP 客户端工具

将MCP工具节点配置为使用此服务器暴露的端点(默认 http://localhost:8080/mcp)。 n8n自动发现 get_transcript, get_timed_transcript,和 get_video_info 工具。

环境变量

变量 描述
YT_PROXY_HTTP / YT_PROXY_HTTPS 住宅或企业代理URL。
YT_COOKIES_PATH 可选的 Netscape cookie 储存罐路径,用于认证会话。
YT_MAX_RETRIES 对于被阻止/失败的请求的最大重试次数(默认:6)。
YT_BACKOFF_MIN / YT_BACKOFF_MAX 指数退避范围(以秒为单位)。
YT_SLEEP_BASE / YT_SLEEP_JITTER “获取操作之间的冷却延迟和抖动。”。
YT_RATE_LIMIT_REQUESTS / YT_RATE_LIMIT_PERIOD 滑动窗口限速配置。
YT_CACHE_ENABLED 启用/禁用持久缓存(默认:启用)。
YT_CACHE_TTL_SECONDS 缓存TTL(生存时间)以秒为单位(默认:14天)。
YT_CACHE_DIR 覆盖缓存目录(默认: ~/.cache/mcp-ytx)。
YT_RESPONSE_LIMIT 每个MCP响应页面的最大字符数(默认:50,000)。
YT_PRESERVE_FORMATTING 在可用时保留YouTube格式true/false)。
YT_USER_AGENT 为YouTube页面抓取自定义User-Agent头部。
YT_LISTEN_HOST / YT_LISTEN_PORT 覆盖HTTP绑定地址(默认:主机 0.0.0.0,港口 8080)。

使用说明

  • 当YouTube屏蔽了一个代理IP时 RequestBlocked/IpBlocked,服务器 使用指数退避策略进行重试。在重试次数用尽后,它会显示(或抛出) 错误,因此您可以轮换凭据。
  • 缓存响应在其TTL(生存时间)后会自动过期。您可以清除缓存 手动通过删除在(某处)定义的目录来实现 YT_CACHE_DIR。
  • 转录工具通过(某种方式)对响应进行分页 next_cursor 领域。继续 通过在后续请求中传递返回的游标来获取数据。
  • 对于长时间运行的操作,服务器会在每次调用之间休眠,根据(具体情况/设定) 配置了冷却/抖动参数以保护住宅代理。

发展

使用以下命令安装依赖项: uv:

uv sync

运行单元测试套件:

uv run pytest

许可证

根据MIT许可证发布。详见 LICENSE。