io.github.ODU33104/rive-mcp · version 0.12.0 · 2,169 weekly npm downloads · audited 2026-11-03
Notes
No hidden-instruction or invisible-character findings in any tool, prompt, or resource description.
Checks the directory's published tool requirements that are visible from tools/list. Passing them does not guarantee acceptance.
| Name | Title | Hint | Description |
|---|---|---|---|
riv_list | List .riv files | none | Recursively find .riv files under a directory and report size and format version for each. |
riv_inspect | Inspect a .riv file | none | Extract full metadata from a .riv file: artboards, animations (duration/fps/loop), state machines and their inputs (name/type/initial value). Uses the official Rive runtime. Also decodes Data Binding (ViewModel) structur… |
riv_render_frame | Render a single frame to PNG | none | Render one frame of a .riv animation or state machine to PNG. Returns the image inline and saves it to disk. |
riv_render_gif | Render an animation to GIF | none | Render a .riv animation (or state machine idle playback) to an animated GIF file for preview. |
riv_render_apng | Render an animation to APNG | none | Render a .riv animation (or state machine playback) to an animated PNG (APNG). Unlike GIF this supports 24-bit color plus full alpha transparency, and GitHub READMEs animate it like a regular image. Frames are rendered w… |
riv_play_state_machine | Interactively drive a state machine | none | Run a .riv state machine step by step: set/fire inputs, advance time, observe state transitions, and optionally capture frames. Returns a transition report. |
riv_generate_code | Generate integration code | none | Generate ready-to-use integration code (React/Vue/Svelte/plain JS/Flutter) for a .riv file, using its real artboard, state machine and input names. |
riv_dump | Dump .riv binary structure | none | Low-level dump of a .riv file's object stream (typeKeys, property values, hierarchy). Useful for debugging and format research. Large files return a summary unless full=true. |
riv_preflight | Check .riv runtime compatibility | none | Detect .riv features and compare optional target runtime versions with documented minimums. Report unsupported, conditional, or unverified support, and inspect the file with bundled official WASM. |
riv_lint | Diagnose a .riv file for structural problems | none | Static diagnostic pass over a .riv file: broken/out-of-range references, oversized embedded assets, state-machine states unreachable by any transition, unconditional self-transitions (infinite-loop risk), unused state-ma… |
riv_repair | Repair safe .riv lint findings | none | Repair lint findings one change at a time. Compare pixels for each candidate, skip visual changes with reasons, and validate the final result before writing. dryRun never writes. |
riv_design_tokens | Generate a design-token set (palette / motion / layout) | none | Deterministically generate professional design tokens for a scene BEFORE calling riv_create: an OKLCH-harmonized palette (with WCAG contrast ratios), gradient pairs, Material-Motion-derived durations & easing roles, spac… |
riv_critique | Critique a .riv: filmstrip + onion skin + motion vectors + metrics + checklist | none | One-call review bundle for the render→critique→revise loop. Returns (1) a FILMSTRIP image — N frames left→right across the duration, so motion is readable as a sequence, (2) an ONION-SKIN image — all frames ghost-overlai… |
riv_import_svg | Import an SVG as Rive vector shapes | none | Convert an SVG file (Figma/Illustrator export, icon, illustration) into Rive bezier path shapes — the professional way to get high-quality artwork instead of drawing with primitives. Writes a scene-fragment JSON (shapes … |
riv_asset_search | Search/fetch professional vector icons (Iconify) | none | Search Iconify's ~200k professionally designed open-source icons and convert one directly into Rive shapes. Two modes: query-only returns matching icon names; icon+outSpec downloads the SVG and imports it (same output as… |
riv_lottie_import | Import a Lottie/bodymovin JSON as a Rive scene fragment (art + timing + easing) | none | Convert a Lottie (bodymovin, .json) animation — the format of LottieFiles' free animation library — into a riv_create scene fragment. Unlike riv_import_svg (shapes only), this keeps the keyframed timing: position, rotati… |
riv_export_lottie | Export a .riv animation to Lottie JSON | none | Export one .riv animation to Lottie JSON. Reports unsupported and approximated features, and indicates whether pixel comparison was available. |
riv_decompile | Decompile a .riv into an editable scene spec | none | Reverse a .riv file into a riv_create scene spec (shapes with bezier vertices, solid/gradient fills incl. gradient opacity, blend modes, artboard background, groups/solos, trim paths, clipping, animations with named easi… |
riv_create | Create a .riv file from a scene spec | none | Create a working .riv animation file from scratch (no Rive editor needed) and validate it with the official runtime. Returns a rendered preview frame. For polished results (gradients, organic bezier curves, easing, sprin… |
riv_edit | Edit an existing .riv file | none | Modify an existing .riv (lossless roundtrip): set any property, change named text runs, delete objects (with automatic subtree + reference remapping), or edit keyframes on an existing animation (op=setKeyframes). Use riv… |
riv_optimize | Optimize a .riv file (lossless) | none | Shrink a .riv without changing its visual output: remove unreferenced objects (dangling easing interpolators, fired-events nothing points to, empty keyframe tracks left over from prior edits) and thin redundant keyframes… |
riv_slice_image | Slice a PNG into parts for rigging | none | Cut polygon regions out of a character PNG for parts-based rigging (cutout animation). Writes each part as <name>.png plus base.png (source with parts erased) into outDir, and returns each part's bbox for placement. Use … |
riv_rig_character | Auto-rig a character PNG | none | One call: character PNG -> fully rigged .riv with cutout parts (ears/tail via polygons), 2-bone head-tilt mesh (seamless), vector eyelid blink, idle + happy animations, and a state machine with a 'happy' trigger. Returns… |
riv_diff | Diff two .riv files | none | Structural diff between two .riv files: type count changes and per-object property differences. |
riv_render_video | Render an animation to a WebM video | none | Render a .riv animation (or state machine) to a real-time WebM video using canvas.captureStream() + MediaRecorder (VP9, falls back to VP8/generic webm). Default duration is one loop of the animation (2s for a bare state … |
riv_render_sprites | Render an animation to a sprite sheet PNG | none | Render N evenly-spaced frames of a .riv animation/state machine into a single grid sprite sheet PNG (columns = ceil(sqrt(N))). Writes the PNG plus a JSON metadata file (cellW/cellH/cols/rows/count/fps) alongside. |
riv_batch_render | Batch-render many .riv files/formats in one call | none | Render a list of jobs — each a single .riv (rivPath) or a glob of .riv files (glob) — to png/gif/apng/webm/sprites, sequentially reusing the same headless Chromium page (no parallel pages). Built for CI/scripts: call thi… |
riv_extract_assets | Extract embedded assets from a .riv file | none | Extract embedded image/font/audio asset binary contents (ImageAsset/FontAsset/AudioAsset + FileAssetContents pairs) from a .riv file to disk, with the file extension inferred from magic bytes (PNG/JPEG/WEBP/TTF/OTF/WOFF/… |
riv_visual_diff | Pixel-diff two .riv files | none | Render the same artboard/animation/time from two .riv files under identical conditions (forced to the same output size) and compute a thresholded per-pixel visual diff. Returns match rate, differing pixel count, and a di… |
riv_ab_compare | Render two .riv files side by side for visual A/B review | none | Render the same artboard/animation/state-machine from two .riv files under identical conditions and composite them side by side (horizontal or vertical) into a single GIF/APNG for human review — e.g. a rig before/after a… |
riv_studio | Start the local Studio web UI | none | Start a local web UI (Rive-editor-like 3-pane layout) for live-previewing and editing a .riv file: hierarchy tree + click/drag selection on canvas + inspector (position/size/color/text edits apply live), timeline with ke… |
riv_studio_notes | Read the Studio chat and reply into it | none | Read the Studio web UI's Agent chat and reply into it. 1) READ: call with no `reply` to fetch the messages the user typed (consumes the queue; the Studio shows them as picked up). Trigger on 'check the studio notes' / 「ス… |
riv_ui_detect | Detect UI elements in a screenshot | none | Find the rectangles, text runs and images in a UI screenshot or design comp. Returns a nested element tree with rects, corner radii and fill colours, plus a numbered overlay PNG. Coordinates are in source pixels (accurat… |
riv_ui_prototype | Turn a detected UI screenshot into an animated .riv | none | Take the elements from riv_ui_detect, assign each one a role, and get back a working .riv: every element becomes a shape or an image asset, each gets an entrance appropriate to its role, and buttons and cards get hover a… |
riv_setup | Install the bundled rive-design-guidelines skill into this environment | none | One-time setup: copies the bundled `rive-design-guidelines` skill (the mandatory tokens → pro-asset ingestion → presets → critique workflow, asset-source registry, icon-animation recipes and craft rules) into the client'… |
npx mcpvetter scan --liveAdd this to a README:
[](https://mcpvetter.com/servers/rive-mcp-server)Get the MCPVetter verified badge, a re-audit within 24 hours of every npm release, and an email whenever tools, findings, or Claude directory readiness change. $29 per server per month. You prove ownership first, free.