YouTube转录MCP服务器
一个MCP(模型上下文协议)服务器,通过Google OAuth 2.0身份验证提供YouTube转录获取功能。只有授权用户才能访问成绩单数据。
特性
- 从视频ID或完整URL获取YouTube视频转录
- 支持手动创建和自动生成的成绩单
- 每个转录片段都包含可选的时间戳
- 列出任何视频的可用成绩单
- 基于电子邮件授权的Google OAuth 2.0身份验证
- 从各种YouTube URL格式中自动提取视频ID
安装
- 克隆此存储库
- 安装依赖项:
pip install -r requirements.txtGoogle OAuth设置
1.创建谷歌云项目
- 首选 谷歌云控制台
- 创建新项目或选择现有项目
- 启用Google Identity API(如果尚未启用)
2.创建OAuth 2.0凭据
- 引导到 API和服务>凭据
- 点击 创建凭据>OAuth客户端ID
- 选择 Web 应用程序 作为应用程序类型
- 添加授权重定向URI:
- 对于当地发展: http://localhost:8080 - 用于生产:应用程序的回调URL
- 点击 创建
- 下载客户端配置或记录您的 客户端ID
3.配置环境变量
- 复制示例环境文件:
cp .env.example .env- 编辑
.env并添加您的配置:
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
AUTHORIZED_EMAILS=user1@gmail.com,user2@example.comGOOGLE_CLIENT_ID:您在谷歌云控制台上的OAuth 2.0客户端IDAUTHORIZED_EMAILS:允许使用该服务的以逗号分隔的电子邮件地址列表
运行服务器
选项1:Docker(推荐)
- 使用docker compose构建并运行:
docker-compose up -d- 或者手动构建并运行:
docker build -t youtube-transcript-mcp .
docker run -p 8000:8000 --env-file .env youtube-transcript-mcp服务器将在以下位置可用: http://localhost:8000/sse
选项2:直接使用Python
默认情况下,服务器在端口8000上使用SSE(服务器发送事件)传输运行:
python youtube_transcript_mcp.py服务器将在以下位置可用: http://localhost:8000/sse
对于MCP Inspector或其他MCP客户端,请使用:
- 运输类型: 上海证券交易所
- 网址:
http://localhost:8000/sse
可用工具
1. youtube_get_transcript
获取YouTube视频的文字记录。
参数:
video_input(字符串,必填):YouTube视频ID或完整URL
- 示例: dQw4w9WgXcQ 或 https://youtube.com/watch?v=dQw4w9WgXcQ
cursor(整数,可选,默认值:0):分页的起始段索引
退货: 带时间戳的Markdown格式成绩单
分页是如何工作的:
- 该工具在MCP响应大小限制(25000个字符)内自动适应尽可能多的段
- 如果成绩单太长,它会返回一块,并告诉你还有更多
- 使用
cursor从响应中获取参数以获取下一个块
示例(从头开始):
{
"video_input": "dQw4w9WgXcQ"
}示例(获取下一页):
{
"video_input": "dQw4w9WgXcQ",
"cursor": 250
}响应格式: 当记录被分页时,响应包括:
Showing segments X-Y of Z:当前页面范围Has more:是否有更多段要获取Next cursor:用于获取下一批数据的值(仅当has_more为true时)
2. youtube_list_available_transcripts
列出YouTube视频的所有可用转录。
参数:
video_input(字符串,必填):YouTube视频ID或完整URLauth_token(字符串,必填):谷歌OAuth 2.0 ID令牌
退货: 带语言信息的Markdown格式可用成绩单列表
例子:
{
"video_input": "https://youtu.be/dQw4w9WgXcQ",
"auth_token": "your-google-oauth-token"
}支持的URL格式
服务器会自动从以下URL格式中提取视频ID:
https://www.youtube.com/watch?v=VIDEO_IDhttps://youtu.be/VIDEO_IDhttps://www.youtube.com/embed/VIDEO_IDhttps://www.youtube.com/v/VIDEO_ID- 直接视频ID:
VIDEO_ID
身份验证流程
- 用户使用Google OAuth 2.0进行身份验证
- 客户端从谷歌获得ID令牌
- 客户端将ID令牌传递到
auth_token参数 - 服务器使用Google验证令牌
- 服务器检查用户的电子邮件是否在授权列表中
- 如果获得授权,该工具将执行;否则,访问将被拒绝
错误处理
服务器为常见问题提供明确的错误消息:
- 令牌无效/过期:“身份验证令牌无效或过期”
- 未经授权的用户:“拒绝访问。用户X未被授权”
- 视频不可用:“视频不可用。它可能是私人的、已删除的,或者ID不正确”
- 无成绩单:“此视频没有可用的文字记录”
- 成绩单已禁用:“此视频的文字记录已禁用”
安全考虑
- OAuth令牌在每次请求时都会进行验证
- 只有用户在
AUTHORIZED_EMAILS列表可以访问工具 - 客户端机密永远不应提交给版本控制
- 商店
.env安全,从不公开分享 - 服务器是只读的,无法修改YouTube数据
局限性
- 目前仅支持英文成绩单
- 需要互联网连接来获取成绩单和验证令牌
- 受限于YouTube的费率限制和可用性
- 很长的转录本应使用分页,以保持在MCP响应大小限制范围内
许可证
麻省理工学院
