mcp-shotstack

Create and render videos with Shotstack directly from your MCP client.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Render Video: Use when the user explicitly asks to render a video, image, or audio file to a downloadable URL. Prefer the `studio` tool first for a previewable, user-editable canvas; only call render_
  • Get Render Status: Use when checking a render after `render_video` or `render_template` to get the output URL. Statuses: queued, fetching, rendering, saving, done, failed. Common mistake: polling too
  • Create Template: Use when the user wants to save an Edit JSON as a reusable template with placeholder fields. Use `{{PLACEHOLDER}}` syntax in the template body for values that will be filled at render

What data it sees

Do you need an account

No: the server works without sign-in

Create and render videos with Shotstack directly from your MCP client. Compose Edit JSON timelines, preview and tweak in an inline Studio editor, render to a downloadable URL, and save reusable templates with placeholders for repeatable video automation.

How to connect

How to connect mcp-shotstack to Claude

The server address to paste into Claude settings:

https://mcp-shotstack--shotstack.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect mcp-shotstack to ChatGPT

The server address to paste into ChatGPT settings:

https://mcp-shotstack--shotstack.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect mcp-shotstack to Cursor

The server address to paste into Cursor settings:

https://mcp-shotstack--shotstack.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (10)

Raw names from tools/list. Only developers need these.

render_videoUse when the user explicitly asks to render a video, image, or audio file to a downloadable URL. Prefer the `studio` tool first for a previewable, user-editable canvas; only call render_video when the user has confirmed the output. REQUIRED: call `get_shotstack_guide` first if you have not already done so this conversation — it returns the conventions you need to compose Edit JSON correctly. Skipping this leads to renders that fail or layer tracks incorrectly. When the user does not provide URLs, pick a fitting asset from these: Videos: - https://shotstack-assets.s3.amazonaws.com/footage/beach.mp4 - https://shotstack-assets.s3.amazonaws.com/footage/sunset.mp4 - https://shotstack-assets.s3.amazonaws.com/footage/mountains.mp4 - https://shotstack-assets.s3.amazonaws.com/footage/skateboarder.mp4 - https://shotstack-assets.s3.amazonaws.com/footage/city-timelapse.mp4 - https://shotstack-assets.s3.amazonaws.com/footage/drone.mp4 - https://shotstack-assets.s3.amazonaws.com/footage/trees.mp4 Images: - https://shotstack-assets.s3.amazonaws.com/images/wave-barrel.jpg - https://shotstack-assets.s3.amazonaws.com/images/earth.jpg - https://shotstack-assets.s3.amazonaws.com/images/business-man.jpg - https://shotstack-assets.s3.amazonaws.com/images/financial-background.jpg - https://shotstack-assets.s3.amazonaws.com/images/happy1.jpg - https://shotstack-assets.s3.amazonaws.com/images/dog1.jpg - https://shotstack-assets.s3.amazonaws.com/images/waterfall.jpeg
get_render_statusUse when checking a render after `render_video` or `render_template` to get the output URL. Statuses: queued, fetching, rendering, saving, done, failed. Common mistake: polling too aggressively — wait at least 3 seconds between calls.
create_templateUse when the user wants to save an Edit JSON as a reusable template with placeholder fields. Use `{{PLACEHOLDER}}` syntax in the template body for values that will be filled at render time. Common mistake: forgetting to include placeholders — use `render_video` directly for one-off renders.
list_templatesUse when the user asks what templates exist or wants to choose one to render. Returns template IDs and names; combine with `get_template` to inspect structure.
get_templateUse when you need to inspect a template before rendering it — shows the Edit JSON shape and all `{{PLACEHOLDER}}` fields. Pair with `render_template` to fill them.
render_templateUse when rendering a saved template with concrete values for its placeholders. Each merge entry: `find` is the placeholder text (e.g. `{{TITLE}}`), `replace` is the value. Common mistake: forgetting to include all placeholders — leftover `{{...}}` will render literally.
delete_templateUse when the user explicitly asks to remove a saved template. Irreversible — confirm with the user before calling.
studioUse when handing off to the human — opens the interactive Shotstack Studio editor inline in the chat. The user can play, scrub, edit, and click Render directly from the iframe. Prefer this over `render_video` for any flow where the user might want to review or tweak before rendering. REQUIRED: call `get_shotstack_guide` first if you have not already done so this conversation — it returns the conventions for composing Edit JSON correctly. Without it, you will frequently layer tracks wrong (tracks[0] is TOP), use deprecated asset types, or reference uninstalled fonts. The iframe pushes context updates back to you when the user edits or submits a render — watch for `source: shotstack-mcp-app` markers and trust them over your prior assumptions about the edit. The iframe is NOT read-only.
get_shotstack_guideREQUIRED before composing any Edit JSON for the first time in a conversation. Returns the Shotstack agent guide — Edit JSON authoring conventions (track order, asset types, fonts, smart strings), per-topic references (timeline, rich-caption, svg, fonts, asset library, troubleshooting), and the chat workflow. Without this, generated JSON will fail to render or layer tracks incorrectly. Call once per conversation and cache the result.
create_studio_linkUse when the user wants a shareable URL to the full standalone shotstack.studio web editor — for substantive editing outside chat, sharing with collaborators, or persistence beyond this conversation. Returns a URL with the Edit JSON pre-loaded via base64url hash. Different from the `studio` tool: this opens a full-screen editor in a new browser tab; `studio` mounts an iframe inline. Common mistake: do not call both for the same edit.