Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Video & Audio Editing MCP Servertrim this video to just the first 30 seconds"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π¬ Video & Audio Editing MCP Server
A comprehensive Model Context Protocol (MCP) server that provides powerful video and audio editing capabilities through FFmpeg. This server enables AI assistants to perform professional-grade video editing operations including format conversion, trimming, overlays, transitions, and advanced audio processing.
β¨ Features
π₯ Video Processing: Format conversion, resolution scaling, codec changes, frame rate adjustment
π΅ Audio Processing: Format conversion, bitrate adjustment, sample rate changes, channel configuration
βοΈ Editing Tools: Video trimming, speed adjustment, aspect ratio changes
π¨ Overlays & Effects: Text overlays, image watermarks, subtitle burning
π Advanced Editing: Video concatenation with transitions, B-roll insertion, silence removal
π Transitions: Fade in/out effects, crossfade transitions between clips
Related MCP server: MCP FFmpeg Helper
π οΈ Available Tools
Core Video Operations
extract_audio_from_video- Extract audio tracks from video filestrim_video- Cut video segments with precise timingconvert_video_format- Convert between video formats (MP4, MOV, AVI, etc.)convert_video_properties- Comprehensive video property conversionchange_aspect_ratio- Adjust video aspect ratios with padding or croppingset_video_resolution- Change video resolution with quality preservationset_video_codec- Switch video codecs (H.264, H.265, VP9, etc.)set_video_bitrate- Adjust video quality and file sizeset_video_frame_rate- Change playback frame rates
Audio Processing
convert_audio_format- Convert between audio formats (MP3, WAV, AAC, etc.)convert_audio_properties- Comprehensive audio property conversionset_audio_bitrate- Adjust audio quality and compressionset_audio_sample_rate- Change audio sample ratesset_audio_channels- Convert between mono and stereoset_video_audio_track_codec- Change audio codec in video filesset_video_audio_track_bitrate- Adjust audio bitrate in videosset_video_audio_track_sample_rate- Change audio sample rate in videosset_video_audio_track_channels- Adjust audio channels in videos
Creative Tools
add_subtitles- Burn subtitles with custom stylingadd_text_overlay- Add dynamic text overlays with timingadd_image_overlay- Insert watermarks and logosadd_b_roll- Insert B-roll footage with transitionsadd_basic_transitions- Apply fade in/out effects
Advanced Editing
concatenate_videos- Join multiple videos with optional transitionschange_video_speed- Create slow-motion or time-lapse effectsremove_silence- Automatically remove silent segmentshealth_check- Verify server status
π Quick Start
Prerequisites (local installation)
Python 3.8+ - Download Python
FFmpeg - Install FFmpeg
uv (recommended) - Install uv or use pip
Installation
Option 1: Using Smithery (Easiest) β
The simplest way to get started is through the Smithery MCP registry:
Option 2: Using uv (Recommended for Development)
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/misbahsy/video-audio-mcp.git
cd video-audio-mcp
# Install dependencies with uv
uv sync
# Verify FFmpeg installation
ffmpeg -versionRunning the Server
# With uv (recommended)
uv run server.py
# Or with traditional python
python server.py
# Or with specific transport
python -c "from server import mcp; mcp.run(transport='stdio')"π§ Client Configuration
Claude Desktop (Recommended Configuration)
Add to your claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"VideoAudioServer": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/video-audio-mcp",
"run",
"server.py"
]
}
}
}Alternative (using Python directly):
{
"mcpServers": {
"VideoAudioServer": {
"command": "python",
"args": ["/path/to/video-audio-mcp/server.py"]
}
}
}Cursor IDE (Recommended Configuration)
Open Cursor Settings:
File β Preferences β Cursor Settings β MCPClick "Add New Server"
Configure:
Name:
VideoAudioServerType:
commandCommand:
uv --directory /path/to/your/video-audio-mcp run server.py
Alternative configuration:
Command:
/path/to/python /path/to/video-audio-mcp/server.py
Windsurf
Add to your MCP configuration:
{
"mcpServers": {
"VideoAudioServer": {
"command": "uv",
"args": [
"--directory",
"/path/to/your/video-audio-mcp",
"run",
"server.py"
],
"env": {}
}
}
}Why Use uv?
The uv command is recommended because it:
Automatically manages dependencies without needing to activate virtual environments
Faster installation and dependency resolution
Better isolation - each project gets its own environment automatically
More reliable - handles Python version and dependency conflicts better
Modern tooling - the future of Python package management
Using NPX (Alternative)
For easier distribution, you can also run via npx if packaged:
{
"mcpServers": {
"VideoAudioServer": {
"command": "npx",
"args": ["-y", "video-audio-mcp-server"]
}
}
}π Usage Examples
Basic Video Editing
"Can you convert this MP4 file to MOV format?"
β Uses: convert_video_format
"Trim the video from 30 seconds to 2 minutes"
β Uses: trim_video
"Extract the audio from this video as MP3"
β Uses: extract_audio_from_videoAdvanced Editing Workflows
"Create a highlight reel by concatenating these 3 clips with fade transitions"
β Uses: concatenate_videos with transition effects
"Add my logo watermark to the top-right corner of this video"
β Uses: add_image_overlay
"Remove all silent parts from this podcast recording"
β Uses: remove_silence
"Add subtitles to this video with custom styling"
β Uses: add_subtitlesProfessional Workflows
"Convert this 4K video to 1080p, reduce bitrate to 2Mbps, and change to H.265 codec"
β Uses: convert_video_properties
"Create a social media version: change to 9:16 aspect ratio, add text overlay, and compress"
β Uses: change_aspect_ratio, add_text_overlay, set_video_bitrate
"Insert B-roll footage at 30 seconds with a fade transition"
β Uses: add_b_rollπ― Real-World Use Cases
Content Creation
YouTube Videos: Automated editing, thumbnail generation, format optimization
Social Media: Aspect ratio conversion, text overlays, compression for platforms
Podcasts: Audio extraction, silence removal, format conversion
Professional Video Production
Corporate Videos: Logo watermarking, subtitle addition, quality standardization
Educational Content: Screen recording processing, chapter markers, accessibility features
Marketing Materials: B-roll integration, transition effects, brand consistency
Workflow Automation
Batch Processing: Convert entire video libraries to new formats
Quality Control: Standardize video properties across projects
Archive Management: Extract audio for transcription, create preview clips
π Tool Reference
Video Format Conversion
# Convert MP4 to MOV with specific properties
convert_video_properties(
input_video_path="input.mp4",
output_video_path="output.mov",
target_format="mov",
resolution="1920x1080",
video_codec="libx264",
video_bitrate="5M",
frame_rate=30
)Text Overlays with Timing
# Add multiple text overlays with different timings
add_text_overlay(
video_path="input.mp4",
output_video_path="output.mp4",
text_elements=[
{
"text": "Welcome to our presentation",
"start_time": "0",
"end_time": "3",
"font_size": 48,
"font_color": "white",
"x_pos": "center",
"y_pos": "center"
},
{
"text": "Chapter 1: Introduction",
"start_time": "5",
"end_time": "8",
"font_size": 36,
"box": True,
"box_color": "black@0.7"
}
]
)Advanced Concatenation
# Join videos with crossfade transition
concatenate_videos(
video_paths=["clip1.mp4", "clip2.mp4"],
output_video_path="final.mp4",
transition_effect="dissolve",
transition_duration=1.5
)π‘οΈ Error Handling
The server includes comprehensive error handling:
File Validation: Checks for file existence before processing
Format Support: Validates supported formats and codecs
Graceful Fallbacks: Attempts codec copying before re-encoding
Detailed Logging: Provides clear error messages for troubleshooting
π§ Troubleshooting
Common Issues
FFmpeg not found
# Install FFmpeg
# macOS: brew install ffmpeg
# Ubuntu: sudo apt install ffmpeg
# Windows: Download from https://ffmpeg.org/Permission errors
# Ensure file permissions
chmod +x server.pyMCP server not connecting
Check file paths in configuration
Verify Python environment
Test server manually:
python server.pyCheck client logs for detailed errors
Debug Mode
Run with debug logging:
python server.py --log-level DEBUGπ§ͺ Testing
This project includes a comprehensive test suite that validates all video and audio editing functions. The tests ensure reliability and help catch regressions during development.
Test Coverage
The test suite covers:
β Core Functions: All 30+ video/audio editing tools
π¬ Video Operations: Format conversion, trimming, resolution changes, codec switching
π΅ Audio Processing: Bitrate adjustment, sample rate changes, channel configuration
π¨ Creative Tools: Text overlays, image watermarks, subtitle burning
π Advanced Features: Video concatenation, B-roll insertion, transitions
β‘ Performance: Speed changes, silence removal, aspect ratio adjustments
π‘οΈ Error Handling: Invalid inputs, missing files, unsupported formats
Running Tests
Prerequisites for Testing
# Install test dependencies
pip install pytest
# Ensure FFmpeg is installed and accessible
ffmpeg -versionBasic Test Execution
# Run all tests
pytest tests/
# Run with verbose output
pytest tests/ -v
# Run specific test file
pytest tests/test_video_functions.py
# Run specific test function
pytest tests/test_video_functions.py::test_extract_audioAdvanced Test Options
# Run tests with detailed output and no capture
pytest tests/ -v -s
# Run tests and stop on first failure
pytest tests/ -x
# Run tests with coverage report
pytest tests/ --cov=server
# Run only failed tests from last run
pytest tests/ --lfTest Environment Setup
The test suite automatically creates:
Sample Files: Test videos, audio files, and images
Output Directory:
tests/test_outputs/for generated filesTemporary Files: B-roll clips and transition test materials
# Test files are created in:
tests/
βββ test_outputs/ # Generated test results
βββ sample_files/ # Auto-generated sample media
βββ test_video_functions.py # Main test suite
βββ sample.mp4 # Primary test video (if available)Sample Test Output
$ pytest tests/test_video_functions.py -v
tests/test_video_functions.py::test_health_check PASSED
tests/test_video_functions.py::test_extract_audio PASSED
tests/test_video_functions.py::test_trim_video PASSED
tests/test_video_functions.py::test_convert_audio_properties PASSED
tests/test_video_functions.py::test_convert_video_properties PASSED
tests/test_video_functions.py::test_add_text_overlay PASSED
tests/test_video_functions.py::test_add_subtitles PASSED
tests/test_video_functions.py::test_concatenate_videos PASSED
tests/test_video_functions.py::test_add_b_roll PASSED
tests/test_video_functions.py::test_add_basic_transitions PASSED
tests/test_video_functions.py::test_concatenate_videos_with_xfade PASSED
========================= 25 passed in 45.2s =========================Test Categories
π― Core Functionality Tests
Video format conversion and property changes
Audio extraction and processing
File trimming and basic operations
π¨ Creative Feature Tests
Text overlay positioning and timing
Image watermark placement and opacity
Subtitle burning with custom styling
π Advanced Editing Tests
Multi-video concatenation with transitions
B-roll insertion with various positions
Speed changes and silence removal
π‘οΈ Error Handling Tests
Invalid file paths and missing files
Unsupported formats and codecs
Edge cases and boundary conditions
Writing Custom Tests
To add new tests for additional functionality:
def test_new_feature():
"""Test description"""
# Setup
input_file = "path/to/test/file.mp4"
output_file = os.path.join(OUTPUT_DIR, "test_output.mp4")
# Execute
result = your_new_function(input_file, output_file, parameters)
# Validate
assert "success" in result.lower()
assert os.path.exists(output_file)
# Optional: Validate output properties
duration = get_media_duration(output_file)
assert duration > 0Continuous Integration
The test suite is designed to work in CI/CD environments:
# Example GitHub Actions workflow
- name: Install FFmpeg
run: sudo apt-get install ffmpeg
- name: Install dependencies
run: pip install -r requirements.txt pytest
- name: Run tests
run: pytest tests/ -vPerformance Testing
Some tests include performance validation:
Duration Checks: Verify output video lengths match expectations
Quality Validation: Ensure format conversions maintain quality
File Size Monitoring: Check compression and bitrate changes
Test Data Management
Automatic Cleanup: Tests clean up temporary files
Sample Generation: Creates test media files as needed
Deterministic Results: Tests produce consistent, reproducible results
π‘ Tip: Run tests after any changes to ensure functionality remains intact. The comprehensive test suite catches most issues before they reach production.
π€ Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
# Clone and setup development environment
git clone https://github.com/misbahsy/video-audio-mcp.git
cd video-audio-mcp
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install development dependencies
pip install -r requirements-dev.txt
# Run tests
pytest tests/π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
Built with FastMCP framework
Powered by FFmpeg for media processing
Inspired by the Model Context Protocol specification
π Support
π Bug Reports: GitHub Issues
Made with β€οΈ for the MCP community