ffmpeg_mcp
FFmpeg MCP Server
Documentation
FFmpeg MCP Server
A Model Context Protocol (MCP) server that provides secure FFmpeg functionality through a sandboxed environment. This server allows AI assistants and other MCP clients to perform video/audio processing tasks using FFmpeg in an isolated environment.
Features
- Sandboxed Execution: All FFmpeg commands run in isolated temporary directories for security
- File Management: Upload, download, and manage files within the sandbox
- Google Cloud Storage Integration: Direct integration with GCS for file transfers
- Security: Only FFmpeg commands are allowed, preventing arbitrary code execution
- RESTful API: Runs as an HTTP server using FastMCP
Installation
Prerequisites
- Python 3.11 or higher
- FFmpeg installed on your system
- (Optional) Google Cloud credentials for GCS features
Setup
1. Clone the repository:
git clone
cd ffmpeg_mcp2. Install dependencies using uv (recommended):
uv syncOr using pip:
pip install -e .3. (Optional) Set up Google Cloud credentials for GCS integration:
export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/credentials.json"Usage
Starting the Server
python main.pyThe server will start on `localhost:8000` by default.
Available Tools
1. `create_sandbox()`
Creates a new isolated sandbox environment for FFmpeg operations.
Returns: Sandbox directory path
2. `run_ffmpeg_command(sandbox, command)`
Executes FFmpeg commands within the specified sandbox.
Parameters:
- `sandbox` (str): Sandbox directory path
- `command` (str): FFmpeg command to execute
Returns: Command output or error message
3. `put_file(sandbox, filename, content)`
Puts a file into the sandbox environment.
Parameters:
- `sandbox` (str): Sandbox directory path
- `filename` (str): Name of the file to create
- `content` (bytes): File content
Returns: Full path of the created file
4. `get_file(sandbox, filename)`
Retrieves a file from the sandbox environment.
Parameters:
- `sandbox` (str): Sandbox directory path
- `filename` (str): Name of the file to retrieve
Returns: File content as bytes
5. `delete_file(sandbox, filename)`
Deletes a file from the sandbox environment.
Parameters:
- `sandbox` (str): Sandbox directory path
- `filename` (str): Name of the file to delete
Returns: Confirmation message
6. `download_file(sandbox, url, filename)`
Downloads a file from a URL into the sandbox.
Parameters:
- `sandbox` (str): Sandbox directory path
- `url` (str): URL of the file to download
- `filename` (str): Local filename to save as
Returns: Full path of the downloaded file
7. `upload_file(sandbox, filename, upload_url)`
Uploads a file from the sandbox to a specified URL.
Parameters:
- `sandbox` (str): Sandbox directory path
- `filename` (str): Name of the file to upload
- `upload_url` (str): Destination URL
Returns: Upload response
8. `download_file_from_gcs(sandbox, gcs_url, filename)`
Downloads a file from Google Cloud Storage.
Parameters:
- `sandbox` (str): Sandbox directory path
- `gcs_url` (str): GCS URL (gs://bucket/path)
- `filename` (str): Local filename to save as
Returns: Full path of the downloaded file
9. `upload_file_to_gcs(sandbox, filename, gcs_url)`
Uploads a file to Google Cloud Storage.
Parameters:
- `sandbox` (str): Sandbox directory path
- `filename` (str): Name of the file to upload
- `gcs_url` (str): Destination GCS URL
Returns: Confirmation message
Example Workflow
# 1. Create a sandbox
sandbox = create_sandbox()
# 2. Download a video file
download_file(sandbox, "https://example.com/video.mp4", "input.mp4")
# 3. Process with FFmpeg
run_ffmpeg_command(sandbox, "ffmpeg -i input.mp4 -vf scale=720:480 output.mp4")
# 4. Retrieve the processed file
processed_video = get_file(sandbox, "output.mp4")Security Features
- Command Restriction: Only commands starting with "ffmpeg" are allowed
- Sandbox Isolation: All operations are contained within temporary directories
- Path Validation: Sandbox directories are validated before operations
- Error Handling: Comprehensive error handling for failed operations
Configuration
The server runs on `localhost:8000` by default. You can modify the host and port in the `main.py` file:
if __name__ == "__main__":
mcp.run(transport="httpx", host="your-host", port=your-port)Dependencies
- `httpx`: HTTP client for file downloads and uploads
- `mcp[cli]`: Model Context Protocol server framework
- `google-cloud-storage`: Google Cloud Storage integration (optional)
Frequently asked questions
What is ffmpeg_mcp?
ffmpeg_mcp is FFmpeg MCP Server
How do I install ffmpeg_mcp?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is ffmpeg_mcp open source?
Yes — it is hosted on GitHub at https://github.com/radzevich/ffmpeg_mcp.
Related MCP tools
Damn Vulnerable MCP Server Python-based implementation. Trusted by 1200+ developers. Trusted by 1200+ developers. Trusted by 1200+ developers.
A Model Context Protocol (MCP) server that enables secure interaction with MySQL databases Python-based implementation. Trusted by 900+ developers.
Query MCP enables end-to-end management of Supabase via chat interface: read & write query executions, management API support, automatic migration versioning...
Model Context Protocol with Neo4j Python-based implementation. Trusted by 700+ developers. Trusted by 700+ developers. Trusted by 700+ developers.
An MCP server that provides control over Android devices via adb Python-based implementation. Trusted by 500+ developers.
A Model Context Protocol (MCP) server for PostgreSQL databases with enhanced capabilities for AI agents. Python-based implementation.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP