Video & Audio Editing MCP Server

Video & Audio Editing MCP Server

Provides powerful video and audio editing capabilities through FFmpeg, enabling AI assistants to perform professional-grade operations including format conversion, trimming, overlays, transitions, and advanced audio processing.

Category
访问服务器

README

<div align="center"> <img src="icon.svg" alt="Video & Audio Editing MCP Server" width="128" height="128"> </div>

🎬 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.

License: MIT Python 3.8+ MCP Compatible smithery badge

✨ 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

🛠️ Available Tools

Core Video Operations

  • extract_audio_from_video - Extract audio tracks from video files
  • trim_video - Cut video segments with precise timing
  • convert_video_format - Convert between video formats (MP4, MOV, AVI, etc.)
  • convert_video_properties - Comprehensive video property conversion
  • change_aspect_ratio - Adjust video aspect ratios with padding or cropping
  • set_video_resolution - Change video resolution with quality preservation
  • set_video_codec - Switch video codecs (H.264, H.265, VP9, etc.)
  • set_video_bitrate - Adjust video quality and file size
  • set_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 conversion
  • set_audio_bitrate - Adjust audio quality and compression
  • set_audio_sample_rate - Change audio sample rates
  • set_audio_channels - Convert between mono and stereo
  • set_video_audio_track_codec - Change audio codec in video files
  • set_video_audio_track_bitrate - Adjust audio bitrate in videos
  • set_video_audio_track_sample_rate - Change audio sample rate in videos
  • set_video_audio_track_channels - Adjust audio channels in videos

Creative Tools

  • add_subtitles - Burn subtitles with custom styling
  • add_text_overlay - Add dynamic text overlays with timing
  • add_image_overlay - Insert watermarks and logos
  • add_b_roll - Insert B-roll footage with transitions
  • add_basic_transitions - Apply fade in/out effects

Advanced Editing

  • concatenate_videos - Join multiple videos with optional transitions
  • change_video_speed - Create slow-motion or time-lapse effects
  • remove_silence - Automatically remove silent segments
  • health_check - Verify server status

🚀 Quick Start

Prerequisites (local installation)

  1. Python 3.8+ - Download Python
  2. FFmpeg - Install FFmpeg
  3. 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:

Clipboard-20250524-191433-493

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 -version

Running 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)

  1. Open Cursor Settings: File → Preferences → Cursor Settings → MCP
  2. Click "Add New Server"
  3. Configure:
    • Name: VideoAudioServer
    • Type: command
    • Command: 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_video

Advanced 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_subtitles

Professional 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.py

MCP server not connecting

  1. Check file paths in configuration
  2. Verify Python environment
  3. Test server manually: python server.py
  4. Check 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 -version

Basic 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_audio

Advanced 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/ --lf

Test Environment Setup

The test suite automatically creates:

  • Sample Files: Test videos, audio files, and images
  • Output Directory: tests/test_outputs/ for generated files
  • Temporary 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 > 0

Continuous 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/ -v

Performance 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

📞 Support


Made with ❤️ for the MCP community

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选