Video Editor MCP Server

# Video Editor MCP Server A powerful video editing MCP server that leverages FFmpeg to perform video editing operations through natural language commands. ## Components ### Tools 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.) ## Configuration ### Prerequisites 1. FFmpeg must be installed and accessible in your system PATH 2. Python 3.9 or higher 3. Required Python packages: ``` mcp httpx ``` ### Installation 1. Install FFmpeg if not already installed: ```bash # On macOS with Homebrew brew install ffmpeg # On Windows with Chocolatey choco install ffmpeg # On Ubuntu/Debian sudo apt install ffmpeg ``` 2. Install the video editor package: ```bash uv add video-editor ``` ### Claude Desktop Integration 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` ```json { "mcpServers": { "video-editor": { "command": "uv", "args": ["run", "video-editor"] } } } ``` ## Development ### Building and Publishing 1. Sync dependencies: ```bash uv sync ``` 2. Build package: ```bash uv build ``` 3. Publish to PyPI: ```bash uv publish ``` Note: Set PyPI credentials via: * Token: `--token` or `UV_PUBLISH_TOKEN` * Or username/password: `--username`/`UV_PUBLISH_USERNAME` and `--password`/`UV_PUBLISH_PASSWORD` ### Debugging For the best debugging experience, use the MCP Inspector: ```bash npx @modelcontextprotocol/inspector uv --directory /path/to/video_editor run video-editor ``` ### Example Usage Once connected to Claude Desktop, you can make natural language requests like: 1. "Trim video.mp4 from 1:30 to 2:45" 2. "Convert input.mp4 to WebM format" 3. "Speed up video.mp4 by 2x" 4. "Merge video1.mp4 and video2.mp4" 5. "Extract audio from video.mp4" 6. "Add subtitles.srt to video.mp4" The server will: 1. Parse your request 2. Generate the appropriate FFmpeg command 3. Execute it with progress tracking 4. Provide feedback on completion ## Error Handling 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. ## Security Considerations - Only processes files in explicitly allowed directories - Validates FFmpeg commands before execution - Sanitizes all input parameters - Reports detailed error messages for security-related issues ## Contributing Contributions are welcome! Please follow these steps: 1. Fork the repository 2. Create your feature branch 3. Make your changes 4. Submit a pull request