rive-analyzer
Enables AI assistants to inspect, validate, control, and ship Rive animation files with 11 tools for parsing, scanning, generating types, comparing files, and more.
README
Rive Playground
v1.1.0 — "Living Canvas"
Where your animation goes from a file to a living product.
Inspect, validate, control, and ship Rive .riv animation files — from the terminal, AI assistants, or a visual playground. The complete toolchain for teams that build with Rive at scale.
What's New in v1.1.0 — "Living Canvas"
| Area | Feature |
|---|---|
| Parser | Animation loopType — oneShot / loop / pingPong |
| Parser | workStart / workEnd frame range per animation |
| Parser | ViewModel extraction — real data from viewModelCount() / getProperties() |
| Parser | DataEnum extraction — full enum names and values |
| CLI | list-assets — enumerate embedded/CDN images, fonts, audio |
| CLI | init — scaffold .rive-playground/ project directory |
| CLI | contract-generate — generate .rive-contract.yaml from .riv |
| CLI | contract-validate — validate .riv against contract (CI-friendly) |
| CLI | generate-platform — codegen for Swift, Kotlin, JSON Schema, Zod, Dart |
| CLI | compare — diff two .riv files, detect breaking changes |
| MCP | 5 new tools: list-rive-assets, generate-rive-contract, validate-rive-contract, generate-platform-types, compare-rive-files |
| Playground | Events Log Panel — real-time Rive event stream |
| Playground | Preset Library — save/load/apply named configurations |
| Playground | URL deep-linking — ?file=<url>&artboard=Main&sm=... |
| Playground | Keyboard shortcuts — Space play/pause, R reset, Ctrl+S save preset |
| Playground | Error toasts — surface silent failures visually |
| Infra | Vitest test suite (16 tests) |
| Infra | .rive-playground/ project config directory |
Overview
rive-analyzer CLI Terminal-first inspection, codegen, validation
MCP Server AI assistant integration (Claude, OpenCode)
Rive Playground Visual editor + preset library + event log
.rive-playground/ Project config — presets, contracts (git-trackable)
Installation
cd /path/to/rive-mcp-analyzer
npm install
npm run build
npm link # optional: global CLI install
CLI Reference
inspect
rive-analyzer inspect ./animation.riv
rive-analyzer inspect ./animation.riv --json
scan
rive-analyzer scan ./public/
validate
rive-analyzer validate ./animation.riv ./src/constants/rive.ts
generate-types
rive-analyzer generate-types ./animation.riv -o ./src/rive-generated.ts
generate-platform
rive-analyzer generate-platform ./animation.riv --target swift
rive-analyzer generate-platform ./animation.riv --target kotlin -o RiveConstants.kt
rive-analyzer generate-platform ./animation.riv --target json-schema
rive-analyzer generate-platform ./animation.riv --target zod
rive-analyzer generate-platform ./animation.riv --target dart
contract-generate
rive-analyzer contract-generate ./animation.riv -o .rive-playground/contracts/animation.yaml
Contract example:
version: 1.1.0
file: animation.riv
artboard: Main
stateMachine: Main SM
inputs:
speed:
type: number
min: 0
max: 10
description: "Animation speed multiplier"
isVisible:
type: boolean
RESET:
type: trigger
contract-validate
rive-analyzer contract-validate ./animation.riv ./animation.rive-contract.yaml
# Exits 1 if: input removed, type changed, artboard renamed
compare
rive-analyzer compare ./animation-v1.riv ./animation-v2.riv
# Exits 1 on breaking changes — CI-safe
list-assets
rive-analyzer list-assets ./animation.riv
export-fields
rive-analyzer export-fields ./animation.riv --json
init
rive-analyzer init
# Creates: .rive-playground/{presets,contracts,schedules,config.json}
watch
rive-analyzer watch "./public/**/*.riv"
MCP Server (11 tools)
node dist/mcp.js
Add to Claude Desktop:
{
"mcpServers": {
"rive-analyzer": {
"command": "node",
"args": ["/absolute/path/to/rive-mcp-analyzer/dist/mcp.js"]
}
}
}
| Tool | Description |
|---|---|
inspect-rive |
Parse .riv — artboards, SMs, animations |
scan-rive-files |
Scan directory recursively |
validate-rive-config |
Check JS/TS config against .riv |
generate-rive-types |
TypeScript constants |
watch-rive-files |
Watch for changes |
export-rive-fields |
Deep extract ViewModels, DataEnums |
list-rive-assets |
Enumerate embedded/CDN assets |
generate-rive-contract |
Generate .rive-contract.yaml |
validate-rive-contract |
Validate .riv against contract |
generate-platform-types |
Swift/Kotlin/JSON Schema/Zod/Dart |
compare-rive-files |
Diff two files, detect breaking changes |
Playground
cd playground
npm install
npm run dev
# Open http://localhost:5173
Panels
| Panel | What it does |
|---|---|
| Artboard | Select artboard and animation |
| State Machine | Live boolean/number/trigger controls |
| ViewModel | All property types with live editing |
| Text Runs | Edit text content, auto-discover from VMs |
| Events | Real-time Rive event log |
| Presets | Save / load / apply named configurations |
| Export | JSON + Markdown export |
Keyboard Shortcuts
| Key | Action |
|---|---|
Space |
Play / Pause |
R |
Reset animation |
Ctrl/Cmd + S |
Save current state as preset |
Ctrl + Scroll |
Zoom canvas |
Alt + Drag |
Pan canvas |
Alt + Double-click |
Reset view |
URL Deep-linking
http://localhost:5173?file=https://cdn.example.com/animation.riv&artboard=Main&sm=Main+SM
Rive Contract System
The safety net between designers and developers. Define constraints on inputs — validate on every CI run.
# 1. Generate contract scaffold from .riv
rive-analyzer contract-generate hero.riv -o .rive-playground/contracts/hero.yaml
# 2. Edit: add min/max, required, descriptions
# 3. Validate in CI
rive-analyzer contract-validate hero.riv .rive-playground/contracts/hero.yaml
Project Structure
src/
cli.ts CLI (Commander + Clack, banner + NhoNH signature)
mcp.ts MCP server (11 tools)
parser/riveParser.ts WASM headless parser
tools/
contract.ts Contract system (YAML + Zod)
compareFiles.ts Breaking change detection
generateMultiplatform.ts Swift/Kotlin/JSON Schema/Zod/Dart codegen
listAssets.ts Asset enumeration
exportFields.ts ViewModel/DataEnum extraction
[inspect, scan, validate, generateTypes, watch].ts
ui/theme.ts CLI design system
ui/banner.ts ASCII art + NhoNH signature
playground/src/
hooks/useRivePlayground.ts Core state + event capture
hooks/usePresets.ts localStorage preset library
components/panels/
EventsPanel.tsx Real-time event log
PresetsPanel.tsx Save/load configurations
components/Toast.tsx Error notifications
types.ts RiveEvent, Preset, PlaygroundState
.rive-playground/ Git-trackable project config
presets/ Named configuration snapshots
contracts/ .rive-contract.yaml files
schedules/ (v1.2.0)
Roadmap
| Version | Theme | Highlights |
|---|---|---|
| v1.1.0 | Living Canvas | Contract system, multi-platform codegen, preset library, events |
| v1.2.0 | Living Server | LiveConfig HTTP+WS, Config Scheduler, MCP-Playground bridge |
| v1.3.0 | Intelligence | AI Narrator, AI Config Assistant (opt-in), SM Visual Graph |
Built by NhoNH · rive-analyzer · github.com/hoainho
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.