Most MCP servers you plug into Claude Code are free to call: read a file, query a database, search docs. A video generation server is different. Every generate call spends real credits, and a 4K clip costs a lot more than a 480p test. So the interesting part of wiring one up is not the setup (that's one command), it's making sure your assistant never spends money you didn't agree to.
We build Veevid, an AI video and image platform with a remote MCP server. Here's how to connect it to Claude Code or Cursor, and the pattern we use to keep costs predictable.
Setup
You need an API key from your account settings (keys start with vv_sk_). Then:
claude mcp add --transport http veevid https://veevid.ai/api/mcp \
--header "Authorization: Bearer vv_sk_your_key_here"
That adds it to the current project. Add --scope user if you want it everywhere.
Cursor works too. Put this in .cursor/mcp.json and keep the key in an env var instead of the file:
{
"mcpServers": {
"veevid": {
"url": "https://veevid.ai/api/mcp",
"headers": { "Authorization": "Bearer ${env:VEEVID_API_KEY}" }
}
}
}
The tools you get
-
list_models: what's available (video, image, audio, video tools), and for any one model, its parameters and an example request -
get_credits: your balance -
get_quote: the exact cost of a request, without running it. Free. -
generate: starts the job and returns ageneration_id -
get_generation: status and result; it can wait up to 40 seconds per call -
upload_file: uploads the reference images, videos or audio a generation needs -
list_creations: your past generations
Quote first, then generate
get_quote takes exactly the same arguments as generate. That's the whole trick: the assistant builds the request once, asks for the price, shows you the number, and only calls generate after you say yes. The server also tells the assistant to confirm the cost with you, so you don't have to remember to ask.
A typical exchange looks like this:
Me: Make an 8-second 16:9 clip of a golden retriever running through sunflowers, Veo 3.1, 720p.
Claude: (calls
get_quote) That's N credits, you have M. Go ahead?Me: Yes.
Claude: (calls
generate, thenget_generationuntil it's done) Here's the video: https://cdn.veevid.ai/...
Videos usually take one to five minutes, so the assistant just keeps polling get_generation. If a job fails, the credits are refunded automatically.
Tips
Be specific about duration, resolution and aspect ratio. "Make a video" leaves the assistant to guess, and the guess decides the price. Say "6 seconds, 480p, vertical" for a draft and only go up once you like the result.
Ask for the cheapest option when testing prompts. Quotes are free, so the assistant can price a few models or settings and compare. Iterate on the prompt cheaply, then render the final at higher quality.
Don't retry blindly after a timeout. If generate times out on the client side, the job may already be running. Have the assistant check list_creations first, or you'll pay twice.
Wrap up
The setup takes a minute. What makes it actually usable day to day is the quote step: your assistant can pick models and write prompts on its own, but it shows you the number before it spends anything. The full parameter list for each model is in the developer docs.
Top comments (0)