项目简介

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)自动选择最佳的转录服务,保证服务的稳定性和可靠性。
  • 异步处理: 采用异步处理设计,能够高效处理并发请求,提升服务性能和响应速度。
  • 详细的日志和错误处理: 提供完善的错误处理机制和日志记录,方便开发者追踪问题和监控服务运行状态。
  • 说话人分离: 部分转录服务支持说话人分离功能,能够区分视频中不同说话人的内容 (取决于所选的转录服务商是否支持)。

安装步骤

  1. 安装 uv (推荐) 或 Python: 推荐使用 uv 包管理器以获得更快的依赖安装速度。如果已安装 Python 环境,可跳过此步骤。

    使用 uv 安装 (推荐):

    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. 克隆仓库: 将 GitHub 仓库克隆到本地。

    git clone https://github.com/R-lz/mcp-video-digest.git
    cd mcp-video-digest
  3. 创建并激活虚拟环境: 为了隔离项目依赖,建议创建并激活虚拟环境。

    uv venv
    source .venv/bin/activate  # Linux/Mac
    .venv\Scripts\activate     # Windows
  4. 安装依赖: 安装项目所需的 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 视频内容摘要服务的入口文件。

基本使用方法

  1. 启动 MCP 视频内容摘要服务: 在服务器端,进入项目根目录,并确保已激活虚拟环境,运行以下命令启动服务。

    uv run src/main.py

    或使用调试模式启动:

    UV_DEBUG=1 uv run src/main.py

    服务默认使用 SSE 协议在 'http://localhost:8000/sse' 监听请求。

  2. 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与计算