Video transcoding, packaging, and analysis using the Shaka Packager tool, integrated with Claude AI.
⚠️ EXPERIMENTAL STATUS DISCLAIMER
This project is in early alpha stage and is highly experimental. It is not recommended for production use. It is also likely MESSY!
Current limitations:
- You may run into inconsistent behavior
- Advanced features (packaging, conversion, etc.) are still under active development
- Path translation between Docker and host environments may require manual configuration
- Expect frequent breaking changes and potential instability
Please report any issues you encounter to help improve the project.
An MCP (Model Context Protocol) server that integrates Shaka Packager with Claude AI applications for video transcoding, packaging, and analysis.
This server works with the Filesystem MCP Server to enable Claude Desktop to access and process video files on your computer, turning Claude into a powerful assistant for media processing tasks.
Install the package with pip:
pip install shaka-packager-mcp
Or with uv:
uv pip install shaka-packager-mcp
git clone https://github.com/coderjun/shaka-packager-mcp.git
cd shaka-packager-mcp
pip install -e .
Or with uv:
git clone https://github.com/coderjun/shaka-packager-mcp.git
cd shaka-packager-mcp
uv pip install -e .
Since Claude Desktop doesn't directly support uploading video files, we'll use a two-server approach:
Use the official MCP filesystem server to allow Claude to access your video files:
Install the official filesystem server with Docker:
docker pull mcp/filesystem
Alternatively, you can build it from source following the instructions in the Filesystem MCP Server repository
Locate your Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
If the file doesn't exist, create it.
Add the following configuration, making sure to use absolute paths:
{
"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"
}
}
}
}
Replace:
/PATH/TO/VIDEOS/DIRECTORY
with the path to the directory containing your video files/ABSOLUTE/PATH/TO/uv
with the full path to your uv executable/ABSOLUTE/PATH/TO/shaka_packager_mcp.py
with the full path to the script file/PATH/TO/PACKAGER
with the full path to your Shaka Packager executableFor example:
{
"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"
}
}
}
}
After editing the configuration file, restart Claude Desktop to apply the changes.
First, browse your video files using the simplified filesystem server:
Once you've found your video file, use its path with the Shaka Packager tools:
If you encounter any issues:
~/Library/Logs/Claude/mcp*.log
%APPDATA%\Claude\logs\mcp*.log
Once both the Filesystem MCP server and the Shaka Packager MCP server are running in Claude Desktop:
Access your video files:
Please show me the files in my Videos directory
Navigate to your video file:
Please show me the files in the Movies subdirectory
Copy the file:// URI path of the video you want to process
Use the Shaka Packager tools with the file path:
Please analyze this video: file:///Users/username/Videos/my_video.mp4
or
Please package this video for HLS and DASH streaming: file:///Users/username/Videos/my_video.mp4
The server will execute the appropriate Shaka Packager command and provide a detailed summary of the results
You can also use direct file paths if you know the exact location of your video files:
Please analyze this video: /Users/username/Videos/my_video.mp4
The server provides these tools:
The server includes these prompt templates:
The server can be configured using environment variables:
SHAKA_PACKAGER_PATH
: Path to the Shaka Packager executable (highly recommended for Claude Desktop)VIDEO_PATH
: Path to your local video directory (used for translating paths between Docker and host)DOCKER_PATH
: Docker container mount path (default: "/projects/video-drop")TEMP_DIR
: Custom temporary directory for file uploadsLOG_LEVEL
: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)COMMAND_TIMEOUT
: Timeout in seconds for Shaka Packager commands (default: 300)You can set these in:
SHAKA_PACKAGER_PATH
and VIDEO_PATH
).env
file in the same directory as the scriptExample .env
file:
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 .
The main components of the Shaka Packager MCP server are:
shaka_packager_mcp.py
: Main server implementation with MCP tools and promptstests/
: Test suite for verifying functionalityThis server is designed to work with the official MCP filesystem server for accessing video files.
This project is licensed under the MIT License - see the LICENSE file for details.
Feel free to use an AI code copilot, the author does.
If you encounter any issues or have questions:
get_shaka_documentation
tool for interactive help within ClaudeUp-to-date documentation for your coding agent. Covers 1000s of public repos and sites. Built by ref.tools
Interact with various build systems including Gradle, Maven, NPM/Yarn, Cargo, Python, Makefile, and CMake.
Tools to query latest Maven dependency information
A local MCP server for developers that mirrors your in-development MCP server, allowing seamless restarts and tool updates so you can build, test, and iterate on your MCP server within the same AI session without interruption.
An MCP server for managing authorization models with OpenFGA, an open-source authorization system.
A backend service providing tools, resources, and prompts for AI models using the Model Context Protocol (MCP).
🍎 Build iOS Xcode workspace/project and feed back errors to llm.
Navigate your OpenTelemetry resources, investigate incidents and query metrics, logs and traces on Dash0.
Provides Typst documentation to MCP clients like Claude Code.
Monitors shadow-cljs builds and provides real-time build status updates.