A powerful video editing MCP server that leverages FFmpeg to perform video editing operations through natural language commands.
The server implements one main tool:
execute_ffmpeg
: Executes FFmpeg commands with progress tracking- Takes a command string as input
- Validates and executes FFmpeg operations
- Reports real-time progress during processing
- Handles errors and provides detailed feedback
- Supports all FFmpeg operations including:
- Trimming/cutting
- Merging videos
- Converting formats
- Adjusting speed
- Adding audio tracks
- Extracting audio
- Adding subtitles
- Basic filters (brightness, contrast, etc.)
- FFmpeg must be installed and accessible in your system PATH
- Python 3.9 or higher
- Required Python packages:
mcp httpx
-
Install FFmpeg if not already installed:
# On macOS with Homebrew brew install ffmpeg # On Windows with Chocolatey choco install ffmpeg # On Ubuntu/Debian sudo apt install ffmpeg
-
Install the video editor package:
uv add video-editor
Configure in your Claude Desktop config file:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"video-editor": {
"command": "uv",
"args": ["run", "video-editor"]
}
}
}
-
Sync dependencies:
uv sync
-
Build package:
uv build
-
Publish to PyPI:
uv publish
Note: Set PyPI credentials via:
- Token:
--token
orUV_PUBLISH_TOKEN
- Or username/password:
--username
/UV_PUBLISH_USERNAME
and--password
/UV_PUBLISH_PASSWORD
For the best debugging experience, use the MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory /path/to/video_editor run video-editor
Once connected to Claude Desktop, you can make natural language requests like:
- "Trim video.mp4 from 1:30 to 2:45"
- "Convert input.mp4 to WebM format"
- "Speed up video.mp4 by 2x"
- "Merge video1.mp4 and video2.mp4"
- "Extract audio from video.mp4"
- "Add subtitles.srt to video.mp4"
The server will:
- Parse your request
- Generate the appropriate FFmpeg command
- Execute it with progress tracking
- Provide feedback on completion
The server includes robust error handling for:
- Invalid input files
- Malformed FFmpeg commands
- Runtime execution errors
- Progress tracking issues
All errors are reported back to the client with detailed messages for debugging.
- Only processes files in explicitly allowed directories
- Validates FFmpeg commands before execution
- Sanitizes all input parameters
- Reports detailed error messages for security-related issues
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create your feature branch
- Make your changes
- Submit a pull request