vidMagik-mcp
A Model Context Protocol (MCP) server that provides a comprehensive interface to MoviePy for video editing. Uses stdio transport by default for seamless integration with MCP clients.
Exposes 70+ tools for professional-grade video editing, compositing, effects, and audio processing.
Features
IO & Creation
- Load:
video_file_clip,audio_file_clip,image_clip,image_sequence_clip - Generate:
text_clip,color_clip,credits_clip,subtitles_clip,tools_drawing_color_gradient,tools_drawing_color_split - Export:
write_videofile,write_audiofile,write_gif - Fast Tools:
tools_ffmpeg_extract_subclip(lossless trimming)
Compositing & Transformation
- Combine:
composite_video_clips,concatenate_video_clips,tools_clips_array,composite_audio_clips,concatenate_audio_clips - Refine:
subclip,vfx_resize,vfx_crop,vfx_rotate - Configure:
set_position,set_audio,set_mask,set_start,set_end,set_duration
Video Effects (vfx)
- Time:
vfx_freeze,vfx_freeze_region,vfx_multiply_speed,vfx_time_mirror,vfx_time_symmetrize,vfx_loop,vfx_make_loopable,vfx_accel_decel - Color:
vfx_black_white,vfx_invert_colors,vfx_fade_in,vfx_fade_out,vfx_gamma_correction,vfx_lum_contrast,vfx_multiply_color,vfx_painting,vfx_blink - Geometry:
vfx_mirror_x,vfx_mirror_y,vfx_even_size,vfx_margin,vfx_scroll,vfx_supersample - Motion:
vfx_slide_in,vfx_slide_out,vfx_head_blur - Masking:
vfx_mask_color,vfx_masks_and,vfx_masks_or
Custom Advanced Effects
vfx_matrix— Classic "Matrix" digital rain overlayvfx_kaleidoscope— Radial symmetry with custom slicesvfx_rgb_sync— Chromatic aberration / glitch with temporal offsetsvfx_chroma_key— Green screen removal with threshold and softnessvfx_auto_framing— Face/subject tracking and cropping for vertical videovfx_clone_grid— Multi-clone grid layout (2x2, 4x4, etc.)vfx_rotating_cube— 3D perspective cube mappingvfx_quad_mirror— Four-way mirror symmetryvfx_kaleidoscope_cube— Radial symmetry combined with 3D rotation
Audio Effects (afx)
afx_multiply_volume,afx_multiply_stereo_volume,afx_audio_fade_in,afx_audio_fade_out,afx_audio_delay,afx_audio_loop,afx_audio_normalize
Analysis & Utilities
tools_detect_scenes— Automatic scene cut detectiontools_find_video_period— Frequency analysis for repetitive motiontools_find_audio_period— Tempo/period detection for audiotools_file_to_subtitles— Parse subtitle filestools_check_installation— Verify MoviePy and dependencies
Prerequisites
- Python 3.12+
- FFmpeg — Required by MoviePy for video processing
- ImageMagick — Required for
text_clipandcredits_clip - uv — Python package manager
Installation
git clone https://github.com/vizionik25/vidMagik-mcp.git
cd vidMagik-mcp
uv sync
Running the Server
The server uses stdio transport by default:
uv run main.py
To use HTTP or SSE transport instead:
uv run main.py --transport http --host 0.0.0.0 --port 8080
uv run main.py --transport sse --host 0.0.0.0 --port 8080
MCP Client Configuration
Add this to your MCP client config (e.g. Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"vidMagik-mcp": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/path/to/vidMagik-mcp"
}
}
}
Docker
Docker is the recommended approach — it bundles FFmpeg, ImageMagick, and all system dependencies automatically.
Quick Start
docker compose up --build
This builds the image and starts the server with stdio transport.
Media Directory
The ./media directory on your host is mounted to /app/media inside the container. Use it as the workspace for all input and output files:
mkdir -p media
# Place your source videos, images, and audio in ./media
When using MCP tools, reference files as media/filename.mp4. Output files written to media/ will appear on your host.
Docker MCP Client Configuration
To use the Docker container as an MCP server:
{
"mcpServers": {
"moviepy": {
"command": "docker",
"args": ["compose", "run", "--rm", "-i", "mcp-moviepy"],
"cwd": "/path/to/mcp-moviepy"
}
}
}
Manual Docker Build & Run
docker build -t mcp-moviepy .
docker run -i -v $(pwd)/media:/app/media mcp-moviepy
State Management
The server maintains clips in memory:
- Clip IDs — Tools that create or modify clips return a
clip_id(UUID string) - Chaining — Pass
clip_idto subsequent tools for further operations - Management — Use
list_clipsto view active clips anddelete_clipto free memory - Limits — Auto memory cleanup with file count and total size limits to prevent OOM
Prompt Templates
Built-in prompts guide the LLM through complex workflows:
slideshow_wizard— Professional slideshow from images with transitionstitle_card_generator— Title cards with text on solid backgroundsglitch_effect_preset— High-energy RGB split glitch aestheticauto_framing_for_tiktok— Convert horizontal video to 9:16 verticalmatrix_intro_preset— Classic code-rain overlayrotating_cube_transition— 3D spinning cube effectdemonstrate_kaleidoscope— Mesmerizing radial symmetry animationdemonstrate_kaleidoscope_cube— Hybrid kaleidoscope + 3D cube
Development
Run tests:
uv run pytest tests/test_e2e.py
License
MIT