video-mcp
video-mcp
Esqueleto de la Fase 2a — solo stubs, aún sin conexión a la API real. La conexión en vivo de Veo llegará en la Fase 2a.2.
Un servidor MCP de generación de vídeo asíncrono con soporte para múltiples proveedores.
Estado
⚠️ Este es un esqueleto de la Fase 2a. Todos los proveedores devuelven respuestas provisionales (stubs): IDs de trabajo falsos que avanzan de
submitted→pending→completedespués de ~2 segundos de tiempo real. No se generan bytes de vídeo reales. La conexión en vivo de Veo 3.1 es el siguiente hito (Fase 2a.2).
Related MCP server: hyper-video-service
Propósito
Proporciona una interfaz MCP para la generación de vídeo asíncrona utilizando múltiples proveedores de backend. Diseñado para su uso con el paquete de orquestación amplifier-bundle-creative.
Enlaces relacionados
Especificaciones + registro de decisiones: https://github.com/michaeljabbour/amplifier-bundle-creative/blob/main/spec/DECISIONS.md
D018: Patrón asíncrono —
generate_videodevuelve unjob_idinmediatamente; los llamadores consultan medianteget_job_statusD021: Forma de
VideoProviderABC (src/providers/base.pyde este repositorio)
MCP de imágenes relacionado: https://github.com/michaeljabbour/imagen-mcp (generación de imágenes)
Proveedores
Proveedor | Estado | Notas |
Veo 3.1 Standard | Stub — conexión en vivo pendiente | $0.40/seg, 4K, mejor sincronización labial |
Veo 3.1 Fast | Stub — conexión en vivo pendiente | $0.15/seg, 1080p, iteración más rápida |
Veo 3.1 Lite | Stub — conexión en vivo pendiente | $0.05/seg, 720p/1080p, alto volumen |
Grok Imagine Video | Solo stub — lanza NotImplementedError | D019: xAI DPA/MSA pendiente |
Sora 2 Pro | Solo stub — lanza NotImplementedError | D010: API EOL 2026-09-24 |
Comportamiento de los stubs: Los stubs de Veo devuelven un job_id falso (p. ej., stub_veo_standard_abc123). Una llamada a get_job_status con ese ID devolverá status: pending durante ~2 segundos, luego status: complete con un output_url de marcador de posición. No se produce ningún vídeo real.
Configuración
Variables de entorno requeridas:
Variable | Propósito |
| Proveedor Veo 3.1 (conexión en vivo pendiente) |
Opcional:
Variable | Predeterminado | Propósito |
| — | Grok Imagine Video (restringido — ver D019) |
|
| Directorio de salida base |
|
| Tiempo de espera de la solicitud en segundos |
|
| Registrar prompts completos en el registro de eventos |
Inicio rápido
generate_video
Enviar un trabajo de generación de vídeo (devuelve inmediatamente un job_id):
{
"tool": "generate_video",
"params": {
"prompt": "A serene mountain lake at golden hour, camera slowly panning right",
"provider": "veo-3.1-standard",
"duration": 8.0,
"aspect_ratio": "16:9"
}
}Respuesta:
## ✅ Video Job Submitted
**Provider:** veo-3.1-standard
**Job ID:** `stub_veo_standard_a1b2c3d4e5f6`
**Status:** submitted
### ⏰ Polling Instructions
Call `get_job_status` with job_id `stub_veo_standard_a1b2c3d4e5f6` every ~15 seconds.
Typical completion: 30–120s for live Veo calls (2s for stubs).get_job_status
Consultar el estado de finalización:
{
"tool": "get_job_status",
"params": {
"job_id": "stub_veo_standard_a1b2c3d4e5f6"
}
}Respuesta (después de ~2s con stubs):
## ✅ Video Complete
**Job ID:** `stub_veo_standard_a1b2c3d4e5f6`
**Status:** complete
**Progress:** 100%
**Output URL:** https://stub.example.com/video/stub_veo_standard_a1b2c3d4e5f6.mp4Estructura del proyecto
video-mcp/
├── src/
│ ├── server.py # MCP entry point — generate_video, get_job_status
│ ├── config/
│ │ ├── constants.py # VEO_MODELS, STUBBED_PROVIDERS, limits
│ │ ├── settings.py # Env-var settings (GEMINI_API_KEY, XAI_API_KEY, ...)
│ │ ├── paths.py # Output path resolution
│ │ └── dotenv.py # .env loader shim
│ ├── providers/
│ │ ├── base.py # VideoProvider ABC, VideoCapabilities, VideoJobResult, JobStore
│ │ ├── veo_provider.py # Veo 3.1 Standard/Fast/Lite stubs
│ │ ├── sora_provider.py # Sora 2 stub (D010)
│ │ ├── grok_provider.py # Grok Imagine stub (D019)
│ │ ├── selector.py # Provider routing (override + default)
│ │ └── registry.py # Provider factory + JobStore routing
│ ├── models/
│ │ └── input_models.py # Pydantic models for MCP tools
│ ├── exceptions.py # VideoError hierarchy
│ └── services/
│ └── logging_config.py # Structured JSONL event logging
└── tests/
├── test_providers.py
└── test_server.pyDesarrollo
# Clone and install
git clone https://github.com/michaeljabbour/video-mcp.git
cd video-mcp
python3 -m venv venv && source venv/bin/activate
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Verify server loads
python3 -c "from src.server import mcp; print('Server loads OK')"
# Start server (waits for MCP stdio)
python -m src.serverLicencia
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Google Veo AI video generation
MCP server for Wan AI video generation
MCP server for MiniMax H3 multimodal video generation
MCP server for Kling AI video generation
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server that exposes Google's Veo2 video generation capabilities, allowing clients to generate videos from text prompts or images.735MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for programmatic video generation. Send a prompt, get an MP4.-
- AlicenseAqualityDmaintenanceA unified MCP server for video generation that intelligently routes requests to HeyGen (for avatar/presenter videos) or Google Veo (for creative/cinematic content).11MIT
- AlicenseAqualityCmaintenanceMCP server for Google Veo 3.1 video generation. Supports text/video/image-based generation, extension, and interpolation with cost estimation and batch processing.16426 npm1MIT