{"name":"io.github.ODU33104/rive-mcp","slug":"odu33104-rive-mcp","title":null,"description":"Free, editor-less MCP server for Rive: create, edit, inspect, render and preview .riv animations","url":"https://mcp.market/server/odu33104-rive-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":39,"stars":13,"forks":3,"downloads_week":342,"last_push_at":"2026-09-14T11:47:57.000Z","license":"NOASSERTION"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ODU33104/rive-mcp","website":null,"version":"0.6.1","remotes":[],"packages":[{"registryType":"npm","identifier":"rive-mcp-server","version":"0.6.1","transport":{"type":"stdio"}}],"tools":[{"name":"riv_ab_compare","description":"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 an edit, or two design variants. 'A: <file>' / 'B: <file>' labels are burned into each frame by default. If the two files' animation lengths differ, the shorter one holds on its fin","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_asset_search","description":"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_import_svg). Requires network access to api.iconify.design.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_batch_render","description":"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 this tool repeatedly from your pipeline instead of expecting a live watch mode — none is provided, since MCP's request/response model doesn't fit a background file watcher. 'defaults'","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_create","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"riv_critique","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_decompile","description":"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 easings, loop modes). Paint objects are resolved by parentId, so editor-authored files (paints deferred to the stream tail) decompile correctly. Use it to study professional files as f","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_design_tokens","description":"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, spacing/radius/stroke scales and a type scale. Call this first, then use ONLY the returned values in the scene spec — never invent raw hex colors or ad-hoc durations. Inputs: optional ","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_diff","description":"Structural diff between two .riv files: type count changes and per-object property differences.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_dump","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_edit","description":"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_dump to find object indices/names. Renders a preview of the result.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_extract_assets","description":"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/WOFF2/GIF). Externally-referenced (non-embedded) assets are skipped.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_generate_code","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_import_svg","description":"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 with full cubic vertices, gradients, strokes) and returns a rendered preview. Use the fragment in riv_create via \"imports\". Supports path/rect/circle/ellipse/polygon/polyline/line,","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_inspect","description":"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) structure when present — ViewModel definitions and their properties, ViewModelInstances with resolved property values (including enum/nested-viewmodel/list references), enums, converters, ","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_lint","description":"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-machine inputs, keyframe easing silently discarded on a track's last keyframe, plus motion-quality rules (all-linear robotic movement, teleporting objects, missing stagger on simulta","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_list","description":"Recursively find .riv files under a directory and report size and format version for each.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_lottie_import","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_optimize","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_play_state_machine","description":"Run a .riv state machine step by step: set/fire inputs, advance time, observe state transitions, and optionally capture frames. Returns a transition report.","write_action":true,"price_micros":0,"input_schema":null},{"name":"riv_render_apng","description":"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 with a transparent background by default.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_render_frame","description":"Render one frame of a .riv animation or state machine to PNG. Returns the image inline and saves it to disk.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_render_gif","description":"Render a .riv animation (or state machine idle playback) to an animated GIF file for preview.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_render_sprites","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_render_video","description":"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 machine or when the animation's length can't be determined).","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_rig_character","description":"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 a preview. Fine-tune afterwards with riv_edit or riv_studio.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_setup","description":"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's skills directory so it auto-triggers on future Rive work — .claude/skills/ in the current project (scope=project, default) or ~/.claude/skills/ for all projects (scope=user). Ide","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_slice_image","description":"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 with riv_create: images per part + groups as pivots.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_studio","description":"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 keyframe markers, hot reload on file change, auto-generated state machine input controls, event log, and (with scenePath) direct scene-JSON editing. The UI also has an 'Instructions ","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_studio_notes","description":"The Studio web UI's Agent panel is a two-way chat. Use this tool for both halves of it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_ui_detect","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_ui_prototype","description":"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 and press states. Roles:","write_action":false,"price_micros":0,"input_schema":null},{"name":"riv_visual_diff","description":"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 diff visualization PNG (differing pixels in red, matching pixels dimmed).","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-19T20:03:01.154Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:03:01.122Z","components":{"code":{"score":25,"max":25,"notes":["33 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 5 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"rive-mcp-server","version":"0.6.1","found":true,"license":"SEE LICENSE IN LICENSE","hasInstallScripts":false,"dependencyCount":6,"publishedAt":"2026-09-11T10:30:35.422Z","repositoryUrl":"git+https://github.com/ODU33104/rive-mcp.git","weeklyDownloads":342}],"repo":{"found":true,"owner":"ODU33104","repo":"rive-mcp","archived":false,"pushedAt":"2026-09-14T11:47:57Z","stars":13,"forks":3,"openIssues":14,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/64585127?v=4","ownerCreatedAt":"2020-04-30T09:44:44Z","license":"NOASSERTION"},"icon":{"url":"https://avatars.githubusercontent.com/u/64585127?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":13,"forks":3,"downloadsWeek":342,"license":"NOASSERTION","lastPushAt":"2026-09-14T11:47:57.000Z","score":39}}}},"grade_history":[],"reviews":[]}