Skip to main content
Glama
README.md
# Modular MCP Media Project

This project has been refactored into two independent local MCP-style CLI servers:

- `image_mcp/` for image processing
- `video_mcp/` for video processing

Each server is modularized into a `main.py` plus a `services/` package so you can add new capabilities without mixing concerns.

## Project structure

```text
mcp_server/
├── image_mcp/
│   ├── __init__.py
│   ├── main.py
│   └── services/
│       ├── __init__.py
│       ├── bg_removal.py
│       ├── compress.py
│       ├── resize.py
│       ├── upscale.py
│       ├── convert.py
│       ├── crop.py
│       ├── watermark.py
│       ├── face_blur.py
│       ├── ocr.py
│       └── common.py
├── video_mcp/
│   ├── __init__.py
│   ├── main.py
│   └── services/
│       ├── __init__.py
│       ├── compress.py
│       ├── trim.py
│       ├── gif.py
│       ├── merge.py
│       ├── audio.py
│       ├── thumbnail.py
│       ├── subtitle.py
│       └── common.py
├── app.py
├── requirements.txt
├── README.md
├── input/
├── output/
```

## Install dependencies

```bash
pip install -r requirements.txt
```

Install FFmpeg on the machine and ensure it is available in PATH.

## Image MCP usage

```bash
python image_mcp/main.py bg --input input/in.png --output output/out.png
python image_mcp/main.py resize --input input/in.jpg --output output/out.jpg --width 800 --height 600
python image_mcp/main.py upscale --input input/in.jpg --output output/out.jpg
python image_mcp/main.py compress --input input/in.jpg --output output/out.jpg --quality 60
python image_mcp/main.py convert --input input/in.png --output output/out.jpg
python image_mcp/main.py crop --input input/in.jpg --output output/out.jpg --x1 10 --y1 10 --x2 200 --y2 200
python image_mcp/main.py watermark --input input/in.jpg --output output/out.jpg --text "Demo"
python image_mcp/main.py faceblur --input input/in.jpg --output output/out.jpg
python image_mcp/main.py ocr --input input/in.jpg
```

## Video MCP usage

```bash
python video_mcp/main.py compress --input input/in.mp4 --output output/out.mp4
python video_mcp/main.py trim --input input/in.mp4 --output output/out.mp4 --start 00:00:05 --end 00:00:10
python video_mcp/main.py gif --input input/in.mp4 --output output/out.gif
python video_mcp/main.py merge --inputs input/v1.mp4 input/v2.mp4 --output output/out.mp4
python video_mcp/main.py audio --input input/in.mp4 --output output/out.mp3
python video_mcp/main.py thumbnail --input input/in.mp4 --output output/thumb.jpg
python video_mcp/main.py subtitle --input input/in.mp4 --output output/out.srt
```

## Design notes

- Each command is implemented in a dedicated service module.
- Shared validation and file-size logging is centralized in the service common files.
- Both servers expose a simple argparse CLI and can be adapted into HTTP APIs later.
- The architecture is intentionally local-first and easy to extend.