kymo
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kymoscan bounce.mp4 for cuts and show me a labelled contact sheet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
How it works
A still frame hides motion: you can't see the timing, spacing or easing between frames. kymo turns every source into a Timeline, frames and numeric tracks on one clock, and gives every frame one address. That address is the same in the image label, the JSON and the file name, so an agent can quote back exactly what it saw.
An agent follows four steps, and each step is one call:
1. The clip | 2. | 3. | 4. |
Then track measures it: the ball first touches the wall at 20f #20, and check can assert that, e.g. @impact1 within #18..#22. See the skill for the full loop.
Frame addresses
Write | Means |
| 8 seconds and 10 frames (canonical) |
| 2 minutes, 0 seconds and 24 frames |
| frame index 250 |
| a time, rounded to the nearest frame |
| the last frame |
| five frames after a marker |
| a range, every second frame |
| an address on a named source |
On variable-frame-rate footage and GIFs, seconds are real time and frames are decoded frames: 16s is the frame on screen at 16 s, -1f the last frame, and labels show each frame's own start time (16.04s #350), so a label never disagrees with t.
Related MCP server: sonny-eyes
Features
๐๏ธ Contact sheets sized for the model. Up to 12 labelled frames per image, sized to
high-res(โค2576 px, โค4784 visual tokens) orstandard(โค1568 px, โค1568 tokens), so cost is known before rendering. Frames are never upscaled, labels sit under the frame and are at least 28 px tall.๐ง Views that show motion between frames.
onionblends frames into one cell to show path and spacing,diffheatmaps what changed,followcrops a region over time,compareputs two sources side by side at the same moments (matched by time when their frame rates differ),plotcharts numeric tracks.๐ Numbers, not guesses.
trackfollows a box and returnsx,y,w,hper frame, then fits the easing (linear, CSS presets,cubic-bezier(...), or a spring with stiffness and damping). Synthetic sources return exact ground-truth tracks.โ๏ธ Finds what changes.
scanmeasures motion energy, finds hard cuts and fades, and spends its frame budget where things move. Cuts and peaks become markers you can address, like@cut1.๐ Lint rules and assertions.
checkfinds duplicated, dropped and black frames, flicker, things leaving the safe area, and curves that reverse. Assertions read like the question:kymo check clip1 --assert "box.x <= 600 at 1s" --assert "@impact1 within #18..#22"๐ค Agent-friendly contract. stdout carries only JSON:
open,probe,scan,track,recordandschemaprint one JSON value;frames,compareandcheckprint JSON Lines, one sheet or finding per line and then a summary line (kymo schema <command>describes both underlines). Errors go to stderr as{tag, message, hint}, with a hint that says how to fix them ("8s10" is not an address. Use 08s10f, #250, 8.33sโฆ). Exit codes: 0 done, 1 acheckthat did not pass (its result is still printed), 2 bad input, 3 source not found, 4 adapter unavailable, 5 timeout, 6 backend failure. Flags are only ever added, andkymo schemaprints every input and output JSON Schema.๐ผ๏ธ Images an API accepts. Every image stays under 3.75 MB (5 MB as base64); a sheet of noisy footage is re-encoded with a palette, then scaled down, until it fits. A custom target can set its own
maxBytes.๐งช An eval decides the design. 42 synthetic tasks and 87 tasks on UI animations captured in a real browser, all with ground truth, an agent loop for Claude, and A/B experiments for sheet size, cells per sheet, label style, sampling, tool examples and text format. Read more.
Quick start
You need Node 24, Bun and ffmpeg. Bun installs and runs the scripts; kymo itself runs on Node.
brew install ffmpeg # or: sudo apt install ffmpeg
git clone https://github.com/tylergibbs1/kymo && cd kymo
bun install
bun run --silent kymo -- scan "synthetic:bounce?impact=20" --budget 8Point it at your own video the same way: bun run --silent kymo -- probe clip.mp4. More commands are in the video reference.
Use it from an agent (MCP)
Add the server to Claude Code, Claude Desktop or any MCP client, using the path to your clone:
{
"mcpServers": {
"kymo": { "command": "node", "args": ["/path/to/kymo/apps/cli/bin/kymo.js", "mcp"] }
}
}It exposes seven tools: kymo_probe, kymo_scan, kymo_frames, kymo_compare, kymo_track, kymo_check and kymo_record. Use kymo mcp --http :3917 for Streamable HTTP. Give your agent the skill so it knows the workflow.
Status
kymo is at v0. Video, image sequences and synthetic scenes work today. Web/UI animation (Playwright), telemetry, live camera and screen buffers, Remotion and Lottie are next; kymo_record returns a clear "not available yet" error until live sources land.
Contributing
Contributions are welcome, from bug reports to new source adapters.
Read the contributing guide to set up and run the tests and eval.
Pick up a good first issue to start small.
Everyone involved follows the Code of Conduct: be kind, assume good intent, critique the work and not the person.
Settle design arguments with an experiment in the eval, not a long thread.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
Plan, compare, price, generate, and recover AI video from compatible MCP clients.
MCP server for Clipkit โ gives AI agents a video toolbox via the Clipkit schema.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables LLM agents to generate labeled contact sheets of Manim animations, scaffold storyboards from renders, and validate rendered steps against expected intents via MCP tools.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to inspect video camera clips through structured quantitative measurements such as exposure, color, sharpness, noise, and camera motion, returning JSON reports and visual scopes instead of relying on frame interpretations.MIT
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to analyze, inspect, and manipulate images and videos with deterministic FFmpeg/sharp tools and pluggable AI providers, returning timestamped, evidence-backed results that can be independently re-verified.1-
- AlicenseBqualityCmaintenanceEnables AI agents to programmatically edit videos via FFmpeg, providing tools for probing, trimming, concatenating, timeline composition, LUT generation/application, rendering, and edit verification over MCP.162MIT