moviepy-mcp

un servidor mcp de moviepy que actualmente cuenta con más de 20 herramientas de edición de video y audio.

Documentación

VideoEditor-MCP

Python Version License: MIT

Un potente servicio de generación y edición de video impulsado por FastAPI, MoviePy y FastMCP.

🎬 Descripción

VideoEditor-MCP proporciona un servicio integral para crear y manipular contenido de video y audio de forma programática. Expone un amplio conjunto de herramientas tanto a través de una API RESTful (usando FastAPI) como de un servidor Model-Context-Protocol (MCP), lo que facilita la integración de capacidades de edición de video en cualquier aplicación o flujo de trabajo basado en agentes de IA.

Ya sea que necesites generar clips simples, realizar ediciones complejas o componer múltiples videos, este servicio ofrece una solución robusta y fácil de usar.

✨ Características principales

  • Interfaz dual: Interactúa a través de una API REST estándar o un servidor MCP flexible para agentes de IA.
  • Suite de edición enriquecida: Una amplia gama de herramientas para tareas de video, audio y composición.
  • Extensible: Construido con una arquitectura modular basada en routers, lo que facilita agregar nuevas funciones.
  • Contenedorizado: Incluye soporte para Docker para facilitar la implementación y el escalado.
  • Herramientas modernas: Utiliza uv para la gestión rápida de dependencias y pytest para pruebas robustas.

📸 Capturas de pantalla

Main Interface
La interfaz principal de chat para interactuar con el agente de edición de video.

Expanded Settings
Panel de configuración expandido para configurar el proveedor de LLM y el modelo.
Collapsed Settings
Panel de configuración contraído.

📖 Tabla de contenidos

📦 Instalación

Requisitos previos

  • Python 3.12+
  • uv (un instalador de paquetes de Python rápido)
  • FFmpeg (requerido por MoviePy para el procesamiento de video)
# On Debian/Ubuntu
sudo apt-get update && sudo apt-get install -y ffmpeg

# On macOS (using Homebrew)
brew install ffmpeg

Configuración

  1. Clonar el repositorio:

    git clone https://github.com/your-username/moviepy-mcp.git
    cd moviepy-mcp
    
  2. Instalar dependencias usando uv: Este comando crea un entorno virtual e instala todos los paquetes requeridos desde pyproject.toml.

    uv sync
    

🚀 Inicio rápido

Configuración del entorno

Antes de ejecutar la aplicación, debes configurar las variables de entorno.

  1. Entorno del backend: Crea un archivo .env en la raíz del proyecto y agrega las variables de entorno necesarias para el servidor FastAPI.

    # .env
    EXAMPLE_VARIABLE=example_value
    
  2. Entorno del frontend: Crea un archivo .env.local en el directorio frontend y agrega tus variables de entorno del lado del cliente.

    # frontend/.env.local
    NEXT_PUBLIC_EXAMPLE_VARIABLE=example_value
    

Ejecución de la aplicación

Este proyecto ahora incluye un script start.sh para optimizar la configuración de desarrollo. Este script se encarga de instalar las dependencias tanto del backend como del frontend, e inicia ambos servicios.

  1. Instalar dependencias e iniciar los servidores de desarrollo: El siguiente comando:

    • Instalará las dependencias de Python con uv.
    • Instalará las dependencias de Node.js con npm.
    • Iniciará el servidor backend de FastAPI.
    • Iniciará el servidor de desarrollo del frontend de Next.js.
    uv sync && cd frontend && npm i && cd ../ && ./start.sh --dev
    

El servidor FastAPI estará disponible en http://localhost:8000 y el frontend en http://localhost:3000.

🛠️ Documentación de la API

A continuación se muestra un resumen de los endpoints de API disponibles. Para modelos detallados de solicitud/respuesta, consulta la documentación generada automáticamente en http://localhost:8000/docs.

Generación de video

  • POST /video/generate: Crea un video simple con texto sobre un fondo.

Edición de video

  • POST /video-edits/cut: Recorta un video.
  • POST /video-edits/concatenate: Une múltiples videos.
  • POST /video-edits/resize: Cambia el tamaño de un video.
  • POST /video-edits/speed: Cambia la velocidad de reproducción.
  • POST /video-edits/color-effect: Aplica un filtro de color.
  • POST /video-edits/mirror: Refleja el video horizontal o verticalmente.
  • POST /video-edits/rotate: Rota el video.
  • POST /video-edits/crop: Recorta el video.
  • POST /video-edits/margin: Agrega un margen alrededor del video.
  • POST /video-edits/fade: Aplica desvanecimiento de entrada o salida.
  • POST /video-edits/loop: Repite el contenido del video.
  • POST /video-edits/time-effect: Aplica efectos basados en el tiempo como reversa o congelación.

Procesamiento de audio

  • POST /audio/volume: Ajusta el volumen del audio de un video.
  • POST /audio/extract: Extrae la pista de audio de un video.
  • POST /audio/fade: Desvanece el audio de entrada o salida.
  • POST /audio/loop: Repite la pista de audio.

Composición

  • POST /compositing/composite: Apila o organiza múltiples videos en cuadrícula.
  • POST /compositing/text-overlay: Agrega una superposición de texto a un video.
  • POST /compositing/image-overlay: Agrega una superposición de imagen a un video.

🤖 Herramientas MCP

El servidor MCP expone una amplia gama de herramientas para flujos de trabajo agénticos. Cada herramienta corresponde a una de las funcionalidades de la API.

Ejemplos de herramientas MCP:

  • create_video(text: str, duration: float)
  • cut_video(video_path: str, start_time: float, end_time: float)
  • concatenate_videos(video_paths: List[str])
  • resize_video(video_path: str, scale: float)
  • text_overlay(video_path: str, text: str)
  • adjust_volume(video_path: str, factor: float)
  • ...¡y muchas más!

Consulta src/videoEditor_mcp/mcp_server.py para obtener una lista completa de las herramientas disponibles y sus firmas.

🧪 Desarrollo y pruebas

Configuración

Sigue los pasos de Instalación para configurar el entorno de desarrollo. El grupo de dependencias dev en pyproject.toml incluye pytest y httpx para pruebas.

Ejecución de pruebas

Para ejecutar la suite completa de pruebas:

uv run pytest

Para ejecutar pruebas con análisis de cobertura de código:

uv run pytest --cov=src

🐳 Implementación con Docker

Este proyecto incluye un Dockerfile y docker-compose.yml para facilitar la contenedorización.

  1. Construir la imagen de Docker:

    docker-compose build
    
  2. Ejecutar el servicio: Esto iniciará el servidor FastAPI en el puerto 8000.

    docker-compose up
    

📜 Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.