<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Veevid Team</title>
    <description>The latest articles on DEV Community by Veevid Team (@veevid).</description>
    <link>https://dev.to/veevid</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4186372%2F1bea9ca4-2b42-4fdb-87e8-03a5c118b9de.png</url>
      <title>DEV Community: Veevid Team</title>
      <link>https://dev.to/veevid</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/veevid"/>
    <language>en</language>
    <item>
      <title>Generate AI Videos From Claude Code With a Remote MCP Server</title>
      <dc:creator>Veevid Team</dc:creator>
      <pubDate>Thu, 15 Oct 2026 09:12:06 +0000</pubDate>
      <link>https://dev.to/veevid/generate-ai-videos-from-claude-code-with-a-remote-mcp-server-24e2</link>
      <guid>https://dev.to/veevid/generate-ai-videos-from-claude-code-with-a-remote-mcp-server-24e2</guid>
      <description>&lt;p&gt;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 &lt;code&gt;generate&lt;/code&gt; 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.&lt;/p&gt;

&lt;p&gt;We build &lt;a href="https://veevid.ai" rel="noopener noreferrer"&gt;Veevid&lt;/a&gt;, 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;You need an API key from your account settings (keys start with &lt;code&gt;vv_sk_&lt;/code&gt;). Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http veevid https://veevid.ai/api/mcp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer vv_sk_your_key_here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That adds it to the current project. Add &lt;code&gt;--scope user&lt;/code&gt; if you want it everywhere.&lt;/p&gt;

&lt;p&gt;Cursor works too. Put this in &lt;code&gt;.cursor/mcp.json&lt;/code&gt; and keep the key in an env var instead of the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"veevid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://veevid.ai/api/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"Authorization"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Bearer ${env:VEEVID_API_KEY}"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The tools you get
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;list_models&lt;/code&gt;: what's available (video, image, audio, video tools), and for any one model, its parameters and an example request&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_credits&lt;/code&gt;: your balance&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_quote&lt;/code&gt;: the exact cost of a request, without running it. Free.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;generate&lt;/code&gt;: starts the job and returns a &lt;code&gt;generation_id&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_generation&lt;/code&gt;: status and result; it can wait up to 40 seconds per call&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;upload_file&lt;/code&gt;: uploads the reference images, videos or audio a generation needs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;list_creations&lt;/code&gt;: your past generations&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quote first, then generate
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;get_quote&lt;/code&gt; takes exactly the same arguments as &lt;code&gt;generate&lt;/code&gt;. That's the whole trick: the assistant builds the request once, asks for the price, shows you the number, and only calls &lt;code&gt;generate&lt;/code&gt; 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.&lt;/p&gt;

&lt;p&gt;A typical exchange looks like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Make an 8-second 16:9 clip of a golden retriever running through sunflowers, Veo 3.1, 720p.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; &lt;em&gt;(calls &lt;code&gt;get_quote&lt;/code&gt;)&lt;/em&gt; That's N credits, you have M. Go ahead?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; Yes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; &lt;em&gt;(calls &lt;code&gt;generate&lt;/code&gt;, then &lt;code&gt;get_generation&lt;/code&gt; until it's done)&lt;/em&gt; Here's the video: &lt;a href="https://cdn.veevid.ai/" rel="noopener noreferrer"&gt;https://cdn.veevid.ai/&lt;/a&gt;...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Videos usually take one to five minutes, so the assistant just keeps polling &lt;code&gt;get_generation&lt;/code&gt;. If a job fails, the credits are refunded automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Be specific about duration, resolution and aspect ratio.&lt;/strong&gt; "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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask for the cheapest option when testing prompts.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Don't retry blindly after a timeout.&lt;/strong&gt; If &lt;code&gt;generate&lt;/code&gt; times out on the client side, the job may already be running. Have the assistant check &lt;code&gt;list_creations&lt;/code&gt; first, or you'll pay twice.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap up
&lt;/h2&gt;

&lt;p&gt;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 &lt;a href="https://veevid.ai/developers" rel="noopener noreferrer"&gt;developer docs&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>claudecode</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
