coderjun
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"filesystem": {
"args": [
"run",
"-i",
"--rm",
"--mount",
"type=bind,src=/Users/username/Videos,dst=/projects/video-drop",
"mcp/filesystem",
"/projects"
],
"command": "docker"
},
"shaka-packager": {
"args": [
"run",
"--with",
"mcp[cli]",
"/Users/username/Development/shaka-packager-mcp/shaka_packager_mcp.py"
],
"command": "/Users/username/.local/bin/uv",
"env": {
"SHAKA_PACKAGER_PATH": "/Users/username/.shaka/packager",
"VIDEO_PATH": "/Users/username/Videos"
}
}
}
}
服务介绍
Shaka Packager MCP 服务器
⚠️ 实验性状态免责声明
该项目处于早期 alpha 阶段,非常实验性。不建议用于生产环境。它也可能非常混乱!
当前限制:
- 您可能会遇到行为不一致的情况
- 高级功能(打包、转换等)仍在积极开发中
- Docker 和主机环境之间的路径转换可能需要手动配置
- 请预期频繁的破坏性更改和潜在的不稳定性
请报告您遇到的任何问题以帮助改进项目。
一个 MCP(Model Context Protocol)服务器,将 Shaka Packager 与 Claude AI 应用程序集成,用于视频转码、打包和分析。
该服务器与 Filesystem MCP 服务器 协同工作,使 Claude Desktop 能够访问和处理计算机上的视频文件,将 Claude 变成强大的媒体处理助手。
功能
- 视频分析:分析视频文件以提取详细的流信息、编解码器、比特率等
- 媒体打包:支持 VOD 和直播的 HLS 和 DASH 格式的视频转换
- 高级选项:
- 应用 DRM 加密(Widevine, PlayReady, FairPlay)
- 配置广告插入标记
- 在不同格式之间转换(MP4, TS 等)
- 智能路径处理:自动在 Docker 和主机环境之间翻译路径
- 强大的错误管理:提供有意义的错误分析并提出解决方案建议
- 命令辅助:帮助正确格式化 Shaka Packager 命令以获得最佳结果
- 交互式文档:内置帮助和示例,指导用户完成复杂操作
- 详细输出:所有操作的综合摘要和执行细节
先决条件
- Python 3.10 或更高版本
- 安装了 Shaka Packager 并且在您的 PATH 中可用
- 从 GitHub 下载
- 或者按照这些说明从源代码构建
- 一个兼容 MCP 的客户端(如 Claude Desktop)
安装
使用 pip 或 uv(即将推出)
使用 pip 安装包:
bash
pip install shaka-packager-mcp
或者使用 uv:
bash
uv pip install shaka-packager-mcp
从源代码安装(推荐)
bash
git clone https://github.com/coderjun/shaka-packager-mcp.git
cd shaka-packager-mcp
pip install -e .
或者使用 uv:
bash
git clone https://github.com/coderjun/shaka-packager-mcp.git
cd shaka-packager-mcp
uv pip install -e .
Claude Desktop 集成
由于 Claude Desktop 不直接支持上传视频文件,我们将使用双服务器方法:
- 一个简化的 filesystem MCP 服务器 来访问计算机上的视频文件
- Shaka Packager MCP 服务器 来分析和处理这些视频
第一步:设置 MCP 文件系统服务器
使用官方的 MCP 文件系统服务器允许 Claude 访问您的视频文件:
-
使用 Docker 安装官方文件系统服务器:
bash
docker pull mcp/filesystem -
或者,您可以按照 Filesystem MCP 服务器仓库 中的说明从源代码构建
第二步:找到配置文件
定位您的 Claude Desktop 配置文件:- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%Claudeclaude_desktop_config.json
如果文件不存在,请创建它。
第3步:将两个服务器添加到配置中
添加以下配置,确保使用绝对路径:
json
{
"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 可执行文件的完整路径
例如:
json
{
"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 以应用更改。
如何使用双服务器方法
-
首先,使用简化的文件系统服务器浏览您的视频文件:
- 要求 Claude “列出我的视频目录中的文件”
- 导航到您要分析或处理的视频文件
-
找到视频文件后,使用其路径与 Shaka Packager 工具:
- 分析: “请分析这个视频:/Users/username/Videos/example.mp4”
- 处理: “请将此视频打包为 HLS:/Users/username/Videos/example.mp4”
故障排除
如果您遇到任何问题:
- 确保两个服务器都正确配置了绝对路径
- 确认 Shaka Packager 已安装并可访问
- 确保为文件系统服务器指定的目录存在并且包含视频
- 检查 Claude Desktop 日志中的错误:
- macOS:
~/Library/Logs/Claude/mcp*.log - Windows:
%APPDATA%Claudelogsmcp*.log
- macOS:
使用方法
当 Filesystem MCP 服务器和 Shaka Packager MCP 服务器都在 Claude Desktop 中运行时:
-
访问您的视频文件:
请显示我 Videos 目录中的文件
-
导航到您的视频文件:
请显示 Movies 子目录中的文件
-
复制要处理的视频的 file:// URI 路径
-
使用文件路径与 Shaka Packager 工具:
请分析这个视频:file:///Users/username/Videos/my_video.mp4
或
请将此视频打包为 HLS 和 DASH 流媒体:file:///Users/username/Videos/my_video.mp4
-
服务器将执行适当的 Shaka Packager 命令,并提供结果的详细摘要
您也可以使用直接文件路径,如果您知道视频文件的确切位置:
请分析这个视频:/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 的转换
- VOD 在 HLS 和 DASH 中的打包
- 直播流打包
- 内容加密
- 广告插入准备
- 视频分析
- 命令格式提醒
- 错误解释指南
配置
可以使用环境变量配置服务器:
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)
您可以通过以下方式设置这些变量:
- 在您的 Claude Desktop 配置文件中(对于
SHAKA_PACKAGER_PATH和VIDEO_PATH推荐) - 在您的环境变量中
- 在脚本同一目录下的
.env文件中
示例 .env 文件:
SHAKA_PACKAGER_PATH=/usr/local/bin/packager
VIDEO_PATH=/Users/yourusername/Videos
LOG_LEVEL=DEBUG
开发
设置开发环境
bash
克隆仓库
git clone https://github.com/coderjun/shaka-packager-mcp.git
cd shaka-packager-mcp
使用 pip 安装开发依赖
pip install -e ".[dev]"
或者使用 uv
uv pip install -e ".[dev]"
运行测试
bash
pytest
代码格式化
bash
black .
isort .
理解代码结构
Shaka Packager MCP 服务器的主要组件包括:
shaka_packager_mcp.py: 主服务器实现,包含 MCP 工具和提示tests/: 用于验证功能的测试套件
该服务器设计为与官方 MCP 文件系统服务器配合使用,以访问视频文件。
实现中的关键特性
- 强大的路径处理:自动在 Docker 和主机环境之间转换路径
- 智能错误处理:提供有意义的错误消息和建议
- 命令语法帮助:帮助正确格式化 Shaka Packager 命令
- 文档集成:提供全面的文档和示例
许可证
该项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。
获取帮助
您可以自由使用 AI 代码副驾,作者也这样做。
如果您遇到任何问题或有疑问:
- 查看此 README 中的故障排除部分
- 查阅 Shaka Packager 文档
- 使用
get_shaka_documentation工具在 Claude 中获取交互式帮助 - 在 GitHub 上 打开一个问题
致谢
- Shaka Packager 提供了强大的视频处理能力
- Model Context Protocol (MCP) 提供了通信框架
- Claude 提供了 AI 助手功能
- Anthropic 开发了 Claude 和 MCP 标准