DEV Community

Cover image for I Gave Claude a Full AI Video Studio Over MCP — Video, Images, Characters and Swaps From One Chat
Kyle White
Kyle White

Posted on

I Gave Claude a Full AI Video Studio Over MCP — Video, Images, Characters and Swaps From One Chat

Most "AI video" workflows I've seen look like this: write a prompt in one tab, paste it into a generator in another, wait, download, upload to an editor in a third. I wanted to do the whole thing from inside a chat with Claude — so I built an MCP server for my product, ClipSpeed, and gave it every creation tool we have.

This post walks through what that looks like in practice: connecting it, the tool calls Claude actually makes, what each one costs, and the guardrails I had to add so an AI can't spend your money without asking.

The one-URL setup

The hosted server lives at:

https://api.clipspeed.ai/mcp
Enter fullscreen mode Exit fullscreen mode

In Claude: Settings → Connectors → Add custom connector, paste that URL, connect, sign in to ClipSpeed in the window that opens and approve. That's it — no API key gets copied anywhere. Claude ends up holding a scoped OAuth grant, not a password or a long-lived secret.

The same URL connects in ChatGPT, Cursor and Claude Code. If you prefer a local stdio server, there's an open-source npm package too — but the hosted server is the one with the AI creation tools.

What Claude gets

Once connected, Claude sees tools in four groups:

Group Tools
AI video generate_video — Seedance 2.5, Seedance 1 Pro Fast, Kling 3.0, MiniMax H3, Veo 3.1
AI images generate_image — Nano Banana Pro, GPT Image 2
Characters & swaps create_influencer (a consistent AI character) and morphaze_swap (put that character into a real clip)
Clipping turn a YouTube video, upload or live stream into scored, captioned 9:16 clips

Plus the plumbing that makes it safe to use: list_models, estimate_cost, wait_for_generation, and two prompt helpers (assist_prompt, review_prompt).

A real session, step by step

Here's the flow when I ask Claude for a vertical clip of "a neon night market in the rain."

1. It checks the price first. Every creation tool is paired with estimate_cost, which returns the credit price and charges nothing:

{
  "tool": "generate_video",
  "arguments": {
    "model": "seedance-2.5",
    "prompt": "a woman in a yellow raincoat walks down a neon alley in the rain",
    "duration_seconds": 5,
    "aspect_ratio": "9:16"
  }
}
Enter fullscreen mode Exit fullscreen mode

→ Seedance 2.5 video: 42 credits. Nothing was charged.

Claude shows me that number and asks before going further.

2. It generates — with a ceiling I approved. The creation call carries max_credits set to the price I agreed to. If the live price is higher by the time the call lands, nothing runs:

{
  "model": "seedance-2.5",
  "prompt": "…",
  "duration_seconds": 5,
  "aspect_ratio": "9:16",
  "max_credits": 42,
  "request_key": "night-market-take-01"
}
Enter fullscreen mode Exit fullscreen mode

request_key makes retries idempotent: if the network drops and Claude retries with the same key, you're never charged twice.

3. It waits and hands back the result. wait_for_generation polls for up to 15 seconds per call, so Claude loops until the video is ready and returns a link.

A Seedance 2.5 night market in the rain, made in ClipSpeed

A Seedance 2.5 result — the full prompt and video are here.

Images work the same way and are cheap enough to iterate on: a Nano Banana Pro image came back at 6 credits in the same estimate check.

Characters that stay the same across videos

The hardest part of AI content is consistency: the same face in every post. create_influencer builds an original character sheet (one image) from a preset or your own settings. Once saved, Claude can pass that character as a reference image into image and video generations — so the character in Monday's post is the character in Friday's.

Swapping a character into a real clip

morphaze_swap is the one people ask about most. It takes a short real video and a character, and replaces the person in the clip with your character — keeping the original motion, the background, the camera cuts and the sound. There are examples and templates here, and I'm writing up how the swap pipeline works in a follow-up post.

The guardrails (the part I'd copy if you're building an MCP server)

Giving an AI agent a tool that spends money is a design problem, not just an API problem. What I ended up with:

  • Price before spend, always. Every paid tool's description tells the model to call estimate_cost, show the price and wait for a yes. The paid call requires max_credits.
  • A fresh price check at execution. max_credits is a ceiling, not a suggestion — if the current price is higher, the job doesn't run.
  • Idempotency keys. A retried request with the same request_key is never charged twice.
  • Account-level limits. Per-generation maximums and a daily credit cap for MCP use, visible through get_account, and you can switch MCP spending off entirely.
  • Prompt help is free. assist_prompt and review_prompt cost nothing, so the model can fix a weak prompt before anything is spent.

What it costs

Everything runs on one monthly credit wallet shared with clipping: Starter $19 (300 credits), Pro $39 (600), Ultra $99 (1,500), annual billing 25% off. There's no free plan. New accounts can start with a $1, 3-day trial that covers clipping and your own AI Influencer; AI video, images and Morphaze unlock when the plan starts (or you can skip the trial and unlock them right away).

Try it

If you're building an MCP server that spends money on a user's behalf, I'd love to compare notes on guardrails in the comments.


I drafted this post with help from Claude; the facts, numbers and examples come from ClipSpeed itself.

Top comments (0)