A side-by-side look at the CraftStory and Vivideo MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose CraftStory for multimedia process work as a local process; choose Vivideo for multimedia process as a local process. You can also run both side by side in one mcpServers block.
CRAFTSTORY_API_KEY.list_models, list_voices, list_avatars.check_configuration, check_account, list_models.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Multimedia Process | Multimedia Process |
| Quality signal | 56/100 · Good | 57/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | CRAFTSTORY_API_KEY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 0 |
| Directory activity | 0 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 13 | 13 |
| Full listing | View CraftStory | View Vivideo |
list_modelsModels, status (a paused model answers 503), limits and priceslist_voicesLibrary voices; `include_cloned` adds your cloned voiceslist_avatarsYour custom avatars, or the scenes of one avatarcreate_audio_clipSpeech from text + voice, or upload a local recordingpreview_costCredit estimate for a CraftStory 2.0 videocreate_craftstory2_videoStart a CraftStory 2.0 job (photo or avatar scene + audio clips)get_job_statusStatus, percentage, failure reason, refund flagget_job_resultFull record with the signed video URL (valid 7 days)wait_for_jobBounded polling (default 45 s, max 55 s); call again while `state` is `running`upscale_videoNew job with the upscaled result (CraftStory 2.0 720p -> 1080p, H3 2x)create_imageNano Banana image from a prompt, optionally from up to 8 of your pictures; `aspect_ratio` 9:16, 16:9, 4:5, 1:1, 3:4, 4:3 (13 credits, 25 with `nano-banana-pro`). The result's `image_url` goes straight into the video toolscreate_musicMusic track of 5-180 s from a description, instrumental by default (1 credit per second); a declined prompt comes back with `prompt_suggestion`check_configurationCheck whether a Vivideo API key is configured for this MCP server. Call this FIRST. Returns { configured: boolean }. If false, ask the user to set the VIVIDEO_API_KEY environment variable (a key from https://app.vivideo.ai/account/api-keys) and restart the MCP server. Never asks for or exposes the key.check_accountGet 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.list_modelsList 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.list_avatarsList 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.list_voicesList 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.list_brand_kitsList 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.estimate_creditsEstimate 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.create_auto_videoCreate 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.create_manual_videoCreate 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.get_videoGet 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.wait_for_videoWait for a video to reach a terminal state (completed / failed / preview), then return it. Polls safely at the API-suggested interval up to a timeout. If it does not finish in time it returns { timed_out: true } with the latest status so you can hand control back and call again later — it never blocks indefinitely or over-polls.list_videosList the account's videos, newest first. Filter by status and limit the count to keep responses small.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"craftstory": {
"command": "npx",
"args": [
"-y",
"@craftstory/mcp"
],
"env": {
"CRAFTSTORY_API_KEY": "YOUR_CRAFTSTORY_API_KEY_HERE"
}
}
}
}
{
"mcpServers": {
"vivideo": {
"command": "npx",
"args": [
"-y",
"@vivideo/mcp"
]
}
}
}