CraftStory MCP server

Make talking-avatar videos from Claude, Cursor and any AI agent that speaks the Model Context Protocol. One photo and a script in, a lip-synced video with natural gestures out — through tools your assistant calls for you.

What your assistant can do with it

Install

You need Node.js 20+, a CraftStory plan with API access and an API key (app → Account → API Access, keys look like sk-cs-...). The server is an npm package; every client below runs it with npx.

# Claude Code claude mcp add --scope user craftstory -e CRAFTSTORY_API_KEY=sk-cs-... -- npx -y @craftstory/mcp
# Claude Desktop — Settings → Developer → Edit Config (claude_desktop_config.json), then restart { "mcpServers": { "craftstory": { "command": "npx", "args": ["-y", "@craftstory/mcp"], "env": { "CRAFTSTORY_API_KEY": "sk-cs-..." } } } }
# Cursor — ~/.cursor/mcp.json (user level, so the key never lands in a repository) { "mcpServers": { "craftstory": { "command": "npx", "args": ["-y", "@craftstory/mcp"], "env": { "CRAFTSTORY_API_KEY": "sk-cs-..." } } } }

Windsurf, VS Code, Zed, Goose and other MCP clients take the same command/args/env triple. Full README with troubleshooting on GitHub.

Tools

Eleven tools, each a thin wrapper over one documented endpoint of the CraftStory API, plus a talking_video_from_photo prompt that walks the assistant through the whole flow.

ToolWhat it does
list_modelsVideo models with status, limits and credit prices
list_voicesLibrary voices, plus your cloned voices
list_avatarsCustom avatars trained in the app, and their scenes
create_audio_clipSpeech from text in a chosen voice, or upload a recording
preview_costCredit estimate for a CraftStory 2.0 video before creating it
create_craftstory2_videoStart a CraftStory 2.0 talking video: photo (or avatar scene) + audio clips, portrait or landscape
create_minimax_h3_videoStart a MiniMax H3 clip: description-driven with generated sound, or audio-driven with lip-sync
get_job_statusStatus, percentage, failure reason and refund flag of a job
get_job_resultFinished job with the signed video URL and the parameters used
wait_for_jobBounded polling (up to 55 s per call) so the assistant can wait without hanging
upscale_videoNew job with the upscaled result: CraftStory 2.0 720p → 1080p, MiniMax H3 2×

Example: from a photo to a talking video

Ask Claude:

You Make a portrait video of the person in /Users/me/photos/portrait.jpg saying "Welcome to our spring collection", calm gestures.

What the assistant does with the tools, step by step:

How it works, what it costs

Frequently asked questions

What is the CraftStory MCP server?
An open-source Model Context Protocol server (npm package @craftstory/mcp) that exposes the CraftStory video API as tools. Any MCP client — Claude Desktop, Claude Code, Cursor, Windsurf, custom agents — can list voices, create audio clips and generate talking-avatar videos by calling those tools.
What do I need to use it?
Node.js 20 or newer, a CraftStory account on a plan with API access, and an API key from the app (Account → API Access, keys look like sk-cs-...). Videos use the same credits as in the app; failed jobs are refunded.
How long does a video take through MCP?
The same as in the app: a CraftStory 2.0 talking video takes 8–15 minutes, a MiniMax H3 clip 1–3 minutes. The server's wait_for_job tool polls in short slices so the assistant keeps control and can report progress instead of hanging on one call.
Does it cost extra?
No. The MCP server is free and open source (MIT). Generations are billed in CraftStory credits exactly like in the web app.
Can I use my own photo and voice?
Yes. Pass a local photo path or a public image URL; create speech from text in any library voice, use a voice cloned in the app, or upload your own recording. Custom avatars trained in the app are available through list_avatars.
Is my data sent anywhere else?
The server runs on your machine and talks only to the CraftStory API over HTTPS. It keeps nothing locally and calls no third-party services. See the privacy policy and the SECURITY notes in the repository.