使用说明
项目简介
本项目是一个基于 Model Context Protocol (MCP) 构建的 YouTube 字幕提取服务器。它包含一个 MCP 服务器和一个 Gradio Web UI 客户端。服务器端负责与 YouTube Transcript API 交互,提取指定 YouTube 视频的字幕,并以 MCP 工具的形式暴露给客户端。客户端通过 Gradio 界面接收用户输入的 YouTube 视频链接和字幕语言偏好,并通过 MCP 协议调用服务器端工具获取字幕,最终在 Web 界面上展示。
主要功能点
- 提取 YouTube 字幕: 支持提取指定 YouTube 视频的字幕内容。
- 多语言支持: 支持多种语言的字幕提取,并提供语言回退机制(首选语言不可用时尝试英语,英语不可用时尝试其他可用语言)。
- 可选时间戳: 支持提取带时间戳或不带时间戳的字幕。
- Gradio Web UI: 提供简洁直观的 Web 界面,方便用户操作。
- MCP 协议通信: 客户端和服务器之间使用高效的 Model Context Protocol (MCP) 进行通信。
安装步骤
-
克隆仓库:
git clone https://github.com/serkanh/youtube-mcp cd youtube-mcp -
创建并激活 Python 虚拟环境:
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows -
安装依赖:
pip install -r requirements.txt
服务器配置
MCP 客户端需要配置以下信息才能连接到 YouTube 字幕 MCP 服务器。这些配置通常在客户端的初始化代码中设置。
{ "server_name": "youtube-transcript", // MCP 服务器名称,与服务器端声明的名称一致 "command": "python", // 启动 MCP 服务器的命令,这里使用 python 解释器 "args": ["yt_dlp_transcript_server.py"] // 启动命令的参数,指定服务器脚本文件 }
参数注释:
- 'server_name': 服务器名称,必须与 'yt_dlp_transcript_server.py' 中 'FastMCP' 实例化的第一个参数 '"youtube-transcript"' 保持一致。客户端通过此名称识别要连接的服务器。
- 'command': 启动服务器程序的命令。由于服务器脚本 'yt_dlp_transcript_server.py' 是 Python 脚本,所以这里使用 'python' 命令来执行。
- 'args': 传递给启动命令的参数列表。这里指定了服务器脚本的文件名 'yt_dlp_transcript_server.py',告诉 'python' 解释器要执行哪个脚本。
重要提示: MCP 客户端 (例如 'gradio_youtube_transcript.py') 不需要 用户手动配置服务器的地址或端口。因为本项目使用 STDIO (标准输入输出) 作为 MCP 的传输协议,客户端和服务端通过操作系统管道进行通信,无需网络配置。只需要正确配置启动服务器的命令即可。
基本使用方法
-
启动服务器: 在终端中,确保已激活虚拟环境,并进入仓库根目录,运行以下命令启动 MCP 服务器:
python yt_dlp_transcript_server.py服务器成功启动后,通常不会有明显的输出,它会在后台等待客户端连接和请求。
-
启动客户端 (Gradio Web UI): 在 另一个 终端中,同样确保已激活虚拟环境,并进入仓库根目录,运行以下命令启动 Gradio Web UI 客户端:
python gradio_youtube_transcript.py启动成功后,终端会显示 Gradio 应用的访问地址,通常是 'http://localhost:7860'。
-
使用 Web 界面提取字幕: 打开 Web 浏览器,访问 Gradio 应用地址。在 Web 界面中:
- 在 "YouTube URL" 文本框中输入要提取字幕的 YouTube 视频链接。
- 根据需要勾选 "Include Timestamps" 复选框,选择是否包含时间戳。
- 在 "Language" 下拉菜单中选择所需的字幕语言。
- 点击 "Get Transcript" 按钮。
稍等片刻,提取的字幕将显示在 "Transcript" 文本区域中。
注意:
- 确保先启动服务器 'yt_dlp_transcript_server.py',再启动客户端 'gradio_youtube_transcript.py'。
- 客户端和服务端需要在同一个目录下运行,或者客户端能够找到服务器脚本的相对路径(当前配置为同目录)。
- 如果遇到连接问题,请检查终端输出的日志信息 ('gradio_client.log' 和 'yt_transcript.log'),以帮助诊断错误。
信息
分类
网页与API