README.md
July 26, 2026 · View on GitHub
@rendobar/mcp
Serverless media processing for AI agents.
The official Model Context Protocol server for Rendobar.
@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) | |
|---|---|---|
| Transport | stdio, spawned by your client | Streamable HTTP |
| Reads local files | Yes. That is the reason it exists | No. The server has no disk |
| Auth | API key | OAuth in the browser, or a Bearer key |
| Best for | Claude Desktop, Cursor, Cline, Zed | claude.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
| Tool | Purpose |
|---|---|
upload_file | Upload a local file. Returns a URL to use in submit_job. |
list_job_types | Every active job type, read live. Call this first. |
submit_job | Submit a job of any type. |
get_job | Status and result. Pass wait: true to long-poll for ~50s. |
list_jobs | Recent jobs. |
cancel_job | Cancel a waiting or dispatched job. |
get_account | Balance, 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:
--api-key=<key>flagRENDOBAR_API_KEYenvironment variable~/.config/rendobar/credentials.jsonon Unix,%APPDATA%\rendobar\credentials.jsonon Windows, written byrb 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