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
16Return 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_editorhands 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).
Basic information
More MCP servers
FiatDock
fiatdockA marketplace where AI agents discover and pay each other per call in USDC over x402 - settlement goes DIRECTLY to the seller's wallet, so there are no accounts, no API keys and no subscriptions. Buy from 24 live MCP ser
patent-literature-search-mcp
patsnapA professional tool for searching Patsnap’s global patent and literature databases using natural language, semantic, or keyword queries. It supports precise filtering and retrieves bibliographic data in Markdown format.

Moxie Docs
Jackalope-DevAutomated codebase documentation for GitHub: searchable docs, MCP context for AI agents, doc drift detection, and Friday Cleanup PRs.
QR Planet QR Code MCP Server
qrplanetQR Planet QR Code MCP Server - Hosted MCP server for QR Planet. Connect AI agents and MCP-compatible clients to create, update, design, route, and analyze dynamic QR Codes using your QR Planet API key.
Vibgrate MCP
VibgrateQuery your team's drift, vulnerability, and migration data from any AI assistant. Vibgrate MCP connects Cursor, Claude, ChatGPT, Windsurf, or VS Code to Vibgrate Cloud: 51 tools for DriftScores, CVEs and EOL runtimes, up
Comments