项目简介

本项目是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在将强大的媒体处理工具 Shaka Packager 集成到支持 MCP 协议的 LLM 客户端 (如 Claude Desktop) 中。通过本服务器,LLM 可以安全、便捷地调用 Shaka Packager 的功能,实现视频分析、格式转换、流媒体打包 (HLS/DASH) 等复杂任务,极大地扩展了 LLM 在媒体处理领域的应用能力。

主要功能点

  • 视频分析: 提取视频文件的详细流信息,包括编解码器、比特率等,帮助用户了解视频文件的技术 характеристика.
  • 媒体打包: 将视频文件转换为流媒体格式 (HLS 和 DASH),支持点播 (VOD) 和直播 (Live) 场景,方便用户进行视频内容的分发和播放。
  • 高级选项: 支持 DRM 加密 (Widevine, PlayReady, FairPlay) 以保护视频内容版权,支持广告插入标记配置,以及 MP4, TS 等多种格式之间的转换,满足用户多样化的媒体处理需求。
  • 智能路径处理: 自动处理 Docker 容器和宿主机之间的路径转换问题,简化部署和配置流程。
  • 强大的错误管理: 提供详细的错误分析和问题解决建议,帮助用户快速定位和解决媒体处理过程中遇到的问题。
  • 命令辅助: 协助用户生成正确的 Shaka Packager 命令,降低使用门槛,提升操作效率。
  • 交互式文档: 内置详细的帮助文档和使用示例,引导用户完成复杂的媒体处理操作。
  • 详尽的输出: 为所有操作提供全面的结果摘要和执行细节,方便用户了解处理结果。

安装步骤

本服务器推荐从源代码安装,步骤如下:

  1. 安装 Python 3.10 或更高版本
  2. 安装 Shaka Packager。请根据 Shaka Packager 官方文档 下载预编译版本或从源码构建,并确保 'packager' 命令在您的系统 PATH 环境变量中可用。或者,您可以在服务器配置中指定 Shaka Packager 的绝对路径。
  3. 克隆仓库
    git clone https://github.com/coderjun/shaka-packager-mcp.git
    cd shaka-packager-mcp
  4. 安装 Python 包
    pip install -e .
    或者使用 'uv' (如果已安装):
    uv pip install -e .

服务器配置

要将 Shaka Packager MCP 服务器与 MCP 客户端 (例如 Claude Desktop) 集成,您需要在客户端的配置文件中添加服务器的配置信息。以下是一个配置示例,您需要根据您的实际环境进行调整。

假设您的 Claude Desktop 配置文件为 'claude_desktop_config.json',您需要添加如下 'shaka-packager' 服务器配置到 'mcpServers' 字段中。

{
  "mcpServers": {
    "shaka-packager": {
      "command": "/ABSOLUTE/PATH/TO/uv",  // MCP 服务器的启动命令,这里假设使用 uv 运行 Python 脚本,请替换为您的 uv 或 python3 可执行文件的绝对路径
      "args": [
        "run",
        "--with",
        "mcp[cli]",  // 确保 mcp 库及其命令行工具可用
        "/ABSOLUTE/PATH/TO/shaka_packager_mcp.py" // MCP 服务器 Python 脚本的绝对路径,请替换为您克隆仓库后 shaka_packager_mcp.py 文件的绝对路径
      ],
      "env": {
        "VIDEO_PATH": "/PATH/TO/VIDEOS/DIRECTORY", // 本地视频文件存放目录的绝对路径,用于路径转换,请替换为您存放视频文件的目录
        "SHAKA_PACKAGER_PATH": "/PATH/TO/PACKAGER" // Shaka Packager 可执行文件的绝对路径,如果 packager 已在 PATH 中,则可以省略此配置
      }
    }
  }
}

配置参数说明:

  • 'server name: shaka-packager': 服务器名称,在 Claude Desktop 中引用时使用。
  • 'command': 启动 MCP 服务器的命令,通常是 Python 解释器或 uv 等工具。
  • 'args': 传递给启动命令的参数列表。
    • '"run"': uv 的 run 命令,用于运行 Python 脚本。
    • '"--with"': uv 的参数,用于指定运行环境,'mcp[cli]' 表示需要包含 mcp 库及其命令行工具的环境。
    • '"/ABSOLUTE/PATH/TO/shaka_packager_mcp.py"': MCP 服务器 Python 脚本的绝对路径。
  • 'env': 设置 MCP 服务器运行时的环境变量。
    • 'VIDEO_PATH': 重要参数。指定宿主机上存放视频文件的目录的绝对路径。服务器会将 Docker 容器内的 '/projects/video-drop' 路径映射到此目录,实现路径转换。
    • 'SHAKA_PACKAGER_PATH': 重要参数。指定 Shaka Packager 可执行文件的绝对路径。如果 'packager' 命令已添加到系统的 PATH 环境变量,则可以省略此配置。

重要提示:

  • 请务必使用绝对路径配置 'command', 'args' 中的脚本路径,以及 'env' 中的 'VIDEO_PATH' 和 'SHAKA_PACKAGER_PATH'。
  • 如果您使用 Docker 部署 Filesystem MCP Server,请确保 Filesystem MCP Server 的配置也已添加到 'claude_desktop_config.json' 中,以便 Claude Desktop 可以同时访问文件系统和 Shaka Packager MCP 服务器。

基本使用方法

成功配置并启动 Shaka Packager MCP 服务器后,您可以在支持 MCP 协议的客户端 (如 Claude Desktop) 中使用以下步骤进行视频处理:

  1. 连接 Filesystem MCP Server (如果需要): 如果您的视频文件存储在本地文件系统中,您需要先配置并连接 Filesystem MCP Server,以便 Claude 可以访问您的视频文件。

  2. 列出视频文件: 在 Claude 中,您可以要求列出指定目录下的文件,例如 "Please show me the files in my Videos directory"。

  3. 选择视频文件: 浏览文件列表,找到您要处理的视频文件。复制该文件的 'file://' URI 路径。

  4. 使用 Shaka Packager 工具: 根据您的需求,使用以下工具和提示词来调用 Shaka Packager MCP 服务器的功能:

    • 分析视频: 使用 'analyze_video' 工具分析视频文件,例如 "Please analyze this video: file:///path/to/your/video.mp4" 或直接使用本地路径 "/path/to/your/video.mp4"。
    • 运行 Shaka Packager 命令: 使用 'run_shaka_packager' 工具运行自定义的 Shaka Packager 命令,例如 "Please package this video for HLS: file:///path/to/your/video.mp4"。 您可以使用预定义的 Prompt 模板 (如 'vod_hls_dash_prompt') 或自定义命令参数。
    • 获取 Shaka Packager 文档: 使用 'get_shaka_documentation' 工具获取 Shaka Packager 的详细文档和使用示例。
    • 获取 Shaka Packager 选项: 使用 'get_shaka_options' 工具获取 Shaka Packager 的可用选项和版本信息。

示例对话:

用户: Please analyze this video: /Users/username/Videos/my_video.mp4
Claude: (调用 analyze_video 工具,返回视频分析结果)

用户: Please package this video for HLS and DASH streaming: /Users/username/Videos/my_video.mp4
Claude: (调用 run_shaka_packager 工具,使用 vod_hls_dash_prompt 模板,返回打包结果)

用户: Help me understand the error message: Unknown field in stream descriptor
Claude: (调用 error_interpretation_prompt 模板,根据错误信息提供解释和建议)

通过上述步骤,您可以利用 Shaka Packager MCP 服务器,在 LLM 客户端中便捷地完成各种复杂的视频处理任务。

信息

分类

AI与计算