使用说明
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。