Shotstack MCP Server
The Shotstack MCP server is currently in beta. Tools and behaviour may change without notice.
A Model Context Protocol server that lets any MCP-aware AI client compose and render Shotstack videos from natural language.
Endpoint: https://mcp.shotstack.io/ (HTTP/streamable, OAuth)
Local: npx -y @shotstack/shotstack-mcp-server (stdio, SHOTSTACK_API_KEY env)
Get an API key at app.shotstack.io.
Add it to your client
Claude.ai · Claude Desktop
Settings → Connectors → Add custom connector → URL https://mcp.shotstack.io/ → complete OAuth.
Claude Code
claude mcp add --transport http shotstack https://mcp.shotstack.io
ChatGPT
Settings → Connectors → Advanced → enable Developer mode → Create → URL https://mcp.shotstack.io/. Developer mode requires Business, Enterprise, or Edu.
Cursor
~/.cursor/mcp.json:
{ "mcpServers": { "shotstack": { "url": "https://mcp.shotstack.io/" } } }
VS Code (GitHub Copilot)
.vscode/mcp.json (VS Code 1.101+):
{ "servers": { "shotstack": { "type": "http", "url": "https://mcp.shotstack.io/" } } }
Codex CLI
codex mcp add shotstack --url https://mcp.shotstack.io
Gemini CLI
gemini mcp add -s user --transport http shotstack https://mcp.shotstack.io/
Windsurf
~/.codeium/windsurf/mcp_config.json:
{ "mcpServers": { "shotstack": { "serverUrl": "https://mcp.shotstack.io/" } } }
Zed
settings.json:
{ "context_servers": { "shotstack": { "url": "https://mcp.shotstack.io/" } } }
JetBrains IDEs
Settings → Tools → MCP → Add → URL https://mcp.shotstack.io/.
Goose
goose configure → Add extension → Remote Extension (Streaming HTTP) → URL https://mcp.shotstack.io/.
Raycast
Extensions → MCP → Add server → URL https://mcp.shotstack.io/.
Local stdio (fallback)
For offline use or if your client doesn't support HTTP transport, run the server locally:
{
"mcpServers": {
"shotstack": {
"command": "npx",
"args": ["-y", "@shotstack/shotstack-mcp-server"],
"env": { "SHOTSTACK_API_KEY": "your_api_key" }
}
}
}
What it does
| Tool | Purpose |
|---|---|
studio | Mounts the inline Studio canvas in the chat. Default for chat clients — user clicks Render in the iframe. |
render_video | Submits an Edit JSON to the render API directly. Use for automation or when the user says "just render it". |
get_render_status | Polls a render. Returns queued/fetching/rendering/saving/done/failed and the output URL. |
create_studio_link | Generates a https://shotstack.studio/s/{slug} short link for sharing. |
get_shotstack_guide | Returns the Edit JSON authoring conventions. |
create_template, list_templates, get_template, render_template, delete_template | Manage reusable templates with {{PLACEHOLDER}} merge fields. |
How agents should use it
- Call
get_shotstack_guidebefore composing Edit JSON. Track ordering, asset types, fonts, and the top-5 mistakes are non-negotiable. The full ruleset is at/agents/conventions. - Default to
studio, notrender_video. Mount the edit inline so the user can preview and click Render. Only callrender_videodirectly when explicitly asked or when there's no human in the loop. - Use public HTTPS URLs for assets. Never hallucinate URLs; ask the user when unsure.