Skip to main content
Glama
chrishayuk
by chrishayuk

chuk-motion

AI-powered video generation with Remotion - A design-system-first approach to creating professional multi-platform videos

Python 3.11+ MCP Tests Coverage

Overview

chuk-motion is an MCP (Model Context Protocol) server that brings the power of Remotion video generation to AI assistants like Claude. It provides a design-system-first approach with comprehensive design tokens, enabling AI to create professional, animated videos optimized for YouTube, TikTok, LinkedIn, Instagram Stories, and more.

Key Features

  • šŸŽØ Complete Design System: Design tokens for colors, typography, spacing, and motion

  • šŸ“± Multi-Platform Support: Safe margins for LinkedIn, TikTok, Instagram, YouTube

  • šŸŽ¬ 51 Video Components: Charts, code blocks, scenes, overlays, layouts, animations, text animations, transitions, and demo realism

  • šŸŽØ 7 Built-in Themes: Tech, Finance, Education, Lifestyle, Gaming, Minimal, Business

  • ⚔ Track-Based Timeline: Professional multi-track composition system

  • šŸ¤– LLM-Friendly: Discoverable components with detailed schemas

  • šŸ“Š Data Visualization: Animated charts (Pie, Bar, Line, Area, Donut, Horizontal Bar)

  • šŸ’» Code Display: Syntax-highlighted code blocks with typing animations

Design System

Four Token Categories

  1. Colors (tokens/colors.py)

    • 7 theme palettes optimized for video

    • Dark/light mode support (on_dark, on_light)

    • Background variants (dark, light, glass)

    • Semantic colors (success, warning, error, info)

  2. Typography (tokens/typography.py)

    • Font scales for 720p, 1080p, 4K

    • Primary and code font stacks

    • Font weights, line heights, letter spacing

    • Video-optimized readability

  3. Spacing (tokens/spacing.py) ⭐ NEW

    • 10-step spacing scale (4px - 120px)

    • 7 platform safe margins: LinkedIn, Instagram Stories/Square, TikTok, YouTube, Mobile

    • Border radius tokens

    • Layout width tokens

  4. Motion (tokens/motion.py)

    • Spring configurations for animations

    • Easing curves (ease-out, ease-in-out, bounce)

    • Duration presets (fast, normal, slow)

Platform Safe Margins

Ensure your content isn't cropped by platform UIs:

Platform

Top

Bottom

Left

Right

Notes

LinkedIn Feed

40px

40px

24px

24px

Recommended 8-24px safe zone

Instagram Stories

100px

120px

24px

24px

UI overlays at top/bottom

TikTok

100px

180px

24px

80px

Side buttons on right

YouTube

20px

20px

20px

20px

Standard margins

Mobile Vertical

80px

100px

-

-

9:16 format

Mobile Horizontal

-

-

24px

24px

16:9 format

Instagram Square

32px (all sides)

-

-

-

1:1 format

Component Library

šŸ“Š Charts (6 components)

All charts support design tokens and smooth animations:

  • PieChart - Proportions and percentages

  • BarChart - Vertical bar comparisons

  • HorizontalBarChart - Ranked horizontal bars with top 3 highlighting

  • LineChart - Trends over time

  • AreaChart - Filled area trends

  • DonutChart - Ring chart with center stat

šŸŽ¬ Scenes (2 components)

  • TitleScene - Full-screen animated titles (4 variants, 5 animations)

  • EndScreen - YouTube end screens with CTAs (4 variants)

šŸŽØ Overlays (3 components)

  • LowerThird - Name plates (5 variants, 5 positions)

  • TextOverlay - Animated text emphasis (5 styles, 5 animations)

  • SubscribeButton - Animated subscribe button (5 animations)

šŸ’» Code (3 components)

  • CodeBlock - Syntax-highlighted code display (4 variants: minimal, terminal, editor, glass)

  • TypingCode - Character-by-character typing animation (4 variants, 4 cursor styles)

  • CodeDiff - Side-by-side code comparison with syntax highlighting

šŸ“ Layouts (17 components)

Professional video layouts for multi-platform content:

  • AsymmetricLayout - Main feed (2/3) + stacked demo panels (1/3)

  • Container - Content container with optional borders and backgrounds

  • DialogueFrame - Conversation-style layout with speaker/audience

  • FocusStrip - Main content with focus strip overlay

  • Grid - Flexible grid layouts (8 types: 1x2, 2x1, 2x2, 3x2, 2x3, 3x3, 4x2, 2x4)

  • HUDStyle - HUD-style overlay layout (4 corners + center)

  • Mosaic - Multi-clip mosaic grid layout

  • OverTheShoulder - Presenter with screen content

  • PerformanceMultiCam - Primary camera + up to 4 secondary cameras

  • PiP - Picture-in-picture with positioning

  • SplitScreen - Side-by-side or top/bottom splits (4 divider styles)

  • StackedReaction - Content with stacked reactions

  • ThreeByThreeGrid - 3x3 grid layout for multiple items

  • ThreeColumnLayout - Three-column layout

  • ThreeRowLayout - Three-row layout

  • Timeline - Timeline-based event display

  • Vertical - Two-panel vertical split

šŸŽ¬ Animations (3 components)

  • Counter - Animated number counter (4 animations: count_up, flip, slot_machine, digital)

  • LayoutEntrance - Layout entrance animations for smooth component reveals

  • PanelCascade - Cascading panel animations for sequential reveals

✨ Text Animations (6 components)

Dynamic text effects inspired by ReactBits:

  • TypewriterText - Classic typewriter animation with optional blinking cursor

  • StaggerText - Staggered reveal with spring physics (character or word-based)

  • WavyText - Continuous wave motion with sine wave oscillation

  • TrueFocus - Word-by-word focus cycling with animated corner brackets

  • DecryptedText - Character scrambling reveal with multiple directions

  • FuzzyText - VHS glitch effects with scanlines and RGB split

šŸŽ­ Demo Realism (4 components)

Realistic UI mockups and demonstrations:

  • BeforeAfterSlider - Interactive before/after comparison slider

  • BrowserFrame - Browser window with realistic chrome and tabs

  • DeviceFrame - Device mockups (phone, tablet, desktop) with content

  • Terminal - Terminal window with command history and typing

šŸ“¦ Content (5 components)

  • DemoBox - Reusable content container for demos

  • ImageContent - Image display with flexible sizing (contain, cover, fill) and styling options

  • StylizedWebPage - Stylized webpage mockup for demonstrations

  • VideoContent - Video content placeholder with controls

  • WebPage - Clean webpage mockup with customizable content

šŸ”„ Transitions (2 components)

  • LayoutTransition - Smooth transitions between different layouts

  • PixelTransition - Pixelated transition effects

Total: 51 production-ready components - All using design tokens with comprehensive test coverage!

Installation

Prerequisites

  • Python 3.11+

  • Node.js 18+ (for Remotion)

  • npm or yarn

Install Python Package

# Install dependencies with uv (recommended)
uv pip install -e .

# Or with pip
pip install -e .

Install Remotion

# Remotion is installed per-project automatically
# The MCP server handles this when generating projects

Quick Start

1. Start the MCP Server

STDIO Mode (for Claude Desktop):

python -m chuk_motion.server stdio

HTTP Mode (for testing/development):

python -m chuk_motion.server http --port 8000

2. Create a Project

# Via MCP tools
remotion_create_project(
    name="my_video",
    theme="tech",
    fps=30,
    width=1920,
    height=1080
)

3. Add Components

# Add a title scene
remotion_add_title_scene(
    text="Welcome to AI Videos",
    subtitle="Created with Design Tokens",
    variant="bold",
    animation="fade_zoom",
    duration="3s"
)

# Add a chart with safe margins
remotion_add_pie_chart(
    data='[{"label": "AI", "value": 40}, {"label": "ML", "value": 30}]',
    title="Technology Distribution",
    duration="4s",
    gap_before="1s"  # Time strings supported!
)

# Add code with typing animation
remotion_add_typing_code(
    code="console.log('Hello, World!');",
    language="javascript",
    title="Example Code",
    typing_speed="medium",
    duration="5s"
)

# Add images
remotion_add_image_content(
    src="https://picsum.photos/1920/1080",
    fit="cover",
    duration="3s"
)

4. Render the Video

cd remotion-projects/my_video
npm install
npm start  # Preview in browser
npm run build  # Render to MP4

Examples

The examples/ directory contains production-ready demos:

Design System Showcases

# Complete design system showcase (90 seconds)
python examples/design_system_showcase.py

# Platform safe margins demo (60 seconds)
python examples/safe_margins_demo.py

# Explore all design tokens
python examples/explore_design_system.py

Component Showcases

# Complete text animations showcase (52.5 seconds)
python examples/all_text_animations_demo.py

# Image layouts showcase - 17 examples (127 seconds)
python examples/image_layouts_showcase.py

# Content showcase - All 5 content components
python examples/content_showcase.py

# Fibonacci code typing demo
python examples/fibonacci_demo.py

All examples use the ProjectManager API with the track-based timeline system.

MCP Tools Reference

Project Management

  • remotion_create_project(name, theme, fps, width, height) - Create new project

  • remotion_get_project_info() - Get current project info

  • remotion_list_projects() - List all projects

Component Tools (50 total)

Charts

  • remotion_add_pie_chart(data, title, duration, track, gap_before)

  • remotion_add_bar_chart(data, title, duration, track, gap_before)

  • remotion_add_horizontal_bar_chart(data, title, duration, track, gap_before)

  • remotion_add_line_chart(data, title, xlabel, ylabel, duration, track, gap_before)

  • remotion_add_area_chart(data, title, duration, track, gap_before)

  • remotion_add_donut_chart(data, title, duration, track, gap_before)

Overlays

  • remotion_add_title_scene(text, subtitle, variant, animation, duration, track, gap_before)

  • remotion_add_end_screen(cta_text, variant, duration, track, gap_before)

  • remotion_add_lower_third(name, title, variant, position, duration, track, gap_before)

  • remotion_add_text_overlay(text, style, animation, position, duration, track, gap_before)

  • remotion_add_subscribe_button(animation, position, duration, track, gap_before)

Code

  • remotion_add_code_block(code, language, title, variant, animation, show_line_numbers, duration, track, gap_before)

  • remotion_add_typing_code(code, language, title, variant, cursor_style, typing_speed, show_line_numbers, duration, track, gap_before)

Layouts

  • remotion_add_grid(children, layout, duration, track, gap_before)

  • remotion_add_container(content, border, duration, track, gap_before)

  • remotion_add_split_screen(left, right, variant, duration, track, gap_before)

Animations

  • remotion_add_counter(start_value, end_value, prefix, suffix, decimals, animation, duration, track, gap_before)

Text Animations

  • remotion_add_typewriter_text(text, font_size, font_weight, text_color, cursor_color, show_cursor, type_speed, position, align, duration, track, gap_before)

  • remotion_add_stagger_text(text, font_size, font_weight, text_color, stagger_by, stagger_delay, animation_type, position, align, duration, track, gap_before)

  • remotion_add_wavy_text(text, font_size, font_weight, text_color, wave_amplitude, wave_speed, wave_frequency, position, align, duration, track, gap_before)

  • remotion_add_true_focus(text, font_size, font_weight, text_color, word_duration, position, duration, track, gap_before)

  • remotion_add_decrypted_text(text, font_size, font_weight, text_color, reveal_direction, scramble_speed, position, duration, track, gap_before)

  • remotion_add_fuzzy_text(text, font_size, font_weight, text_color, glitch_intensity, animate, position, duration, track, gap_before)

Discovery Tools

  • remotion_list_components(category) - List available components

  • remotion_search_components(query) - Search components

  • remotion_get_component_schema(name) - Get component details

  • remotion_list_themes() - List available themes

  • remotion_get_theme_info(name) - Get theme details

Token Tools

  • remotion_list_color_tokens() - Color palettes

  • remotion_list_typography_tokens() - Typography system

  • remotion_list_motion_tokens() - Motion design

  • remotion_list_spacing_tokens() ⭐ NEW - Spacing and safe margins

Info Tools

  • remotion_get_info() - Server information and statistics

Time String Format ⭐ NEW

All duration and timing parameters support flexible time strings:

# String formats
duration="2s"       # 2 seconds
duration="500ms"    # 500 milliseconds
duration="1.5s"     # 1.5 seconds
duration="1m"       # 1 minute (60 seconds)
gap_before="1s"     # 1 second gap
gap_before="250ms"  # 250ms gap

# Float format still works
duration=2.0
gap_before=0.5

Track-Based Timeline System

The timeline uses a professional multi-track approach:

# Main track: Sequential auto-stacking
remotion_add_title_scene(...)  # Starts at 0s
remotion_add_pie_chart(...)    # Auto-stacks after title
remotion_add_bar_chart(...)    # Auto-stacks after pie chart

# Overlay track: Layers on top
remotion_add_text_overlay(..., track="overlay", align_to="main", offset=5.0)

# Background track: Behind main content
remotion_add_background(..., track="background")

Default Tracks:

  • main (layer 0) - Primary content, auto-stacks with 0.5s gap

  • overlay (layer 10) - Text overlays, UI elements

  • background (layer -10) - Background media

Themes

Tech Theme

Modern tech aesthetic with blue/cyan palette

  • Colors: Primary blue (#0066FF), Accent cyan (#00D9FF)

  • Use Cases: Tech reviews, coding tutorials, software demos

Finance Theme

Professional finance with green/gold

  • Colors: Primary green (#00C853), Accent gold (#FFD600)

  • Use Cases: Stock analysis, investing advice, business news

Education Theme

Friendly education with purple/orange

  • Colors: Primary purple (#7C4DFF), Accent orange (#FF6E40)

  • Use Cases: Educational content, explainers, courses

Gaming Theme

High-energy gaming with neon accents

  • Colors: Neon green (#00E676), Neon purple (#E040FB)

  • Use Cases: Gaming videos, esports, stream overlays

Minimal Theme

Clean monochrome aesthetic

  • Colors: Grayscale with subtle accents

  • Use Cases: Professional content, documentaries

Lifestyle Theme

Warm lifestyle with coral/pink

  • Colors: Pink (#FF6B9D), Coral (#FFB74D)

  • Use Cases: Vlogs, lifestyle, wellness, travel

Business Theme

Professional business with navy/teal

  • Colors: Navy (#1565C0), Teal (#00ACC1)

  • Use Cases: Corporate videos, presentations, B2B

Configuration for Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "remotion": {
      "command": "python",
      "args": ["-m", "chuk_motion.server", "stdio"],
      "env": {
        "MCP_STDIO": "1"
      }
    }
  }
}

Development

Project Structure

chuk-motion/
ā”œā”€ā”€ src/chuk_motion/
│   ā”œā”€ā”€ server.py              # Main MCP server
│   ā”œā”€ā”€ async_server.py        # Async MCP server variant
│   ā”œā”€ā”€ video_manager.py       # High-level video management ⭐ NEW
│   ā”œā”€ā”€ tokens/                # Design tokens
│   │   ā”œā”€ā”€ colors.py         # Color palettes (7 themes)
│   │   ā”œā”€ā”€ typography.py     # Typography system
│   │   ā”œā”€ā”€ motion.py         # Motion design
│   │   ā”œā”€ā”€ spacing.py        # Spacing & safe margins
│   │   └── token_manager.py  # Token import/export
│   ā”œā”€ā”€ themes/               # Theme system
│   │   └── youtube_themes.py # 7 YouTube-optimized themes
│   ā”œā”€ā”€ components/           # Component library (51 components)
│   │   ā”œā”€ā”€ charts/          # 6 chart components
│   │   ā”œā”€ā”€ overlays/        # 3 overlay components
│   │   ā”œā”€ā”€ code/            # 3 code components
│   │   ā”œā”€ā”€ layouts/         # 17 layout components
│   │   ā”œā”€ā”€ animations/      # 3 animation components
│   │   ā”œā”€ā”€ text_animations/ # 6 text animation components
│   │   ā”œā”€ā”€ frames/          # 3 frame components
│   │   ā”œā”€ā”€ transitions/     # 2 transition components
│   │   └── content/         # 5 content components
│   ā”œā”€ā”€ generator/            # TSX generation
│   │   ā”œā”€ā”€ component_builder.py    # Jinja2 templating
│   │   ā”œā”€ā”€ composition_builder.py  # Component instances
│   │   └── timeline.py            # Track-based timeline
│   ā”œā”€ā”€ render/               # Video rendering ⭐ NEW
│   │   ā”œā”€ā”€ project_exporter.py    # Remotion project export
│   │   └── video_renderer.py      # MP4 rendering via CLI
│   ā”œā”€ā”€ rendering/            # Remotion integration
│   │   └── remotion_renderer.py   # Remotion rendering
│   ā”œā”€ā”€ storage/              # Artifact storage ⭐ NEW
│   │   └── artifact_storage.py    # chuk-artifacts integration
│   ā”œā”€ā”€ tools/                # MCP tools
│   │   ā”œā”€ā”€ theme_tools.py         # Theme management tools
│   │   ā”œā”€ā”€ token_tools.py         # Token tools
│   │   └── artifact_tools.py      # Artifact management tools
│   ā”œā”€ā”€ utils/                # Utilities
│   │   ā”œā”€ā”€ project_manager.py     # Project scaffolding
│   │   └── async_project_manager.py # Async project manager
│   └── models/               # Pydantic models
│       ā”œā”€ā”€ artifact_models.py     # Storage models
│       └── responses.py           # Response models
ā”œā”€ā”€ examples/                 # Production examples
│   ā”œā”€ā”€ design_system_showcase.py
│   ā”œā”€ā”€ safe_margins_demo.py
│   ā”œā”€ā”€ fibonacci_demo.py
│   └── explore_design_system.py
ā”œā”€ā”€ tests/                    # 1471 tests
ā”œā”€ā”€ remotion-templates/       # Base Remotion templates
└── remotion-projects/        # Generated projects (gitignored)

Running Tests

# Run all tests
make test

# Run with coverage
make test-cov

Code Quality

# Run all checks (linting, type checking, tests)
make check

# Individual checks
make lint       # Ruff linting
make format     # Ruff formatting
make typecheck  # MyPy type checking
make test       # Run all tests

All checks must pass before committing! The make check command runs linting, type checking, and all 1471 tests to ensure code quality.

Recent Updates ⭐

Video Rendering & Storage (December 2025)

  • āœ… Video Renderer: Full Remotion CLI integration for MP4 export

  • āœ… Background Rendering: Async job system with progress tracking

  • āœ… Artifact Storage: Integration with chuk-artifacts for persistent storage

  • āœ… VideoManager: High-level API for video project management

  • āœ… Project Exporter: RemotionProjectExporter for scaffolding complete projects

  • āœ… Test Coverage: 1471 tests passing with 86% coverage

ImageContent Component (January 2025)

  • āœ… New ImageContent component for displaying images in videos

  • āœ… Flexible sizing modes: cover, contain, fill

  • āœ… Styling options: opacity, border radius

  • āœ… Design token integration for consistent styling

  • āœ… Created comprehensive image_layouts_showcase.py with 17 real-world examples

  • āœ… Fixed Mosaic layout to properly wrap clips in {content: ...} structure

  • āœ… Fixed specialized layout prop keys (AsymmetricLayout, OverTheShoulder, DialogueFrame, etc.)

  • āœ… Updated content_showcase.py to include ImageContent

  • āœ… Total components: 51 production-ready components

Text Animation Components (January 2025)

  • āœ… 6 new text animation components: TypewriterText, StaggerText, WavyText, TrueFocus, DecryptedText, FuzzyText

  • āœ… Created dedicated text_animations/ folder for better organization

  • āœ… Moved text animations from overlays/ to text_animations/

  • āœ… Inspired by ReactBits

  • āœ… All components use design tokens and spring physics

  • āœ… Complete demo with 20 scenes (52.5 seconds)

  • āœ… Total components: 51 production-ready components

Test Coverage Achievement (December 2025)

  • āœ… 1471 passing tests with comprehensive test suite

  • āœ… 86% overall coverage across the codebase

  • āœ… 100% coverage on video_renderer.py

  • āœ… 97% coverage on remotion_renderer.py and project_exporter.py

  • āœ… 96% coverage on theme_tools.py

  • āœ… 94-95% coverage on component_builder.py, timeline.py, theme_manager.py

  • āœ… All builder.py files at 100% coverage

Component Library Expansion (January 2025)

  • āœ… 51 production-ready components organized into 9 categories

  • āœ… 17 layout components: AsymmetricLayout, Container, DialogueFrame, FocusStrip, Grid, HUDStyle, Mosaic, OverTheShoulder, PerformanceMultiCam, PiP, SplitScreen, StackedReaction, ThreeByThreeGrid, ThreeColumnLayout, ThreeRowLayout, Timeline, Vertical

  • āœ… 6 text animation components: TypewriterText, StaggerText, WavyText, TrueFocus, DecryptedText, FuzzyText

  • āœ… 6 chart components: PieChart, BarChart, HorizontalBarChart, LineChart, AreaChart, DonutChart

  • āœ… 5 content components: DemoBox, ImageContent, StylizedWebPage, VideoContent, WebPage

  • āœ… 4 demo realism components: BeforeAfterSlider, BrowserFrame, DeviceFrame, Terminal

  • āœ… 3 frame components: BrowserFrame, DeviceFrame, Terminal

  • āœ… 3 animation components: Counter, LayoutEntrance, PanelCascade

  • āœ… 3 code components: CodeBlock, TypingCode, CodeDiff

  • āœ… 3 overlay components: LowerThird, TextOverlay, SubscribeButton

  • āœ… 2 scene components: TitleScene, EndScreen

  • āœ… 2 transition components: LayoutTransition, PixelTransition

Design System Integration (January 2025)

  • āœ… Created comprehensive spacing tokens with 7 platform safe margins

  • āœ… Applied design tokens to ALL 51 components (100% coverage)

  • āœ… Fixed Jinja2 template rendering for token context

  • āœ… Updated all themes with spacing tokens

  • āœ… Fixed Pydantic v2 compatibility issues

Time String Support (January 2025)

  • āœ… Support for time strings: "1s", "500ms", "1m"

  • āœ… Fixed gap_before string concatenation bug

  • āœ… Updated all 51 MCP tools to accept time strings

  • āœ… Enhanced seconds_to_frames() with format parsing

Example Files (January 2025)

  • āœ… Fixed ProjectManager API usage in all examples

  • āœ… Created design system showcase demo (90s)

  • āœ… Created platform safe margins demo (60s)

  • āœ… Created text animations showcase demo (52.5s)

  • āœ… Fixed EndScreen thumbnail handling

Roadmap

Phase 1: Foundation āœ… COMPLETE

  • āœ… Design token system (colors, typography, motion, spacing)

  • āœ… Component registry with 17 components

  • āœ… 7 YouTube-optimized themes

  • āœ… Discovery tools for LLMs

  • āœ… Track-based timeline system

  • āœ… Platform safe margin support

Phase 2: Generation āœ… COMPLETE

  • āœ… TSX component generation with Jinja2

  • āœ… Remotion project scaffolding

  • āœ… Composition builder with ComponentInstance

  • āœ… ProjectManager API

  • āœ… Time string parsing ("1s", "500ms")

Phase 3: Rendering āœ… COMPLETE

  • āœ… Remotion render integration with video_renderer

  • āœ… Export to MP4 via Remotion CLI

  • āœ… Background rendering with job status tracking

  • āœ… Progress monitoring during renders

  • āœ… RemotionProjectExporter for project scaffolding

Phase 4: Storage & Artifacts āœ… COMPLETE

  • āœ… ArtifactStorageManager with chuk-artifacts integration

  • āœ… Project storage (WORKSPACE namespaces)

  • āœ… Render storage (BLOB namespaces)

  • āœ… Asset management for media files

  • āœ… Checkpoint/versioning support

  • āœ… VideoManager for high-level video operations

Phase 5: Advanced Features

  • šŸ”² Custom theme builder

  • šŸ”² Animation timeline editor

  • šŸ”² Audio sync

  • šŸ”² Auto-captioning

  • šŸ”² Light/dark mode switching

  • šŸ”² Cloud rendering integration

Contributing

Contributions welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Run make lint && make format && make typecheck

  5. Submit a pull request

License

Apache License 2.0 - see LICENSE for details.

  • Related Projects:

    • chuk-mcp-server - Zero-config MCP framework

    • chuk-mcp-pptx - PowerPoint MCP server

    • Remotion - React-based video generation

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrishayuk/chuk-mcp-remotion'

If you have feedback or need assistance with the MCP directory API, please join our Discord server