mcp-video-gen
mcp-video-gen
Features
7 video providers — Volcengine Ark Seedance, DashScope/Wan, Kling, SiliconFlow, Vidu, MiniMax, Google Veo (2/3/3.1)
Image-to-video — generate videos from reference images (Veo)
TTS — text-to-speech via MiniMax (+ Google Chirp 3 HD with ADC)
Music generation — MiniMax Music + Google Lyria (instrumental, ~33s, GCP credits)
Speech-to-text — transcribe audio with word-level timestamps via Google Chirp 2 (for subtitle generation)
Ark migration ready — Volcengine Ark Seedance is available via
ARK_API_KEY/ARK_VIDEO_*Provider switching — choose the best provider per request via
providerparameterAuto-download — generated videos/audio saved to local disk automatically
Architecture
How It Works
User Prompt → AI Assistant (Claude / Cursor) → MCP Server → Provider API
↓
generate_video() → task_id
query_video_status(task_id) → download to diskAll video providers use an async pattern: submit a generation request, get a task ID, then poll until complete. The MCP server handles this transparently — the AI assistant calls generate_video, then query_video_status in a loop until the video is ready.
Supported Providers
Video Providers
Provider | Model | Free Tier | Quality | Duration | Best for |
Volcengine Ark Seedance | doubao-seedance-2.0 | Paid video API | 720p+ | 5-10s | Ark migration, Doubao/Seedance workflows |
DashScope / Wan (通义万相) | wan2.6-t2v | 50s free (90 days) | Up to 1080P | 5-10s | High quality, Chinese content |
Kling AI (可灵) | kling-v2-master | 66 credits/day (web only) | 720p | 5-10s | Good quality, daily free credits |
SiliconFlow (硅基流动) | Wan2.1-T2V-14B | $1 signup bonus | 720p | varies | Quick testing |
Vidu (生数科技) | vidu-2.0 | 200 promo credits | 720p | 4s | Short clips |
MiniMax Hailuo (海螺) | Hailuo 2.3 | Paid | Up to 1080P | 6-10s | Highest quality |
Google Veo (Vertex AI) | veo-2.0/3.0/3.1 | GCP credits | 720p-4K | 5-8s | Production quality, GCP users |
Provider selection guide
Need a video?
├─ Using Volcengine Ark?
│ └─ ark ✅ (Seedance video task API)
│
├─ Need highest quality?
│ ├─ minimax (best Chinese provider, paid)
│ └─ veo (best international, GCP credits)
│
├─ Have GCP credits to spend?
│ ├─ Budget-conscious → veo-3.0-fast ($0.15/sec, 1080p)
│ └─ Best quality → veo-2.0 ($0.50/sec) or veo-3.0 ($0.75/sec)
│
└─ Need long videos (10s)?
├─ dashscope / kling / minimax (support 10s)
└─ veo max 8sAudio Providers
Provider | Capability | Model | Pricing | Env Var |
MiniMax TTS | Text-to-Speech | speech-2.6-hd | ~¥0.01/req |
|
Google TTS | Text-to-Speech | Chirp 3 HD (52 languages) | ~$30/1M chars | ADC only |
MiniMax Music | Music Generation (with lyrics) | music-2.0 | ~¥0.1/song |
|
Google Lyria | Instrumental Music | lyria-002 (~33s WAV) | ~$0.06/clip |
|
Transcription
Provider | Capability | Model | Pricing | Env Var |
Google STT | Speech-to-Text + timestamps | Chirp 2 | ~$0.016/min |
|
MiniMax tools auto-enable when
MINIMAX_API_KEYis setGoogle Lyria and STT auto-enable when
GCP_PROJECT_IDis set (usesGEMINI_API_KEY)Google TTS requires ADC (
gcloud auth application-default login)
Quick Start
1. Clone & install
git clone https://github.com/kevinten-ai/mcp-video-gen.git
cd mcp-video-gen
uv sync # basic deps
uv sync --extra gcp # add this if using Google Veo2. Configure MCP
Only configure the providers you want to use. At least one API key is required.
# Minimal Ark setup
claude mcp add -s user mcp-video-gen \
--env ARK_API_KEY=your_key \
--env ARK_VIDEO_MODEL=doubao-seedance-2-0-fast-260128 \
-- uv --directory /path/to/mcp-video-gen run video-gen
# Full (all current providers including Veo)
claude mcp add -s user mcp-video-gen \
--env ARK_API_KEY=your_key \
--env KLING_ACCESS_KEY=your_ak \
--env KLING_SECRET_KEY=your_sk \
--env MINIMAX_API_KEY=your_key \
--env GCP_PROJECT_ID=your-project-id \
--env GEMINI_API_KEY=your_gcp_api_key \
-- uv --directory /path/to/mcp-video-gen run --extra gcp video-genImportant:
--extra gcpmust come afterrun, not before it. This is auv runoption, not a globaluvoption.
{
"mcpServers": {
"mcp-video-gen": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-video-gen", "run", "--extra", "gcp", "video-gen"],
"env": {
"ARK_API_KEY": "your_key",
"ARK_VIDEO_MODEL": "doubao-seedance-2-0-fast-260128",
"GCP_PROJECT_ID": "your-project-id",
"GEMINI_API_KEY": "your_gcp_api_key"
}
}
}
}3. Use it
Ask your AI assistant to generate a video:
"Generate a video of a cat playing piano"The assistant will call generate_video, wait, then call query_video_status to download the result.
Tools (7 total)
Video
generate_video — Text-to-video or image-to-video generation. Params:
prompt,provider,duration(5/10),aspect_ratio(16:9/9:16/1:1),image_url(for img2vid, Ark/Veo),model(optional provider model ID).query_video_status — Poll generation status and auto-download. Params:
task_id,provider.
For Veo image-to-video, reference images may be local files, gs:// URIs, or public HTTP(S) URLs. Localhost, .local, and private/loopback IP-literal URLs are rejected, remote TLS certificates are verified, and reference images are limited to 20 MiB.
Audio
generate_speech — Text-to-speech. Params:
text,provider(minimax/google-tts),voice_id,speed(0.5-2.0).generate_music — AI music generation. Params:
prompt,provider(minimax/google-lyria),lyrics(optional, supports[Verse]/[Chorus]/[Bridge]).
Transcription
transcribe_audio — Speech-to-text with word-level timestamps (Google Chirp 2). Params:
audio_path,language_code(en-US/cmn-CN/ja-JP/...). Use withffmpeg add_subtitlesfor full subtitle pipeline.
Utility
list_providers — Show all configured video, TTS, music, and STT providers, including default video models.
resources — Read
providers://models/<provider>for a provider model catalog and supported model IDs.
API Key Registration Guide
Item | Detail |
Platform | Volcengine Ark |
URL | |
Pricing | Ark video generation billing; may not be covered by CodingPlan chat quota |
Env Var |
|
Steps:
Create or reuse a Volcengine Ark API key.
Set
ARK_API_KEYfor shared Ark credentials, orARK_VIDEO_API_KEYif you want a video-specific key.Optional: set
ARK_VIDEO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3.Optional: set
ARK_VIDEO_MODEL=doubao-seedance-2-0-fast-260128.
The Ark video provider calls
/contents/generations/tasks. It does not use the CodingPlan chat completions endpoint.
Item | Detail |
Platform | 阿里云百炼 (Alibaba Bailian) |
URL | |
Free Tier | 50 seconds free (valid 90 days) |
Env Var |
|
Steps:
Register at https://www.aliyun.com (phone/email)
Go to https://bailian.console.aliyun.com → activate DashScope
API-KEY 管理: https://bailian.console.aliyun.com/?apiKey=1#/api-key
Click "创建 API Key" → copy (format:
sk-xxxxxxxxxxxxxxxx)
Item | Detail |
Platform | Kling AI Developer Platform |
URL | |
Free Tier | 66 credits/day (web only); API requires purchased resource pack |
Env Vars |
|
Steps:
Sign up at https://klingai.com
Developer Console: https://app.klingai.com/global/dev/document-api/quickStart/userManual
Settings > API Keys → create key pair (Access Key + Secret Key)
Important: 66 daily credits are web-only, NOT for API. API requires purchasing a resource pack.
Item | Detail |
Platform | SiliconFlow |
URL | |
Free Tier | $1 bonus (~3 videos at $0.29/video) |
Env Var |
|
Steps:
Register at https://cloud.siliconflow.cn/account/login (Chinese phone)
API Keys: https://cloud.siliconflow.cn/account/ak → "新建 API Key"
Copy (format:
sk-xxxxxxxxxxxxxxxx)
Video download URLs expire in 10 minutes — the MCP server auto-downloads on query.
Item | Detail |
Platform | Vidu Platform |
URL | |
Free Tier | Apply for 200 free API credits (promotional) |
Env Var |
|
Steps:
Sign up at https://www.vidu.com → API Platform: https://platform.vidu.com
Create API key → copy
API credits are separate from web credits (800/month web credits don't apply to API).
Item | Detail |
Platform | MiniMax Open Platform |
URL | |
Free Tier | None. ~¥0.7/video (512P 6s) to ~¥3.7/video (1080P 6s) |
Env Vars |
|
Steps:
Register at https://platform.minimaxi.com (Chinese phone)
Complete real-name verification (实名认证)
Create API key (format:
sk-api-xxxxxxxxxxxxxxxx)Top up at billing center (min ~¥10)
Setting
MINIMAX_API_KEYalso enables TTS and music generation tools.
Item | Detail |
Platform | Google Cloud Vertex AI |
URL | |
Free Tier | No free tier. Uses GCP credits/billing. |
Env Vars |
|
Prerequisites:
GCP project with billing: https://console.cloud.google.com/projectcreate
Enable Vertex AI API: https://console.cloud.google.com/apis/library/aiplatform.googleapis.com
GCP API Key: https://console.cloud.google.com/apis/credentials
Models:
Model | Resolution | Pricing | Best for |
| 720p | ~$0.50/sec | Stable, GA |
| 1080p | ~$0.75/sec | High quality |
| 1080p | ~$0.15/sec | Cost-effective |
| 4K | ~$0.75/sec | Highest quality |
| 1080p | ~$0.10/sec | Best value ✅ |
Auth options:
GCP API Key (recommended) — set
GEMINI_API_KEY=your_gcp_api_key. Simplest setup, no extra deps.OAuth2 / ADC — run
gcloud auth application-default login. Requires--extra gcpforgoogle-auth.
Optional env vars:
Variable | Default | Description |
|
| Model to use |
| — | GCS bucket for output (omit for base64 inline) |
|
| Vertex AI region |
| — | GCP API key (shared with mcp-image-gen) |
Environment Variables
Variable | Provider | Required |
| Volcengine Ark Seedance | At least one provider |
| Volcengine Ark Seedance | Optional video-specific override |
| Volcengine Ark Seedance | Optional, default: |
| Volcengine Ark Seedance | Optional, default: |
| Volcengine Ark Seedance | Optional, default: |
| All providers | Optional, default prefers |
| Wan / DashScope (阿里) | must be configured |
| Kling AI (可灵) | |
| Kling AI (可灵) | |
| SiliconFlow (硅基流动) | |
| Vidu (生数) | |
| MiniMax (海螺 + TTS + Music) | |
| MiniMax | Optional, default: |
| Google Veo | Required for Veo |
| Google Veo | Recommended for Veo (or use ADC) |
| Google Veo | Optional, default: |
| Google Veo | Optional, default: |
| Google Veo | Optional, GCS bucket for video output |
| All providers | Optional, default: |
Troubleshooting
Common Errors
Error | Provider | Root Cause | Solution |
| All | No API keys set | Set at least one provider's API key in MCP env config |
| All | Typo or provider not configured | Check |
| All | Video not ready yet | Normal — call |
Provider-Specific Errors
Error | Provider | Solution |
| Kling | Check both |
| MiniMax | Check API key, ensure account has balance |
| Veo | Set |
| Veo | Vertex AI rate limit (10 RPM). Wait 1 min or switch model via |
| Veo | Content flagged — rephrase prompt to avoid restricted content |
Veo-Specific Notes
API Key vs ADC:
GEMINI_API_KEYis the simplest auth method. Same key works for both mcp-image-gen and mcp-video-gen.--extra gcpplacement: Must come afterrunin the uv command:uv --directory /path run --extra gcp video-gen(NOTuv --directory /path --extra gcp run video-gen)Base64 mode: Without
VEO_GCS_BUCKET, videos are returned as base64 in the API response and decoded locally. Works well for videos under 8s.Cost control: The default is
veo-3.1-fast-generate-001for lower-cost 1080p output. OverrideVEO_MODELor passmodeltogenerate_videofor a specific request.
Download Issues
Issue | Solution |
| Video URL may have expired. SiliconFlow URLs expire in 10 min. |
Video file is 0 bytes | Provider returned empty response. Retry generation. |
SSL verification errors | Server disables SSL verify for downloads (some providers use self-signed certs) |
Project Structure
src/video_gen/
├── __init__.py
├── server.py # MCP server + tool handlers
├── providers/
│ ├── __init__.py # BaseProvider abstract class + registry
│ ├── dashscope.py # 阿里 通义万相 Wan 2.6
│ ├── kling.py # 可灵 Kling AI (JWT auth)
│ ├── siliconflow.py # 硅基流动 SiliconFlow
│ ├── vidu.py # 生数 Vidu
│ ├── minimax.py # MiniMax 海螺
│ └── veo.py # Google Veo (Vertex AI, API key + ADC)
└── audio/
├── __init__.py # BaseTTSProvider + BaseMusicProvider + registry
├── minimax_tts.py # MiniMax TTS (speech-2.6-hd)
├── minimax_music.py # MiniMax Music (music-2.0)
├── google_lyria.py # Google Lyria 2 instrumental music (Vertex AI)
├── google_tts.py # Google Cloud TTS Chirp 3 HD (ADC only)
└── google_stt.py # Google Cloud STT Chirp 2 (transcription)Adding a New Provider
Create
src/video_gen/providers/your_provider.pyImplement
BaseProvider(properties:name,description,free_tier_info; methods:generate(),query())Register in
server.py:_init_providers()with env var checkProvider appears automatically in
list_providers,providers://models/<provider>, and thegenerate_videotool schema
Local Development
git clone https://github.com/kevinten-ai/mcp-video-gen.git
cd mcp-video-gen
uv sync --extra gcp # all deps including google-auth
# Run directly
uv run video-gen
# Debug with MCP Inspector
npx @modelcontextprotocol/inspector uv --directory . run --extra gcp video-genRelated Projects
mcp-image-gen — AI image generation MCP server (Gemini + Imagen)
mcp-3d-gen — AI 3D model generation MCP server
License
MIT — see LICENSE for details.