media-mcp
media-mcp is a local image and video processing server that gives AI assistants tools to manipulate, convert, analyze, and optimize media files — no API keys or configuration required.
Image Capabilities:
Get image info — retrieve dimensions, format, color mode, file size, and EXIF metadata
Resize — by width/height or scale factor, with aspect ratio control
Convert — between PNG, JPEG, WebP, GIF, BMP, TIFF, ICO, and AVIF
Compress — reduce file size with quality control and optional max dimension constraints
Crop — extract a region using pixel coordinates (left, top, right, bottom)
Create thumbnails — generate square thumbnails at a specified size
Strip metadata — remove all EXIF data for privacy
Rotate — by any angle with optional canvas expansion
Flip — mirror horizontally or vertically
Apply filters — blur, sharpen, grayscale, emboss, contour, edge enhance, and more
Video Capabilities (requires ffmpeg):
Get video info — retrieve duration, resolution, codec, bitrate, FPS, and audio details
Extract frames — pull frames at regular intervals with configurable max count and output format
Convert videos — between MP4, WebM, MOV, AVI, GIF, and MKV, with optional resolution and quality (CRF) control
Exposes video processing capabilities through FFmpeg, allowing for video metadata retrieval, frame extraction at specified intervals, and format conversion between MP4, WebM, MOV, AVI, and GIF.
Provides tools for processing JPEG images, including resizing, quality-controlled compression, metadata removal (EXIF), and conversion to other formats like PNG, WebP, and AVIF.
Click on "Deploy 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., "@media-mcp resize logo.png to 800px wide and convert it to WebP"
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.
🎨 media-mcp-server
MCP server for image & video processing. No API keys. No config. Just tools.
Give your AI assistant the power to resize, convert, compress, crop, filter, and analyze images and videos — all through Model Context Protocol.
Works with Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, and any MCP-compatible client.
⚡ Quick Start
Claude Code
claude mcp add media-mcp -- uvx media-mcp-serverClaude Desktop / Cursor / VS Code
Add to your MCP config:
{
"mcpServers": {
"media-mcp": {
"command": "uvx",
"args": ["media-mcp-server"]
}
}
}That's it. No API keys, no accounts, no environment variables.
Related MCP server: ffmpeg-mcp
🛠️ Tools
Image Tools
Tool | Description |
| Get dimensions, format, color mode, file size, EXIF data |
| Resize by dimensions or scale factor with aspect ratio control |
| Convert between PNG, JPEG, WebP, GIF, BMP, TIFF, ICO, AVIF |
| Optimize file size with quality and max dimension controls |
| Crop to specific pixel coordinates |
| Generate thumbnails with size control |
| Remove all EXIF/metadata for privacy |
| Rotate by any angle with optional expansion |
| Mirror horizontally or vertically |
| Apply blur, sharpen, grayscale, emboss, contour, and more |
Video Tools (requires ffmpeg)
Tool | Description |
| Get duration, resolution, codec, bitrate, FPS, audio info |
| Pull frames at regular intervals |
| Convert between MP4, WebM, MOV, AVI, GIF, MKV |
💬 Example Usage
Once connected, just ask your AI:
"Resize screenshot.png to 800px wide"
"Convert all the PNGs in this folder to WebP"
"Strip the EXIF data from photo.jpg for privacy"
"Compress this image to under 500KB"
"Extract a frame every 5 seconds from demo.mp4"
"What are the dimensions of banner.png?"
"Make a grayscale version of logo.png"
"Create a 128x128 thumbnail of product-photo.jpg"
📦 Installation
Using uvx (recommended — zero install)
uvx media-mcp-serverUsing pip
pip install media-mcp-serverWith video support
pip install media-mcp-server[video]Note: Video tools require
ffmpegto be installed on your system. Install it from ffmpeg.org or via your package manager:# macOS brew install ffmpeg # Ubuntu/Debian sudo apt install ffmpeg # Windows (with Chocolatey) choco install ffmpeg
🔧 Configuration
Config file locations
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"media-mcp": {
"command": "uvx",
"args": ["media-mcp-server"]
}
}
}Settings → MCP Servers → Add:
{
"media-mcp": {
"command": "uvx",
"args": ["media-mcp-server"]
}
}Add to .vscode/mcp.json:
{
"servers": {
"media-mcp": {
"command": "uvx",
"args": ["media-mcp-server"]
}
}
}🧪 Development
git clone https://github.com/Adityaaery20/media-mcp.git
cd media-mcp
pip install -e ".[dev]"
pytestTest with MCP Inspector
npx @modelcontextprotocol/inspector uvx media-mcp-server📋 Supported Formats
Images: PNG, JPEG, WebP, GIF, BMP, TIFF, ICO, AVIF
Videos: MP4, WebM, MOV, AVI, GIF, MKV (requires ffmpeg)
🗺️ Roadmap
Batch operations (process entire directories)
Image watermarking
PDF to image conversion
OCR (text extraction from images)
Audio extraction from video
Image collage/montage creation
Smart crop (content-aware)
SVG rasterization
📄 License
MIT — do whatever you want with it.
🤝 Contributing
Contributions welcome! Please open an issue first to discuss what you'd like to add.
Available Tools
13 toolsapply_filterB
Apply a filter to an image.
Available filters: blur, sharpen, smooth, detail, contour, edge_enhance, emboss, grayscale.
Args: path: Absolute path to the image file. filter_name: Name of the filter to apply. output_path: Where to save. Defaults to _..
Inputs: path (required), filter_name (required), output_path. Returns: object
compress_imageA
Compress an image to reduce file size.
Optionally resize to max dimensions while compressing. Works best with JPEG and WebP. PNG files will be converted to optimized PNG.
Args: path: Absolute path to the image file. quality: Compression quality (1-100, lower = smaller file). Default 60. max_width: Optional maximum width. Image will be downscaled if wider. max_height: Optional maximum height. Image will be downscaled if taller. output_path: Where to save. Defaults to _compressed..
Inputs: path (required), quality, max_width, max_height, +1 more. Returns: object
convert_imageA
Convert an image to a different format.
Supported formats: PNG, JPEG, WebP, GIF, BMP, TIFF, ICO, AVIF.
Args: path: Absolute path to the image file. format: Target format (e.g. 'png', 'webp', 'jpeg'). output_path: Where to save. Defaults to .<new_ext> next to input. quality: Quality for lossy formats (1-100). Default 85.
Inputs: path (required), format (required), output_path, quality. Returns: object
convert_videoA
Convert a video to a different format or resolution.
Supported output formats: mp4, webm, mov, avi, gif, mkv.
Args: path: Absolute path to the video file. format: Target format (e.g. 'mp4', 'webm', 'gif'). output_path: Where to save. Defaults to .<new_ext>. resolution: Optional target resolution (e.g. '1280x720', '1920x1080'). crf: Constant Rate Factor for quality (0-51, lower = better). Default 23.
Inputs: path (required), format (required), output_path, resolution, +1 more. Returns: object
create_thumbnailA
Create a square thumbnail from an image.
The image is resized to fit within a square of the given size, preserving aspect ratio.
Args: path: Absolute path to the image file. size: Thumbnail size in pixels (default 256). Creates a size x size bounding box. output_path: Where to save. Defaults to _thumb..
Inputs: path (required), size, output_path. Returns: object
crop_imageA
Crop an image to a specific region.
Coordinates are in pixels from the top-left corner.
Args: path: Absolute path to the image file. left: Left edge x coordinate. top: Top edge y coordinate. right: Right edge x coordinate. bottom: Bottom edge y coordinate. output_path: Where to save. Defaults to _cropped..
Inputs: path (required), left (required), top (required), right (required), +2 more. Returns: object
extract_framesB
Extract frames from a video at regular intervals.
Args: path: Absolute path to the video file. interval_seconds: Time between extracted frames (default 1 second). max_frames: Maximum number of frames to extract (default 10). output_dir: Directory to save frames. Defaults to a 'frames' subdir next to the video. format: Image format for frames ('png' or 'jpg'). Default 'png'.
Inputs: path (required), interval_seconds, max_frames, output_dir, +1 more. Returns: object
flip_imageA
Flip (mirror) an image horizontally or vertically.
Args: path: Absolute path to the image file. direction: 'horizontal' or 'vertical'. output_path: Where to save. Defaults to _flipped..
Inputs: path (required), direction, output_path. Returns: object
get_image_infoA
Get detailed information about an image file.
Returns dimensions, format, color mode, file size, and EXIF metadata.
Args: path: Absolute path to the image file.
Inputs: path (required). Returns: object
get_video_infoA
Get detailed information about a video file.
Returns duration, resolution, codec, bitrate, fps, and audio info. Requires ffprobe (part of ffmpeg) to be installed.
Args: path: Absolute path to the video file.
Inputs: path (required). Returns: object
resize_imageA
Resize an image by dimensions or scale factor.
Provide width/height, or a scale factor (e.g. 0.5 for half size). By default, aspect ratio is preserved. If only width or height is given, the other dimension is calculated automatically.
Args: path: Absolute path to the image file. width: Target width in pixels. height: Target height in pixels. scale: Scale factor (e.g. 0.5 = half, 2.0 = double). keep_aspect_ratio: Preserve aspect ratio when both width and height given. output_path: Where to save. Defaults to _resized. next to input.
Inputs: path (required), width, height, scale, +2 more. Returns: object
rotate_imageA
Rotate an image by a specified number of degrees.
Args: path: Absolute path to the image file. degrees: Rotation angle in degrees (counter-clockwise). expand: If True, expand the output to fit the full rotated image. output_path: Where to save. Defaults to _rotated..
Inputs: path (required), degrees (required), expand, output_path. Returns: object
strip_metadataA
Remove all EXIF and metadata from an image for privacy.
Creates a clean copy of the image with no embedded metadata.
Args: path: Absolute path to the image file. output_path: Where to save. Defaults to _clean..
Inputs: path (required), output_path. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 13 tools
Each tool has a clearly distinct purpose with no ambiguity. Tools like apply_filter, compress_image, convert_image, and resize_image all perform different operations on images, while tools like convert_video and extract_frames handle video-specific tasks. The separation between image and video operations is clear, and even similar-sounding tools like crop_image and resize_image have distinct functions.
All tools follow a consistent verb_noun naming pattern with snake_case throughout. The verbs are descriptive and appropriate for each operation (e.g., apply_filter, compress_image, convert_video, extract_frames). There are no deviations in naming conventions, making the tool set predictable and easy to understand.
With 13 tools, this server is well-scoped for media processing, covering both image and video operations. Each tool serves a specific, useful function without redundancy. The count is appropriate for the domain, providing comprehensive coverage without being overwhelming or too sparse.
The tool set offers complete coverage for basic media processing tasks, including filtering, compression, conversion, cropping, resizing, rotation, metadata handling, and information retrieval for both images and videos. There are no obvious gaps; agents can perform a full range of operations from input to output without dead ends.
Maintenance
Related MCP Connectors
MCP server for Wan AI video generation
MCP server for Google Veo AI video generation
Hosted MCP server for AI photo editing: nothing to install, no desktop photo editor needed.
MCP server for Qwen Image 3 AI image generation
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA universal AI server that provides image and video processing tools (background removal, upscaling, vectorization, etc.) for any MCP-compatible client with simple setup.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides 17 FFmpeg-based tools for video and audio processing, including conversion, compression, and editing. It enables AI assistants to perform complex media tasks like extracting audio, adding watermarks, and merging videos using natural language.21,648 npm2MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for generating, editing, and processing images via multiple providers including Kilo, OpenRouter, OpenAI, and Gemini, with local tools for background removal, resizing, and cropping.27 npm3MIT
- AlicenseAqualityDmaintenanceLocal MCP server that compresses images and videos, extracts video frames, and prepares media for AI vision agents by returning file paths instead of inline base64.68 npm1MIT