<?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: alamdar</title>
    <description>The latest articles on DEV Community by alamdar (@alamdar_525aa72b980d).</description>
    <link>https://dev.to/alamdar_525aa72b980d</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%2F4225034%2Fb830d31f-6283-4752-a47b-79841d461c2f.png</url>
      <title>DEV Community: alamdar</title>
      <link>https://dev.to/alamdar_525aa72b980d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alamdar_525aa72b980d"/>
    <language>en</language>
    <item>
      <title>Give your AI assistant a video studio over MCP (and the tool pattern that keeps it from burning your credits)</title>
      <dc:creator>alamdar</dc:creator>
      <pubDate>Tue, 03 Nov 2026 22:18:39 +0000</pubDate>
      <link>https://dev.to/alamdar_525aa72b980d/give-your-ai-assistant-a-video-studio-over-mcp-and-the-tool-pattern-that-keeps-it-from-burning-15b6</link>
      <guid>https://dev.to/alamdar_525aa72b980d/give-your-ai-assistant-a-video-studio-over-mcp-and-the-tool-pattern-that-keeps-it-from-burning-15b6</guid>
      <description>&lt;p&gt;Most MCP demos read files or query databases. Those tools are cheap and reversible. The interesting design problem starts when a tool &lt;strong&gt;spends money&lt;/strong&gt;: generating a video can cost real credits, and an assistant that calls it in a loop can empty a balance before you notice.&lt;/p&gt;

&lt;p&gt;This post does two things. First, a five-minute setup that gives Claude Code or Cursor video, image and voice generation over a remote MCP server. Second, the tool design that makes it safe to hand an assistant a paid tool. The pattern works for any MCP server that costs money to run, not just this one.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: the server in the examples is Vidofy's, which is our own product. The setup steps and the pattern are general.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Remote vs. local MCP servers
&lt;/h2&gt;

&lt;p&gt;A local MCP server is a process you install and run next to your client, usually with an API key in an environment variable. A &lt;strong&gt;remote&lt;/strong&gt; server is just a URL. You add the URL, your client opens a browser sign-in, you approve it, and the client holds the permission. There is nothing to install and no key to paste into a config file or leave in a chat log.&lt;/p&gt;

&lt;p&gt;That second part matters more than it sounds. A key in &lt;code&gt;mcp.json&lt;/code&gt; ends up in dotfiles repos and screenshots. A permission you approved in the browser can be revoked per client, and the other clients keep working.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup in Claude Code
&lt;/h2&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 vidofy https://vidofy.ai/mcp-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, inside Claude Code, run &lt;code&gt;/mcp&lt;/code&gt;, pick &lt;code&gt;vidofy&lt;/code&gt;, and approve the sign-in in the browser that opens. After that, ask for an image or a video in the same session.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup in Cursor
&lt;/h2&gt;

&lt;p&gt;Add this to &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt;, or &lt;code&gt;.cursor/mcp.json&lt;/code&gt; in your project:&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;"vidofy"&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://vidofy.ai/mcp-app"&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;p&gt;Enable it in Cursor's MCP settings and approve the sign-in. Claude.ai, Claude Desktop, ChatGPT, VS Code and Codex have the same flow with their own menus.&lt;/p&gt;

&lt;p&gt;Some clients cannot complete a browser sign-in because they expect to register themselves. For those, the same package runs locally against a personal token:&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;"vidofy"&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;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&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="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@vidofy/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;"env"&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;"VIDOFY_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vmt_..."&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;p&gt;You create that token once in your account settings. Same account, same balance.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern: estimate first, generate second
&lt;/h2&gt;

&lt;p&gt;Here is what an assistant sees when you ask for "a 9:16 clip of a cyclist riding through neon-lit rain, about 5 seconds, and tell me what it costs first":&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;list_models&lt;/code&gt;: looks for a model that does 9:16 at 5 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_model&lt;/code&gt;: reads that model's input contract (which fields exist, which are required, which durations are valid).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;estimate_cost&lt;/code&gt;: returns the credit cost &lt;strong&gt;before anything runs&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You approve, or ask for something cheaper.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;generate&lt;/code&gt;, then &lt;code&gt;get_status&lt;/code&gt;, then &lt;code&gt;get_result&lt;/code&gt;: run it, follow it while it renders, return the file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The important part is step 3. Generation is slow and costs money, so the server separates &lt;em&gt;deciding&lt;/em&gt; from &lt;em&gt;doing&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A separate read-only tool prices the job.&lt;/strong&gt; The assistant asks "what would this cost?" and gets a number. It is the same calculator the web studio uses, so there is no second price list to drift.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The input contract is a tool too.&lt;/strong&gt; &lt;code&gt;get_model&lt;/code&gt; returns what a model accepts, so the assistant reads the real fields and valid values instead of guessing parameter names.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Status is polled, not awaited.&lt;/strong&gt; Rendering takes a while. &lt;code&gt;get_status&lt;/code&gt; lets the assistant report progress instead of holding a request open until a timeout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The surface is small and closed.&lt;/strong&gt; The server exposes nine tools in total, and the assistant can do nothing outside them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are building an MCP server around anything metered (GPU time, API calls, SMS, renders), copy that split: one tool to look up what is possible, one to price a specific request, one to commit. You give up one round trip and get back a spending limit the user can see.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is good for in practice
&lt;/h2&gt;

&lt;p&gt;A few requests that work well in plain sentences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Restyle a product shot.&lt;/strong&gt; Point it at an image already in your account and ask for a cleaner background.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Turn a still into motion.&lt;/strong&gt; It looks for an image-to-video model that accepts your aspect ratio and duration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A voice-over.&lt;/strong&gt; Text in, speech out in the voice and language you name, then reuse it as the audio for a clip.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A set instead of one file.&lt;/strong&gt; The same idea in four aspect ratios, run together.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A revision without re-uploading.&lt;/strong&gt; A finished result can be the input to the next generation, because the file is already in your account.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On clients that support MCP Apps, such as Claude, the result arrives as a live card that updates while the clip renders. On a text-only client the same information comes back as text.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The connector page lists every client's exact steps, the model catalogue and the nine tools: &lt;a href="https://vidofy.ai/en/mcp" rel="noopener noreferrer"&gt;vidofy.ai/en/mcp&lt;/a&gt;. New accounts start with free credits, so you can run the flow above without paying anything first.&lt;/p&gt;

&lt;p&gt;If you build MCP servers yourself, I would like to hear how you handle paid tools. Do you price first like this, or cap spend some other way?&lt;/p&gt;

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