Back to MCP Servers

Rendobar Mcp

Submit media-processing jobs to the Rendobar API and upload local files in one tool call. Transcode, run raw FFmpeg, burn captions, and add watermarks over REST. Free tier.

multimedia-processapirest
By rendobar
1Updated 1 day agoTypeScriptMIT

Installation

npx -y mcp

Configuration

{
  "mcpServers": {
    "mcp": {
      "command": "npx",
      "args": ["-y", "mcp"]
    }
  }
}

How to use

  1. Run the installation command above (if needed)
  2. Open your Claude Code settings file (~/.claude/settings.json)
  3. Add the configuration to the mcpServers section
  4. Restart Claude Code to apply changes
<p align="center"> <a href="https://rendobar.com"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cdn.rendobar.com/assets/brand/logo-mark.svg"> <img alt="Rendobar" src="https://cdn.rendobar.com/assets/brand/logo-mark-black.svg" width="80"> </picture> </a> </p> <h1 align="center">@rendobar/mcp</h1> <p align="center"> <strong>Serverless media processing for AI agents.</strong><br> The official Model Context Protocol server for Rendobar. </p> <p align="center"> <a href="https://rendobar.com/docs/mcp-server">Docs</a> &nbsp;·&nbsp; <a href="https://www.npmjs.com/package/@rendobar/mcp">npm</a> &nbsp;·&nbsp; <a href="https://glama.ai/mcp/servers/kwdj3f0u3z">Glama</a> &nbsp;·&nbsp; <a href="https://discord.gg/kAGqjBzx8N">Discord</a> </p> <p align="center"> <a href="https://www.npmjs.com/package/@rendobar/mcp"><img src="https://img.shields.io/npm/v/@rendobar/mcp?style=flat-square&color=059669&label=npm" alt="npm version"></a> <a href="https://www.npmjs.com/package/@rendobar/mcp"><img src="https://img.shields.io/npm/dm/@rendobar/mcp?style=flat-square&color=059669" alt="npm downloads"></a> <img src="https://img.shields.io/npm/l/@rendobar/mcp?style=flat-square&color=059669" alt="MIT license"> <img src="https://img.shields.io/node/v/@rendobar/mcp?style=flat-square&color=059669" alt="Node version"> </p>

@rendobar/mcp is the official Model Context Protocol server for Rendobar, a serverless media processing API. The server runs locally over stdio and reads files straight from your disk, so an AI agent can take a file off your machine, process it on Rendobar's infrastructure, and hand back a hosted URL.

Rendobar covers both sides of media work.

Transform what you have. Run any FFmpeg command against video, audio or images the way you would write it locally. Inspect a file and get a normalized summary plus the full ffprobe report. Compose video from a declarative JSON timeline. Compress to a target size or quality, where the encoder searches candidate encodes and returns the smallest file that clears the bar. Burn in subtitles from SRT, VTT or ASS, or let it transcribe when none is given.

Generate what you do not. Create an image from a text prompt on hosted open-weight diffusion models. Edit up to four reference images from a written instruction, no masks and no coordinates. Upscale on a one-step diffusion restoration model that reconstructs detail rather than only sharpening. The same model-backed layer drives the transcription and keyword highlighting behind animated captions, so this is not an image-only capability.

The job list grows over time, so this README names families rather than types. list_job_types reads the current set live from the registry on every call.

Published to npm as @rendobar/mcp and to the official MCP Registry as com.rendobar/mcp.

Without it

You: Mute the first 3 seconds of intro.mp4.

The agent tells you to install FFmpeg. Then you go looking for how to gate a filter on a timestamp, land on volume=enable='lt(t,3)', and lose another few minutes to quote escaping in your shell. Nobody remembers that syntax, which is the problem.

With it

You: Mute the first 3 seconds of intro.mp4.

upload_file  { "path": "~/clips/intro.mp4" }
// → { "downloadUrl": "https://cdn.rendobar.com/u/abc123/intro.mp4", "sizeBytes": 4821004 }

submit_job   { "type": "ffmpeg",
               "inputs": { "intro.mp4": "https://cdn.rendobar.com/u/abc123/intro.mp4" },
               "params": { "command": "-i intro.mp4 -af \"volume=enable='lt(t,3)':volume=0\" -c:v copy out.mp4" } }
// → { "jobId": "job_9f2a", "status": "waiting" }

get_job      { "jobId": "job_9f2a", "wait": true }
// → complete · $0.01 · https://cdn.rendobar.com/o/job_9f2a/out.mp4

The agent writes the filter. Rendobar runs it. Nothing gets installed on your machine, and -c:v copy means the video stream is never re-encoded.

Two more things to ask for

Hit a size budget.

You: Get demo.mov under 25 MB so I can email it.

upload_file  { "path": "~/recordings/demo.mov" }
// → { "downloadUrl": "https://cdn.rendobar.com/u/7c1e/demo.mov", "sizeBytes": 251658240 }

submit_job   { "type": "compress.target",
               "inputs": { "source": "https://cdn.rendobar.com/u/7c1e/demo.mov" },
               "params": { "for": "web", "target": { "maxSize": "25MB" } } }
// → { "jobId": "job_4b8d", "status": "waiting" }

get_job      { "jobId": "job_4b8d", "wait": true }
// → complete · https://cdn.rendobar.com/o/job_4b8d/out.mp4 · 23.8 MB

You give it the ceiling, not a bitrate. The encoder searches candidate encodes and returns the smallest file that still clears the quality bar, so you are not guessing at CRF values to land under a mail server's limit.

Generate an image.

You: Make a 1920x1080 title card for a video about deep sea diving.

submit_job   { "type": "image.generate",
               "inputs": {},
               "params": { "model": "standard",
                           "prompt": "Title card for a deep sea diving documentary. Shafts of light through deep blue water, small diver silhouette, empty space across the upper third for a title.",
                           "width": 1920, "height": 1080 } }
// → { "jobId": "job_2fa7", "status": "waiting" }

get_job      { "jobId": "job_2fa7", "wait": true }
// → complete · https://cdn.rendobar.com/o/job_2fa7/out.png

inputs is empty because nothing is being transformed. Ask for a tier (economy, standard, premium) and the platform picks the model, or pin an exact model id to reach its own controls. Requested dimensions are snapped to what the chosen model can actually render.

The rest of the surface

Four more tools, and the prompts that reach them.

You: What can Rendobar actually do?

list_job_types {}
// → { "jobTypes": [ { "type": "compose", "tag": "Compose",
//                     "summary": "Render a video from a declarative JSON timeline",
//                     "acceptsMedia": ["video", "image", "audio"] }, ... ],
//     "guidance": "..." }

Read live from the job registry on every call, which is why nothing in this README enumerates job types. A new one appears here without a release.

You: How much credit is left?

get_account {}
// → { "balance": "$4.86", "balanceUsd": 4.86, "plan": "free", "isPro": false,
//     "limits": { "concurrentJobs": 1, "maxFileSize": "500 MB", "jobTimeoutMin": 60 } }

Worth a call before submitting something expensive.

You: What did I run this morning?

list_jobs { "status": "complete", "limit": 5 }
// → { "jobs": [ { "id": "job_9f2a", "type": "ffmpeg", "status": "complete",
//                 "createdAt": "2026-08-04T09:12:00Z", "cost": "$0.01",
//                 "output": { "url": "https://cdn.rendobar.com/o/job_9f2a/out.mp4" } } ] }

The compact row is enough to find a result you lost. Call get_job when you need the full output.

You: Stop that one, I picked the wrong file.

cancel_job { "jobId": "job_9f2a" }
// → { "id": "job_9f2a", "status": "cancelled" }

Works on waiting, dispatched and running jobs. A running job's upstream execution is stopped too, so you are not billed for work you cancelled.

Install

Rendobar has two MCP servers. Pick by whether the agent needs your filesystem.

@rendobar/mcp (this package)Hosted (api.rendobar.com/mcp)
Transportstdio, spawned by your clientStreamable HTTP
Reads local filesYes. That is the reason it existsNo. The server has no disk
AuthAPI keyOAuth in the browser, or a Bearer key
Best forClaude Desktop, Cursor, Cline, Zedclaude.ai, ChatGPT, hosted gateways

Hosted, no API key, one command:

claude mcp add --transport http rendobar https://api.rendobar.com/mcp

Local, for filesystem access. Get a key at app.rendobar.com → Settings → API Keys, then:

claude mcp add rendobar -s user --env RENDOBAR_API_KEY=rb_... -- npx -y @rendobar/mcp

Already ran rb login with the Rendobar CLI? Drop --env. The server finds the credentials file.

<details> <summary><strong>Claude Desktop, Cursor, Cline, Windsurf</strong></summary>

Same block for all four. Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). Cursor: ~/.cursor/mcp.json on every OS. Windsurf: ~/.codeium/windsurf/mcp_config.json on every OS. Cline: MCP panel → Configure.

On Linux, use Cursor, Windsurf, Cline, Zed, VS Code or Continue. Claude Desktop has no Linux build, so it is the one client on this list you cannot use there. The server itself runs fine on Linux.

{
  "mcpServers": {
    "rendobar": {
      "command": "npx",
      "args": ["-y", "@rendobar/mcp"],
      "env": { "RENDOBAR_API_KEY": "rb_..." }
    }
  }
}

Restart the client afterwards.

</details> <details> <summary><strong>Zed, VS Code, Continue</strong></summary>

Zed uses context_servers instead of mcpServers, in ~/.config/zed/settings.json:

{
  "context_servers": {
    "rendobar": {
      "source": "custom",
      "command": "npx",
      "args": ["-y", "@rendobar/mcp"],
      "env": { "RENDOBAR_API_KEY": "rb_..." }
    }
  }
}

VS Code 1.101+, in .vscode/mcp.json, prompts for the key instead of storing it:

{
  "servers": {
    "rendobar": {
      "command": "npx",
      "args": ["-y", "@rendobar/mcp"],
      "env": { "RENDOBAR_API_KEY": "${input:rendobarKey}" }
    }
  },
  "inputs": [{ "id": "rendobarKey", "type": "promptString", "password": true, "description": "Rendobar API Key" }]
}

Continue, in .continue/mcpServers/rendobar.yaml:

type: stdio
command: npx
args: ["-y", "@rendobar/mcp"]
env:
  RENDOBAR_API_KEY: rb_...
</details>

Runs on macOS, Linux and Windows. Every release is tested on all three in CI. There are no native dependencies, so architecture does not matter: x64 and arm64 both work. Needs Node 20.10 or later, and the server checks at startup and exits with a clear message on older versions.

Tools

ToolPurpose
upload_fileUpload a local file. Returns a URL to use in submit_job.
list_job_typesEvery active job type, read live. Call this first.
submit_jobSubmit a job of any type.
get_jobStatus and result. Pass wait: true to long-poll for ~50s.
list_jobsRecent jobs.
cancel_jobCancel a waiting, dispatched or running job.
get_accountBalance, plan limits, active job count.

Job types

ffmpeg is the one to reach for first. It takes a command the way you would write it locally, runs it on hosted infrastructure, and hands back a URL: transcode, trim, mux, filter, concat, whatever the flags allow. Pass params.compute as gpu to force NVENC encoding (Pro plan), or leave it on auto and Rendobar routes CUDA commands to a GPU and everything else to CPU.

Beyond that there are purpose-built types for timeline composition, compression to a size budget, subtitle burn-in, animated captions, media inspection, image generation, image editing, and image upscaling.

Full reference: rendobar.com/docs/jobs. Or call list_job_types, which reads the registry live and is always current. This README deliberately does not enumerate them, so it cannot go stale.

View source on GitHub