MCP.so
Sign In

ClipkitVerifiedFeatured

@clipkit-video

About Clipkit

The video infra for AI agents: compose motion-graphics video from one JSON document (open Clipkit Protocol), validate before it costs anything, preview stills in-chat, and render deterministic MP4s on a GPU runtime.

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "clipkit": {
      "command": "npx",
      "args": [
        "-y",
        "@clipkit/cli",
        "mcp",
        "#",
        "stdio",
        "MCP",
        "server"
      ]
    }
  }
}

Tools

16

Return a canonical Clipkit doc as text. topic "card" = the ~8KB compact authoring card — the recommended context for authoring; "pattern-data-viz" / "pattern-cinematic-ui" / "pattern-ui-screencast" = ~4-5KB archetype pattern cards (proven idioms: count-ups and bar rows; product hero shots with camera rigs; faked app UI with typing/cursor/clicks) — load ONE alongside the card when the brief matches its archetype; "agents" = the full authoring guide (fetch only when the card doesn't cover a need); "protocol" = the formal field spec; "brand" = brand reference. (Same docs offered as MCP resources, exposed as a tool so you can read them directly — resources are not always model-readable.)

Return the authoritative JSON Schema for a Clipkit Source — exact field names, types, and enums, generated from the protocol. Call with no argument for the full Source schema, or with element_type (e.g. "text", "shape", "particles") for just that element's fields (much smaller). Use this when authoring with set_project / add_element so you never guess a field.

Create a new, blank Clipkit project with the given dimensions and duration, and return its project_id. Defaults: 1920×1080, 10 seconds, 30 fps, output_format "mp4". Call this first when starting a new video. Pass an existing project_id to reset that project to blank; omit it to start a fresh project (note the returned id for subsequent tools).

Return the full current Clipkit source as JSON. Use this to inspect the project, pass it to a render pipeline, or compose follow-up edits.

Return a compact, human-readable summary of the current project — dimensions, fps, duration, an element breakdown by type, a per-track timeline (paint order low→high), and render-time warnings. Much cheaper to read than get_project's full JSON; use it to orient yourself or sanity-check structure without dumping the whole source.

Replace the entire project with the given source JSON, returning its project_id. This is the PRIMARY way to build: use it to create a composition or to add/change many elements at once. (To tweak a single element in an existing project, use edit_element / add_element / delete_element instead.) Pass an existing project_id to replace that project; omit it to create a new one (note the returned id). The input is validated against the @clipkit/protocol before being accepted; invalid inputs return an error. Shape: { width, height, duration, frame_rate, output_format, background_color?, fonts?, camera?, lights?, elements:[…] }; every element has a `type` plus base fields (id, x, y, width, height, time, duration, track, opacity, rotation, animations, keyframe_animations) and type-specific fields. For exact field names + types call get_schema (optionally with an element_type) — the runtime ignores unrecognized keys, and this tool flags any it does not recognize.

Append a single element to an existing project — a TWEAK, e.g. dropping in one more caption or shape. By default it is added at the top level; pass parent_id to add it INTO a group (nested). The element is any valid schema element: video, image, text, shape, audio, group, caption, or particles. To create a composition or add several elements at once, build the JSON and use set_project instead. The new element is validated as part of the project as a whole before being added. Call get_schema(element_type) for the exact per-type fields; unrecognized keys are flagged.

Change fields on the element with the given id by merging in a partial element — only the keys you include change. The id may be any element ANYWHERE in the tree, including one nested inside a group (or its mask). Pass a whole nested value (e.g. a new `keyframe_animations` array) to replace that key; set a key to null to remove it. This is for TWEAKING an existing composition. To create a composition or change many elements at once, edit the JSON and call set_project instead. The result is re-validated before being accepted.

Delete the element with the given id, anywhere in the tree (including one nested inside a group or its mask) — a tweak to an existing composition. (The project must keep at least one top-level element.)

Run the @clipkit/protocol validator against the current project AND surface render-time warnings even when the JSON is valid — things that pass the schema but the runtime will silently drop or clip: emoji / non-ASCII text (the runtime font atlas is ASCII-only), elements that run past the composition end, a missing top-level duration. Run it before you share or render the project. For a fuller timeline read-back, use describe_project.

Render a single frame of the current project to a PNG and return it as an image you can look at. This is how you check your work — in chat there is no other way to see what a composition actually looks like. Use it liberally: after composing, after edits, and at different times to inspect motion. Stills are FREE (credits are only spent by render_video). Pass `time` (seconds) to choose the frame; defaults to 0.

Transcribe an audio or video file into a word-timestamped `caption` element (the protocol renders these). Captions need real per-word timings, which can only come from actual speech-to-text — this runs Whisper in the server process (no API key, no third-party upload). Provide a `url` (fetched server-side — use this in chat-mode, where there is no local file) OR a local `path`. Requires ffmpeg on the host. By default the caption is added to the current project; set add:false to only return it.

Assemble a designed-looking promo/intro/product/data video from the Clipkit pattern library: give an ordered list of SCENES and the words, and it bakes in the camera, glass, lighting, motion blur, timing, and layout, then returns an editor link. This is a FAST option when a conventional promo structure fits — it is NOT the only way to make a video and NOT a default; for anything specific or original, author the JSON yourself and call set_project (the full creative range). When you do use this, MIX scene types to fit the brief and vary the structure — a video can be a single kinetic headline, three title cards, a showcase montage, or a data explainer; you do NOT need a hero or a cta. Scene types: hero (glass-orb logo reveal: wordmark, tagline?), kinetic (letter-fly headline: text, subtitle?), showcase (a screenshot tilted in 3D: screenshot URL), title (full-frame title card: headline, kicker?, subtitle?), cta (closing card with a glass button: wordmark, tagline?, cta), stats (hero numbers: stats[{label,current,previous?}], title?), bars (bar chart: bars[{label,value,previous?}], title?), ranking (top-N list: items[{label,value}], title?), pie (pie cards: cards[{label,value,total,previous?}], title?). The data scenes (stats/bars/ranking/pie) look best with theme "mux".

Validate the current project and create a link that opens it in the Clipkit web editor, where the user can preview and refine it. This shares the PROJECT (nothing is rendered — that's render_video). Use after composing or editing. Returns a URL.

Import a previously shared project as the current project, by its share id or its editor URL (e.g. https://clipkit.dev/editor?id=…), returning its project_id. Use this to continue working on a project the user opened in the editor or shared earlier — the round-trip for open_in_editor. Pass an existing project_id to load into that project; omit it to load into a new one.

Validate the current Clipkit project and render it to a finished MP4 on Clipkit's servers, returning a downloadable URL. This is the paid path — it consumes render credits and requires CLIPKIT_API_KEY to be configured. Use open_in_editor instead to just open the project in the editor for free. Rendering is synchronous and may take a while for long or high-resolution videos.

Overview

What is Clipkit?

The video infra for AI agents. Clipkit turns a JSON timeline (the open Clipkit Protocol) into rendered video on the GPU. Describe a video as structured data; get an MP4.

How to use Clipkit

Hosted, no auth: add https://www.clipkit.dev/mcp as a Streamable HTTP server in any MCP client.

Local stdio: npx -y @clipkit/mcp-server

Per-client walkthroughs (Claude, Claude Code, Cursor, Cline, and 9 more): https://www.clipkit.dev/docs/mcp

Key features of Clipkit

  • 16 tools: author full compositions, validate against the schema, edit per element, preview PNG stills in-chat, caption media, assemble templated promos
  • Validation catches mistakes before they cost a render, so agents converge on valid videos fast
  • open_in_editor hands the human a free browser editor link to watch, tweak on a timeline, and export
  • Deterministic GPU runtime: same JSON in, same MP4 out; cloud rendering for 4K/ProRes/AV1 via API key

Use cases of Clipkit

  • Ask Claude for a launch video, explainer, or data story and get a real rendered result
  • Give coding agents (Cursor, Cline, Claude Code) a video tool for product demos and promos
  • Render MP4s from JSON in pipelines over the REST API

FAQ from Clipkit

Does the hosted server need an API key?

No. Compose, validate, preview, and share are open. A CLIPKIT_API_KEY only gates the paid cloud-render path.

Where is the source code?

https://github.com/clipkit-video/clipkit (protocol and tooling Apache-2.0; runtime BSL with a free production tier).

Frequently asked questions

Does the hosted server need an API key?

No. Compose, validate, preview, and share are open. A `CLIPKIT_API_KEY` only gates the paid cloud-render path.

Where is the source code?

https://github.com/clipkit-video/clipkit (protocol and tooling Apache-2.0; runtime BSL with a free production tier).

Comments

More MCP servers