Shaka Packager MCP Server

MIT License
  • Apple

Integrations

  • Enables packaging videos for DASH streaming format with support for VOD and live streaming configurations.

  • Works with Docker containers for file access, featuring intelligent path handling that automatically translates paths between Docker and host environments.

Shaka 打包器 MCP 服务器

⚠️实验状态免责声明

该项目处于早期 Alpha 阶段,高度实验性。不建议用于生产环境。而且它很可能比较混乱!

目前的局限性:

  • 你可能会遇到不一致的行为
  • 高级功能(打包、转换等)仍在积极开发中
  • Docker 和主机环境之间的路径转换可能需要手动配置
  • 预计频繁的重大变化和潜在的不稳定性

请报告您遇到的任何问题以帮助改进项目。

一个 MCP(模型上下文协议)服务器,将Shaka Packager与 Claude AI 应用程序集成,用于视频转码、打包和分析。

该服务器与文件系统 MCP 服务器配合使用,使 Claude Desktop 能够访问和处理您计算机上的视频文件,使 Claude 成为媒体处理任务的强大助手。

特征

  • 视频分析:分析视频文件以提取详细的流信息、编解码器、比特率等
  • 媒体打包:将视频转换为 HLS 和 DASH 格式的流媒体,支持 VOD 和直播
  • 高级选项
    • 应用 DRM 加密(Widevine、PlayReady、FairPlay)
    • 配置广告插入标记
    • 在格式之间转换(MP4、TS 等)
  • 智能路径处理:自动转换 Docker 和主机环境之间的路径
  • 强大的错误管理:提供有意义的错误分析和解决建议
  • 命令协助:帮助正确格式化 Shaka Packager 命令以获得最佳结果
  • 交互式文档:内置帮助和示例,指导用户完成复杂的操作
  • 详细输出:所有操作的综合摘要和执行细节

先决条件

  • Python 3.10 或更高版本
  • Shaka Packager 已安装并可在您的 PATH 中使用
  • 与 MCP 兼容的客户端(例如 Claude Desktop)

安装

使用 pip 或 uv(即将推出)

使用 pip 安装包:

pip install shaka-packager-mcp

或者使用 uv:

uv pip install shaka-packager-mcp

来自源(推荐)

git clone https://github.com/coderjun/shaka-packager-mcp.git cd shaka-packager-mcp pip install -e .

或者使用 uv:

git clone https://github.com/coderjun/shaka-packager-mcp.git cd shaka-packager-mcp uv pip install -e .

Claude 桌面集成

由于 Claude Desktop 不直接支持上传视频文件,我们将使用双服务器方法:

  1. 简化的**文件系统 MCP 服务器,**用于访问计算机上的视频文件
  2. Shaka Packager MCP 服务器用于分析和处理这些视频

步骤 1:设置 MCP 文件系统服务器

使用官方 MCP 文件系统服务器允许 Claude 访问您的视频文件:

  1. 使用 Docker 安装官方文件系统服务器:
    docker pull mcp/filesystem
  2. 或者,您可以按照Filesystem MCP Server 存储库中的说明从源代码构建它

第 2 步:查找配置文件

找到您的 Claude Desktop 配置文件:

  • macOS~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows%APPDATA%\Claude\claude_desktop_config.json

如果该文件不存在,则创建它。

步骤 3:将两个服务器添加到配置中

添加以下配置,确保使用绝对路径:

{ "mcpServers": { "filesystem": { "command": "docker", "args": [ "run", "-i", "--rm", "--mount", "type=bind,src=/PATH/TO/VIDEOS/DIRECTORY,dst=/projects/video-drop", "mcp/filesystem", "/projects" ] }, "shaka-packager": { "command": "/ABSOLUTE/PATH/TO/uv", "args": [ "run", "--with", "mcp[cli]", "/ABSOLUTE/PATH/TO/shaka_packager_mcp.py" ], "env": { "VIDEO_PATH": "/PATH/TO/VIDEOS/DIRECTORY", "SHAKA_PACKAGER_PATH": "/PATH/TO/PACKAGER" } } } }

代替:

  • /PATH/TO/VIDEOS/DIRECTORY包含视频文件的目录路径
  • /ABSOLUTE/PATH/TO/uv为您的 uv 可执行文件的完整路径
  • /ABSOLUTE/PATH/TO/shaka_packager_mcp.py以及脚本文件的完整路径
  • /PATH/TO/PACKAGER包含 Shaka Packager 可执行文件的完整路径

例如:

{ "mcpServers": { "filesystem": { "command": "docker", "args": [ "run", "-i", "--rm", "--mount", "type=bind,src=/Users/username/Videos,dst=/projects/video-drop", "mcp/filesystem", "/projects" ] }, "shaka-packager": { "command": "/Users/username/.local/bin/uv", "args": [ "run", "--with", "mcp[cli]", "/Users/username/Development/shaka-packager-mcp/shaka_packager_mcp.py" ], "env": { "VIDEO_PATH": "/Users/username/Videos", "SHAKA_PACKAGER_PATH": "/Users/username/.shaka/packager" } } } }

步骤4:重启Claude Desktop

编辑配置文件后,重新启动 Claude Desktop 以应用更改。

如何使用双服务器方法

  1. 首先,使用简化的文件系统服务器浏览您的视频文件:
    • 要求 Claude“列出我的视频目录中的文件”
    • 导航到您想要分析或处理的视频文件
  2. 找到视频文件后,请使用 Shaka Packager 工具的路径:
    • 用于分析:“请分析此视频:/Users/username/Videos/example.mp4”
    • 处理:“请将此视频打包用于 HLS:/Users/username/Videos/example.mp4”

故障排除

如果您遇到任何问题:

  1. 确保两个服务器都正确配置了绝对路径
  2. 验证 Shaka Packager 是否已安装并可访问
  3. 确保为文件系统服务器指定的目录存在且包含视频
  4. 检查 Claude Desktop 日志中的错误:
    • macOS: ~/Library/Logs/Claude/mcp*.log
    • Windows: %APPDATA%\Claude\logs\mcp*.log

用法

一旦 Filesystem MCP 服务器和 Shaka Packager MCP 服务器都在 Claude Desktop 中运行:

  1. 访问您的视频文件
    Please show me the files in my Videos directory
  2. 导航到您的视频文件
    Please show me the files in the Movies subdirectory
  3. 复制要处理的视频的 file:// URI 路径
  4. 使用 Shaka Packager 工具和文件路径
    Please analyze this video: file:///Users/username/Videos/my_video.mp4
    或者
    Please package this video for HLS and DASH streaming: file:///Users/username/Videos/my_video.mp4
  5. 服务器将执行适当的 Shaka Packager 命令并提供详细的结果摘要

如果您知道视频文件的确切位置,您也可以使用直接文件路径:

Please analyze this video: /Users/username/Videos/my_video.mp4

工具

服务器提供以下工具:

  1. analyze_video :检查视频文件并提供详细的流信息以及智能错误处理
  2. run_shaka_packager :使用自定义参数和适当的路径处理执行任何 Shaka Packager 命令
  3. get_shaka_options :检索可用的命令选项和版本信息
  4. get_shaka_documentation :提供使用 Shaka Packager 的全面文档和示例

提示

服务器包含以下提示模板:

  • MP4 到 TS 转换
  • HLS 和 DASH 中的 VOD 打包
  • 直播包装
  • 内容加密
  • 广告插入准备
  • 视频分析
  • 命令格式提醒
  • 错误解释指导

配置

可以使用环境变量来配置服务器:

  • SHAKA_PACKAGER_PATH :Shaka Packager 可执行文件的路径(强烈推荐用于 Claude Desktop)
  • VIDEO_PATH :本地视频目录的路径(用于在 Docker 和主机之间转换路径)
  • DOCKER_PATH :Docker 容器挂载路径(默认值:“/projects/video-drop”)
  • TEMP_DIR :文件上传的自定义临时目录
  • LOG_LEVEL :日志级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)
  • COMMAND_TIMEOUT :Shaka Packager 命令的超时时间(秒)(默认值:300)

您可以在以下位置设置这些:

  1. 您的 Claude Desktop 配置文件( SHAKA_PACKAGER_PATHVIDEO_PATH为首选)
  2. 您的环境变量
  3. 与脚本位于同一目录中的.env文件

示例.env文件:

SHAKA_PACKAGER_PATH=/usr/local/bin/packager VIDEO_PATH=/Users/yourusername/Videos LOG_LEVEL=DEBUG

发展

设置开发环境

# Clone the repository git clone https://github.com/coderjun/shaka-packager-mcp.git cd shaka-packager-mcp # Install development dependencies with pip pip install -e ".[dev]" # Or with uv uv pip install -e ".[dev]"

运行测试

pytest

代码格式化

black . isort .

理解代码结构

Shaka Packager MCP 服务器的主要组件包括:

  • shaka_packager_mcp.py :使用 MCP 工具和提示的主服务器实现
  • tests/ :用于验证功能的测试套件

该服务器旨在与官方 MCP 文件系统服务器配合使用以访问视频文件。

实施中的关键特性

  • 强大的路径处理:自动转换 Docker 和主机环境之间的路径
  • 智能错误处理:提供有意义的错误消息和建议
  • 命令语法帮助:帮助正确格式化 Shaka Packager 命令
  • 文档集成:提供全面的文档和示例

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。

获取帮助

请随意使用 AI 代码副驾驶,作者就是这样做的。

如果您遇到任何问题或有疑问:

  1. 查看本自述文件中的故障排除部分
  2. 查看Shaka Packager 文档
  3. 使用get_shaka_documentation工具在 Claude 中获取交互式帮助
  4. 在 GitHub 上打开一个问题

致谢

ID: yv2w1gw49q