README.md

July 26, 2026 · View on GitHub

Rendobar

@rendobar/mcp

Serverless media processing for AI agents.
The official Model Context Protocol server for Rendobar.

Docs  ·  npm  ·  Glama  ·  Discord

npm version npm downloads MIT license Node version

@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 video off your machine, run an FFmpeg command against it on Rendobar's infrastructure, and hand back a hosted URL. Purpose-built job types cover timeline composition, compression to a size budget, subtitle burn-in, animated captions, and media inspection.

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.

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.

Claude Desktop, Cursor, Cline, Windsurf

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. Windsurf: ~/.codeium/windsurf/mcp_config.json. Cline: MCP panel → Configure.

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

Restart the client afterwards.

Zed, VS Code, Continue

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_...

Needs Node 20.10 or later. 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 or dispatched 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, and media inspection.

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.

Chaining

A submit_job input can point at a previous job's output, so a multi-step edit never round-trips through your disk. For ffmpeg inputs, pass { job: "job_..." }. For other types, read the output URL from get_job and pass that.

Authentication

Three sources, first match wins:

  1. --api-key=<key> flag
  2. RENDOBAR_API_KEY environment variable
  3. ~/.config/rendobar/credentials.json on Unix, %APPDATA%\rendobar\credentials.json on Windows, written by rb login (Rendobar CLI 1.1+)

The server starts without a key so clients and directories can list its tools, and it reads the job registry unauthenticated, so the type list is live rather than baked into the build. Calls that reach the API return a clear error until a key is set.

Telemetry

The server reports anonymous usage through PostHog's MCP Analytics SDK: tool name, success, duration, and the agent's stated intent.

It never sends your parameters or responses. File URLs, job configs, and outputs are stripped before anything leaves the process. Events carry no account identity and build no person profile. It is off in CI automatically.

DO_NOT_TRACK=1        # or RENDOBAR_TELEMETRY=0

Troubleshooting

Common problems

Cursor on macOS can't find npx. Launched from the Dock, Cursor gets the GUI PATH rather than your shell PATH. Use an absolute path: "command": "/Users/you/.nvm/versions/node/v20.x/bin/npx".

Windows can't find npx. Use "command": "npx.cmd" if your client doesn't resolve it.

Tools appear but calls fail with "No Rendobar API key configured". Expected with no key set. The server advertises tools so clients can list them, but calls need credentials. Set RENDOBAR_API_KEY, pass --api-key, or run rb login. Startup logs a no_api_key warning to stderr.

The server won't start. It writes JSON lines to stderr. Check your client's output panel for entries with level: "error".

Contributing

See CONTRIBUTING.md. For AI-assisted development, AGENTS.md and CLAUDE.md.

License

MIT