项目简介
MCP视频内容摘要服务是一个基于 Model Context Protocol (MCP) 构建的应用后端,专注于处理视频内容。它能够从 YouTube、Bilibili、TikTok、Twitter 等主流视频平台抓取视频,提取音频并转换为文本,最终为用户提供视频内容的文本摘要。该服务旨在作为 LLM 应用的上下文信息服务,通过标准化的 MCP 协议与客户端进行交互,提供视频理解和分析能力。
主要功能点
- 多平台视频支持: 支持包括 YouTube、Bilibili、TikTok、Twitter 等超过1000个网站的视频链接,能够下载并提取视频中的音频流。
- 多种转录服务: 集成了 Deepgram、Gladia、Speechmatics 和 AssemblyAI 四种主流的云端语音转文本 (STT) 服务,可以根据配置的 API 密钥自动选择可用的服务进行转录。
- 灵活的服务选择机制: 服务会根据用户配置的 API 密钥的可用性,按照预设的优先级顺序(Deepgram > Gladia > Speechmatics > AssemblyAI)自动选择最佳的转录服务,保证服务的稳定性和可靠性。
- 异步处理: 采用异步处理设计,能够高效处理并发请求,提升服务性能和响应速度。
- 详细的日志和错误处理: 提供完善的错误处理机制和日志记录,方便开发者追踪问题和监控服务运行状态。
- 说话人分离: 部分转录服务支持说话人分离功能,能够区分视频中不同说话人的内容 (取决于所选的转录服务商是否支持)。
安装步骤
-
安装 uv (推荐) 或 Python: 推荐使用 uv 包管理器以获得更快的依赖安装速度。如果已安装 Python 环境,可跳过此步骤。
使用 uv 安装 (推荐):
curl -LsSf https://astral.sh/uv/install.sh | sh -
克隆仓库: 将 GitHub 仓库克隆到本地。
git clone https://github.com/R-lz/mcp-video-digest.git cd mcp-video-digest -
创建并激活虚拟环境: 为了隔离项目依赖,建议创建并激活虚拟环境。
uv venv source .venv/bin/activate # Linux/Mac .venv\Scripts\activate # Windows -
安装依赖: 安装项目所需的 Python 依赖包。
uv pip install -e .
服务器配置
MCP 客户端需要配置以下 JSON 格式信息以连接到 MCP 视频内容摘要服务。
{ "mcpServers": { "video_digest": { "url": "http://<服务器IP>:8000/sse" } } }
配置参数说明:
- 'server name': 'video_digest' - 服务器名称,客户端用此名称来标识和调用服务。
- 'url': 'http://<服务器IP>:8000/sse' - MCP 服务器地址。
- '<服务器IP>': 请替换为实际部署 MCP 视频内容摘要服务的服务器 IP 地址或域名。如果服务运行在本地,可以使用 'localhost' 或 '127.0.0.1'。
- '8000': 默认端口号为 '8000',与 'src/main.py' 中 'mcp.run(transport="sse")' 启动时使用的端口一致。
- '/sse': 传输协议为 SSE (Server-Sent Events),这是 'mcp.run(transport="sse")' 指定的传输方式。
环境变量配置:
MCP 视频内容摘要服务依赖于云端 STT 服务的 API 密钥。需要在项目根目录下创建 '.env' 文件,并配置至少一个可用的 API 密钥。
DEEPGRAM_API_KEY=your_deepgram_key GLADIA_API_KEY=your_gladia_key SPEECHMATICS_API_KEY=your_speechmatics_key ASSEMBLYAI_API_KEY=your_assemblyai_key
- 至少配置一个 STT 服务的 API 密钥。建议优先配置 'DEEPGRAM_API_KEY',Deepgram 在中文内容转录方面表现优秀。
- 如果配置多个 API 密钥,服务将按照 Deepgram > Gladia > Speechmatics > AssemblyAI 的优先级顺序尝试使用。
启动命令:
MCP 服务器启动命令配置在客户端中,用于指示客户端如何启动和连接服务器。
{ "serverName": "video_digest", "command": "uv", "args": ["run", "src/main.py"] }
启动命令参数说明:
- 'command': 'uv' - 启动命令为 'uv' (如果使用 Python 环境,则为 'python')。
- 'args': '["run", "src/main.py"]' - 命令参数,指示 'uv' 运行 'src/main.py' 文件,即 MCP 视频内容摘要服务的入口文件。
基本使用方法
-
启动 MCP 视频内容摘要服务: 在服务器端,进入项目根目录,并确保已激活虚拟环境,运行以下命令启动服务。
uv run src/main.py或使用调试模式启动:
UV_DEBUG=1 uv run src/main.py服务默认使用 SSE 协议在 'http://localhost:8000/sse' 监听请求。
-
MCP 客户端调用: 在 MCP 客户端中,配置正确的服务器连接信息 (如上文 服务器配置 所示),并调用 'get_video_content' 工具,传入视频 URL 作为参数。
例如,使用 Python MCP 客户端库 'mcp-client' 调用服务:
from mcp.client import MCPClient import asyncio async def main(): client = MCPClient() # 客户端会自动读取 mcpServers 配置 try: result = await client.call( "video_digest/get_video_content", # 完整工具名: serverName/toolName url="https://www.youtube.com/watch?v=dQw4w9WgXcQ" # 替换为实际视频URL ) print("视频内容摘要结果:\n", result) except Exception as e: print(f"调用服务失败: {e}") if __name__ == "__main__": asyncio.run(main())- '"video_digest/get_video_content"': 指定要调用的工具,格式为 'serverName/toolName'。
- 'url="https://www.youtube.com/watch?v=dQw4w9WgXcQ"': 传入视频 URL 作为参数。
- 'result': 'client.call()' 方法返回视频内容摘要结果。
注意事项:
- 请确保服务器已正确配置 API 密钥,并且至少有一个可用的 STT 服务 API Key。
- 首次运行服务前,请仔细阅读 配置说明 和 STT Key 申请及免费额度 部分,了解 API Key 的申请和使用限制。
- 如果需要处理 YouTube 会员视频或年龄限制视频,可能需要配置 'cookies.txt' 文件,具体请参考 'README.md' 中的 注意事项 部分。
- 根据视频时长和选择的 STT 服务,转录过程可能需要一定时间,请耐心等待。
信息
分类
AI与计算