Skip to main content
Glama

video-mcp

2a 단계 스켈레톤 — 스텁 전용, 아직 실제 API 연결 없음. 실제 Veo 연결은 2a.2 단계에서 추가됩니다.

다중 공급자를 지원하는 비동기 비디오 생성 MCP 서버입니다.

Python 3.10+ License: MIT

상태

⚠️ 이것은 2a 단계 스켈레톤입니다. 모든 공급자는 스텁 응답을 반환합니다. 약 2초의 실제 시간 경과 후 submittedpendingcomplete로 진행되는 가짜 작업 ID를 반환합니다. 실제 비디오 바이트는 생성되지 않습니다. 실제 Veo 3.1 연결이 다음 마일스톤(2a.2 단계)입니다.

Related MCP server: hyper-video-service

목적

여러 백엔드 공급자를 사용하여 비동기 비디오 생성을 위한 MCP 인터페이스를 제공합니다. amplifier-bundle-creative 오케스트레이션 번들과 함께 사용하도록 설계되었습니다.

관련 링크

공급자

공급자

상태

참고

Veo 3.1 Standard

스텁 — 실제 연결 대기 중

$0.40/초, 4K, 최고의 립싱크

Veo 3.1 Fast

스텁 — 실제 연결 대기 중

$0.15/초, 1080p, 빠른 반복

Veo 3.1 Lite

스텁 — 실제 연결 대기 중

$0.05/초, 720p/1080p, 대량 처리

Grok Imagine Video

스텁 전용 — NotImplementedError 발생

D019: xAI DPA/MSA 대기 중

Sora 2 Pro

스텁 전용 — NotImplementedError 발생

D010: API EOL 2026-09-24

스텁 동작: Veo 스텁은 가짜 job_id(예: stub_veo_standard_abc123)를 반환합니다. 해당 ID로 get_job_status를 호출하면 약 2초 동안 status: pending을 반환한 후, 자리 표시자 output_url과 함께 status: complete를 반환합니다. 실제 비디오는 생성되지 않습니다.

설정

필수 환경 변수:

변수

목적

GEMINI_API_KEY

Veo 3.1 공급자 (실제 연결 대기 중)

선택 사항:

변수

기본값

목적

XAI_API_KEY

Grok Imagine Video (제한됨 — D019 참조)

OUTPUT_DIR

~/Downloads/videos/

기본 출력 디렉토리

VIDEO_MCP_REQUEST_TIMEOUT

300

요청 시간 초과 (초 단위)

VIDEO_MCP_LOG_PROMPTS

false

이벤트 로그에 전체 프롬프트 기록

퀵스타트

generate_video

비디오 생성 작업을 제출합니다 (즉시 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"
  }
}

응답:

## ✅ 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

완료 여부를 폴링합니다:

{
  "tool": "get_job_status",
  "params": {
    "job_id": "stub_veo_standard_a1b2c3d4e5f6"
  }
}

응답 (스텁 사용 시 약 2초 후):

## ✅ Video Complete

**Job ID:** `stub_veo_standard_a1b2c3d4e5f6`
**Status:** complete
**Progress:** 100%
**Output URL:** https://stub.example.com/video/stub_veo_standard_a1b2c3d4e5f6.mp4

프로젝트 구조

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.py

개발

# 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.server

라이선스

MIT

Related MCP Connectors

Related MCP Servers