vivideo
AI video generation via the Vivideo API: auto or manual mode, avatars, voices, brand kits.
사용해야 할까요
품질 및 안전성
발견 사항 (2)
- HIGH
- MEDIUMcheck_configuration에서
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"vivideo": {
"command": "npx",
"args": [
"@vivideo/mcp"
]
}
}
}실행 가능한 패키지
1.0.2stdio원격 엔드포인트
https://api.vivideo.ai/mcpstreamable-http할 수 있는 일
도구 목록
도구 (13)
🟡check_configuration
Check whether a Vivideo API key is present on this request. Call this FIRST. Returns { configured: boolean }. If false, ask the user to add an Authorization: Bearer vv_live_... header to the MCP server config (a key from https://app.vivideo.ai/account/api-keys). Never asks for or exposes the key.
입력 스키마
{
"type": "object",
"properties": {}
}🟢check_account
Get the account plan, premium status, and remaining credit balance. Use this to decide whether the user can generate a video (rendering needs a premium plan and enough credits). Returns plan, premium, credits, free_video_available, and links (upgrade / buy_credits). Cheap and safe to call often.
입력 스키마
{
"type": "object",
"properties": {}
}🟡list_models(mode)
List the video models available for MANUAL mode plus the auto-generate pipeline (id "vivideo-auto"). Each model lists its operations, allowed durations, resolutions, aspect ratios, style presets and per-second credit rate — use these to build a valid create request. Filter with `mode` to keep the response small.
입력 스키마
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"auto",
"manual"
],
"description": "Only return models for this mode."
}
}
}🟡list_avatars(search, gender, limit)
List available avatars for auto-mode videos (the stock catalogue plus the account's own avatars). Stock avatars are grouped by person, each with a `looks` array — pass a looks[].avatar_id (or an owned avatar's id) as `avatar_id` in create_auto_video. Use `search`/`limit` to keep responses small.
입력 스키마
{
"type": "object",
"properties": {
"search": {
"type": "string",
"description": "Filter avatars by name."
},
"gender": {
"type": "string",
"enum": [
"male",
"female",
"unspecified"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Max avatars to return (default 20)."
}
}
}🟡list_voices(language, gender, search, limit)
List available voices for auto-mode videos. Returns voice ids to pass as `voice_id` in create_auto_video. Filter by language/gender/search and cap with `limit`. Voice cloning is not available via the API.
입력 스키마
{
"type": "object",
"properties": {
"language": {
"type": "string",
"description": "e.g. \"English\"."
},
"gender": {
"type": "string"
},
"search": {
"type": "string"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Max voices (default 20)."
}
}
}🟡list_brand_kits
List the account's brand kits (logo, colors, fonts, motion style). Returns brand_ref ids to pass as `brand_kit_id` in create_auto_video to produce an on-brand video.
입력 스키마
{
"type": "object",
"properties": {}
}🟡estimate_credits(mode, model, duration_seconds, resolution)
Estimate the credits a generation will cost, from the published per-model rates — BEFORE creating it. This is an estimate, not a charge; the exact amount is returned as credits_charged when you create the video. Use it with check_account to confirm the user can afford the request.
입력 스키마
{
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"auto",
"manual"
]
},
"model": {
"type": "string",
"description": "Required for manual mode — a model id from list_models."
},
"duration_seconds": {
"type": "integer",
"minimum": 1
},
"resolution": {
"type": "string",
"description": "Manual mode — one of the model's resolutions."
}
},
"required": [
"mode"
]
}🟡create_auto_video(prompt, duration_seconds, avatar_id, voice_id, brand_kit_id, ...)
Create a video in AUTO mode: Vivideo writes the script and produces a complete AI-avatar video from your prompt. Returns immediately with a video id and status "processing" (paid) or "preview" (free accounts — see the preview field and upgrade link). Then call wait_for_video or get_video. An Idempotency-Key is sent automatically so a retry never creates a duplicate. Rendering requires a premium plan and credits.
입력 스키마
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 5000,
"description": "What the video should show or say."
},
"duration_seconds": {
"type": "integer",
"minimum": 5,
"maximum": 300,
"description": "5–300, default 30."
},
"avatar_id": {
"type": "string",
"description": "From list_avatars. Omit for a default presenter."
},
"voice_id": {
"type": "string",
"description": "From list_voices."
},
"brand_kit_id": {
"type": "string",
"description": "A brand_ref from list_brand_kits."
},
"orientation": {
"type": "string",
"enum": [
"landscape",
"portrait"
]
},
"folder_id": {
"type": "string"
},
"name": {
"type": "string",
"maxLength": 60
},
"idempotency_key": {
"type": "string",
"maxLength": 255,
"description": "Optional. Reuse the same key to make a retry safe."
}
},
"required": [
"prompt"
]
}🟡create_manual_video(model, prompt, duration_seconds, resolution, aspect_ratio, ...)
Create a video in MANUAL mode: send your prompt straight to a specific model (get ids/options from list_models). The operation is inferred from inputs — add image_url for image-to-video. resolution/duration/aspect_ratio must match the model (an invalid value returns a 400 listing what is allowed). Returns a video id and status; then wait_for_video or get_video. Idempotency handled automatically.
입력 스키마
{
"type": "object",
"properties": {
"model": {
"type": "string",
"description": "A model id from list_models, e.g. \"veo31_fast\"."
},
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 5000
},
"duration_seconds": {
"type": "integer",
"minimum": 1,
"description": "Must be one of the model's durations."
},
"resolution": {
"type": "string"
},
"aspect_ratio": {
"type": "string"
},
"image_url": {
"type": "string",
"description": "Public https image → image-to-video."
},
"negative_prompt": {
"type": "string"
},
"seed": {
"type": "integer"
},
"generate_audio": {
"type": "boolean"
},
"style": {
"type": "string"
},
"folder_id": {
"type": "string"
},
"name": {
"type": "string",
"maxLength": 60
},
"idempotency_key": {
"type": "string",
"maxLength": 255
}
},
"required": [
"model",
"prompt"
]
}🟢get_video(id)
Get a video's current status and result. status is one of queued | processing | completed | failed | preview. When completed, video_url is the MP4. When failed, credits are refunded and error explains why. Cheap; prefer wait_for_video for polling instead of calling this in a tight loop.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The video id from a create call."
}
},
"required": [
"id"
]
}⚪wait_for_video(id, timeout_seconds)
Wait for a video to reach a terminal state (completed / failed / preview), then return it. Polls safely at the API-suggested interval for up to ~20 seconds per call (HTTP requests are time-capped). If it does not finish in time it returns { timed_out: true } with the latest status — simply call it again with the same id to keep waiting. It never blocks indefinitely or over-polls.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"timeout_seconds": {
"type": "integer",
"minimum": 5,
"maximum": 20,
"description": "Max wait per call (default 20, cap 20)."
}
},
"required": [
"id"
]
}🟢list_videos(status, limit)
List the account's videos, newest first. Filter by status and limit the count to keep responses small.
입력 스키마
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"queued",
"processing",
"completed",
"failed",
"preview"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Default 20."
}
}
}⚪render_preview(id)
For FREE accounts only: after the user upgrades, render a video that was returned as status "preview". Charges run on the same project (the first video after upgrading is free). If the video is already rendering/complete, returns its current state. If the account is still free, returns an upgrade_required error with an upgrade link.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The preview video id."
}
},
"required": [
"id"
]
}커뮤니티
증거