Labsco
animotion-mcp logo

animotion-mcp

ā˜… 6

from animotion-mcp

745+ CSS3 animations and 9,000+ real SVG icons for AI coding agents. 10 MCP tools. Zero-clone setup via npx.

šŸ”„šŸ”„šŸ”„āœ“ VerifiedFreeQuick setup

Animotion

MCP server for AI agents — 745+ CSS animations, 9,000+ SVG icons. One command: npx animotion-mcp

Live Demo | API Reference | MCP Server | PNG Animator


What is Animotion?

Animotion is a production-ready CSS3 animation framework built for the modern web. It provides 745+ hand-crafted animations across 20 categories, 9,000+ real SVG icons via MCP (from Lucide, Heroicons, Tabler, Bootstrap), a PNG Animator tool, and an MCP server so AI agents can search and use animations and icons directly.

Built for everyone — from manual coders to vibe coders, from junior developers to AI agents.

Key Features

  • 745+ CSS3 animations across 20 categories — the largest collection available
  • 9,000+ real SVG icons via MCP — Lucide, Tabler, Bootstrap, Heroicons, built-in (eliminates AI-generated icons)
  • Zero dependencies — pure CSS, no JavaScript frameworks required
  • GPU-optimized — animations use transform and opacity for 60fps performance
  • Auto-playing previews — smooth, no GPU overload, auto-play toggle available
  • Custom text preview — type your name/brand and see it animated across all 745 animations
  • Copy-paste ready — every animation has a single CSS class
  • AI-friendly — MCP v2 server with 10 tools for Claude Code, Cursor, Windsurf, Cline
  • PNG Animator — upload any image, apply animation, export CSS
  • Utility classes — control duration, delay, easing, iteration, stagger
  • Syntax-highlighted code — modal shows CSS/HTML/JS with colored syntax
  • URL routing — deep-link to any animation or category via hash
  • Accessibility — skip link, ARIA labels, focus trap, prefers-reduced-motion
  • MIT Licensed — free forever, commercial use allowed

Animation Categories

#CategoryCountDescriptionExample Classes
1Entrance65Elements appearing on screenanimotion-fade-in, animotion-slide-in-up, animotion-zoom-in, animotion-bounce-in
2Exit50Elements leaving the screenanimotion-fade-out, animotion-slide-out-down, animotion-zoom-out
3Attention40Draw user attentionanimotion-bounce, animotion-pulse, animotion-shake-x, animotion-heartbeat
4Text50Typography animationsanimotion-typewriter, animotion-shimmer-text, animotion-glitch-text, animotion-neon-flicker
5Background40Animated backgroundsanimotion-gradient-shift, animotion-aurora, animotion-starfield, animotion-particle-field
6Button40Button interactionsanimotion-ripple-click, animotion-glow-pulse, animotion-shine-sweep, animotion-press-3d
7Card35Card animationsanimotion-card-lift, animotion-card-flip-3d, animotion-glassmorphism, animotion-shimmer-loading
8Loader60Spinners & progressanimotion-spinner-border, animotion-dots-wave, animotion-bars-wave, animotion-orbital
9Navigation25Nav & menu animationsanimotion-underline-grow, animotion-hamburger-x, animotion-dropdown-slide
10Form30Input & form animationsanimotion-label-float, animotion-input-glow-focus, animotion-toggle-slide
113D Transform353D perspective effectsanimotion-rotate-x-axis, animotion-card-flip-front-back, animotion-cube-spin-loader
12Filter25CSS filter animationsanimotion-blur-in, animotion-grayscale-to-color, animotion-hue-rotate-cycle
13Micro Interaction40UI feedback animationsanimotion-like-bounce, animotion-notification-pop, animotion-checkmark-draw
14Scroll25Scroll-triggered effectsanimotion-scroll-fade-in, animotion-scroll-zoom-in, animotion-scroll-clip-reveal
15Creative40Artistic & special effectsanimotion-paint-splash, animotion-ink-bleed, animotion-fire-flicker, animotion-sparkle
16Fintech30Finance & data UIanimotion-ticker-scroll, animotion-price-up, animotion-coin-flip, animotion-chart-line-draw-fintech
17Gaming40Game UI & physicsanimotion-gravity-fall, animotion-health-bar-fill, animotion-level-up, animotion-teleport
18E-Commerce25Shopping UI animationsanimotion-add-to-cart-bounce, animotion-wishlist-heart, animotion-shipping-truck
19Social25Social media UIanimotion-like-heart, animotion-story-ring, animotion-notification-bell
20Dashboard25Data viz & dashboardsanimotion-chart-line-draw, animotion-gauge-needle, animotion-kpi-counter

Utility Classes Reference

Duration

ClassDuration
.animotion-duration-100100ms
.animotion-duration-200200ms
.animotion-duration-300300ms
.animotion-duration-400400ms
.animotion-duration-500500ms
.animotion-duration-600600ms
.animotion-duration-700700ms
.animotion-duration-800800ms
.animotion-duration-10001s
.animotion-duration-12001.2s
.animotion-duration-15001.5s
.animotion-duration-20002s
.animotion-duration-25002.5s
.animotion-duration-30003s
.animotion-duration-50005s

Delay

ClassDelay
.animotion-delay-00ms
.animotion-delay-100100ms
.animotion-delay-200200ms
.animotion-delay-300300ms
.animotion-delay-500500ms
.animotion-delay-700700ms
.animotion-delay-10001s
.animotion-delay-15001.5s
.animotion-delay-20002s
.animotion-delay-30003s

Easing

ClassCurveBest For
.animotion-ease-linearlinearContinuous motion
.animotion-ease-inease-inExit animations
.animotion-ease-outease-outEntrance animations
.animotion-ease-in-outease-in-outSymmetric motion
.animotion-ease-springcubic-bezier(0.175, 0.885, 0.32, 1.275)Bouncy entrances
.animotion-ease-bouncecubic-bezier(0.68, -0.55, 0.265, 1.55)Playful UI
.animotion-ease-elasticcubic-bezier(0.68, -0.6, 0.32, 1.6)Elastic stretch
.animotion-ease-smoothcubic-bezier(0.4, 0, 0.2, 1)Material Design
.animotion-ease-sharpcubic-bezier(0.4, 0, 0.6, 1)Quick transitions
.animotion-ease-deceleratecubic-bezier(0, 0, 0.2, 1)Smooth stop
.animotion-ease-acceleratecubic-bezier(0.4, 0, 1, 1)Smooth start
.animotion-ease-overshootcubic-bezier(0.34, 1.56, 0.64, 1)Overshoot & settle

Iteration & Direction

ClassEffect
.animotion-oncePlay once
.animotion-twicePlay twice
.animotion-thricePlay three times
.animotion-infiniteLoop forever
.animotion-normalNormal direction
.animotion-reverseReverse direction
.animotion-alternateAlternate direction
.animotion-alternate-reverseAlternate starting in reverse

Fill Mode & Play State

ClassEffect
.animotion-fill-noneNo fill
.animotion-fill-forwardsKeep end state
.animotion-fill-backwardsApply start state during delay
.animotion-fill-bothBoth forwards and backwards
.animotion-runningAnimation running
.animotion-pausedAnimation paused

Performance

ClassEffect
.animotion-gpuForce GPU acceleration (will-change: transform, opacity)
.animotion-respect-motionDisable animation for prefers-reduced-motion

API Reference

Animotion provides a machine-readable JSON API at api.json for programmatic access.

Endpoint

GET https://animotion-mcp.github.io/api.json

Response Schema

{
  "name": "animotion",
  "version": "1.0.0",
  "totalAnimations": 745,
  "totalCategories": 20,
  "categories": [
    {
      "id": "entrance",
      "name": "Entrance",
      "icon": "→",
      "color": "#3b82f6",
      "count": 65
    }
  ],
  "animations": [
    {
      "id": "E01",
      "name": "Fade In",
      "description": "Element fades in from transparent to opaque",
      "cssClass": "animotion-fade-in",
      "keyframeName": "animotion-fadeIn",
      "category": "entrance",
      "subcategory": "fade",
      "tags": ["fade", "opacity", "entrance", "basic"],
      "duration": "0.6s",
      "timingFunction": "ease-out",
      "iterationCount": "1",
      "fillMode": "both",
      "demoType": "box",
      "css": ".animotion-fade-in { animation: animotion-fadeIn 0.6s ease-out both; }",
      "keyframeCSS": "@keyframes animotion-fadeIn { from { opacity: 0; } to { opacity: 1; } }"
    }
  ]
}

Using the API

Fetch all animations in a category

const response = await fetch('https://animotion-mcp.github.io/api.json');
const data = await response.json();

// Get all loader animations
const loaders = data.animations.filter(a => a.category === 'loader');
console.log(`${loaders.length} loader animations available`);

// Search by name
const searchResults = data.animations.filter(a =>
  a.name.toLowerCase().includes('fade')
);

Get CSS for a specific animation

const anim = data.animations.find(a => a.cssClass === 'animotion-bounce-in');

// Inject into page
const style = document.createElement('style');
style.textContent = anim.keyframeCSS + '\n' + anim.css;
document.head.appendChild(style);

// Apply to element
document.querySelector('.my-element').classList.add(anim.cssClass);

Build a dynamic animation picker

const data = await fetch('/api.json').then(r => r.json());

// Populate a <select> dropdown
const select = document.getElementById('animation-picker');
data.categories.forEach(cat => {
  const group = document.createElement('optgroup');
  group.label = `${cat.name} (${cat.count})`;

  data.animations
    .filter(a => a.category === cat.id)
    .forEach(a => {
      const opt = document.createElement('option');
      opt.value = a.cssClass;
      opt.textContent = a.name;
      group.appendChild(opt);
    });

  select.appendChild(group);
});

MCP Server (for AI Agents)

Animotion includes an MCP v2 server with 745 animations + 9,000+ real SVG icons from 5 providers. AI agents get real hand-crafted icons instead of generating AI-looking ones.

Why Use This MCP?

When AI coding tools generate UIs, they often create SVG icons that look obviously AI-generated. With Animotion MCP, agents call search_icons("shopping cart") and get real SVGs from Lucide, Heroicons, Tabler, and Bootstrap — content matches the context but doesn't look AI-generated.

Icon Providers (9,000+ icons)

ProviderIconsLicense
Lucide1,941ISC
Tabler5,039MIT
Bootstrap2,078MIT
Heroicons324MIT
Built-in120MIT

Install

npx animotion-mcp        # run directly, no install needed
# or
npm install -g animotion-mcp  # install globally

Connect to Claude Code / Cursor / Windsurf

Add to your MCP config file:

{
  "mcpServers": {
    "animotion": {
      "command": "npx",
      "args": ["-y", "animotion-mcp"]
    }
  }
}

Config file locations:

  • Claude Code: .claude/settings.json or ~/.claude/settings.json
  • Cursor: .cursor/mcp.json
  • Windsurf: MCP settings panel
  • Claude Desktop: ~/.claude/claude_desktop_config.json

Available MCP Tools (10 total)

1. search_animations

Search animations by name, category, or tags.

// Input
{
  "query": "fade in",
  "category": "entrance",
  "limit": 10
}

// Output — matching animations with metadata
{
  "count": 13,
  "animations": [
    {
      "id": "E01",
      "name": "Fade In",
      "description": "Element fades in from transparent to opaque",
      "cssClass": "animotion-fade-in",
      "category": "entrance",
      "tags": ["fade", "opacity", "entrance", "basic"],
      "duration": "0.6s"
    }
  ]
}

2. get_animation

Get complete details for a specific animation by ID or class name.

// Input
{ "id": "E01" }
// or
{ "id": "animotion-fade-in" }

// Output — full animation object including CSS code

3. list_categories

List all 20 animation categories with names, icons, colors, and counts.

// No input needed

// Output
{
  "categories": [
    { "id": "entrance", "name": "Entrance", "icon": "→", "color": "#3b82f6", "count": 65 },
    { "id": "exit", "name": "Exit", "icon": "←", "color": "#94a3b8", "count": 50 },
    ...
  ]
}

4. compose_animation

Compose custom CSS with your own duration, easing, delay, and selector.

// Input
{
  "animation": "animotion-bounce-in",
  "selector": ".my-modal",
  "duration": "0.8s",
  "easing": "cubic-bezier(0.175, 0.885, 0.32, 1.275)",
  "delay": "0.1s",
  "iterationCount": "1",
  "fillMode": "both"
}

// Output — ready-to-use CSS
// @keyframes animotion-bounceIn { ... }
//
// .my-modal {
//   animation: animotion-bounceIn 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.1s 1 both;
// }

5. suggest_animation

Describe your use case in natural language and get the best matching animations.

// Input
{
  "useCase": "modal appearing on screen with a bouncy effect",
  "count": 5
}

// Output — ranked suggestions with relevance scores
{
  "useCase": "modal appearing on screen with a bouncy effect",
  "suggestions": [
    {
      "id": "E30",
      "name": "Bounce In",
      "description": "Element bounces in with spring-like scaling",
      "cssClass": "animotion-bounce-in",
      "css": "...",
      "keyframeCSS": "...",
      "relevanceScore": 12
    }
  ]
}

6. get_animation_css

Get ONLY the CSS code — perfect for directly inserting into stylesheets.

// Input
{
  "id": "animotion-fade-in",
  "includeKeyframes": true
}

// Output — raw CSS string
// @keyframes animotion-fadeIn { from { opacity: 0; } to { opacity: 1; } }
// .animotion-fade-in { animation: animotion-fadeIn 0.6s ease-out both; }

7. search_icons

Search 9,000+ real SVG icons across all providers. Use instead of generating icons.

// Input
{ "query": "shopping cart", "provider": "all", "limit": 5 }

// Output — real SVGs from multiple providers
{
  "count": 5,
  "icons": [
    {
      "id": "lucide:shopping-cart",
      "name": "Shopping Cart",
      "provider": "lucide",
      "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" ...>...</svg>"
    }
  ]
}

8. get_icon

Get SVG code for a specific icon. Use provider:name format.

// Input
{ "id": "lucide:home" }

// Output — complete SVG ready to paste

9. list_icon_providers

List all 5 icon providers with counts and metadata.

10. add_custom_icon

Register your own SVG icon for the MCP session.

MCP Resources

The server exposes resources that AI agents can read:

URIDescription
animotion://catalogComplete animation catalog (JSON)
animotion://categoriesCategory list with metadata (JSON)
animotion://utilitiesAll utility CSS classes (CSS)
animotion://iconsIcon library stats and built-in icons (JSON)

PNG Animator

Upload any image (PNG, JPG, SVG, GIF) and apply any of the 745 animations to it.

How to use

  1. Visit the website and click PNG Animator tab
  2. Drag & drop your image or click to browse
  3. Select an animation from the dropdown (organized by category)
  4. Adjust duration, easing, and delay
  5. Preview the animation live
  6. Click Export CSS to copy the ready-to-use CSS code

What you get

/* Animotion: Bounce In */
@keyframes animotion-bounceIn {
  0% { transform: scale(0.3); opacity: 0; }
  50% { transform: scale(1.05); }
  70% { transform: scale(0.9); }
  100% { transform: scale(1); opacity: 1; }
}

.my-animated-image {
  animation: animotion-bounceIn 1s ease-out 0s 1 both;
}

Icons Library

9,000+ SVG icons available via MCP server (Lucide, Tabler, Bootstrap, Heroicons) + 120 built-in icons on the website. All icons use consistent 24x24 viewBox with stroke-based rendering.

Categories

CategoryCountExamples
UI Elements25home, search, settings, menu, close, bell, user, star, heart
Arrows & Direction20arrow-up, chevron-down, refresh, download, external-link
Media & Files15file, folder, image, camera, video, play, pause
Social & Communication15message, mail, phone, send, share, globe, wifi
Commerce15shopping-cart, credit-card, tag, gift, truck, wallet
Developer15code, terminal, git-branch, database, server, cloud, cpu
Miscellaneous15sun, moon, clock, calendar, flag, zap, coffee, pen

Usage

Visit the Icons tab on the website and click any icon to copy its SVG to clipboard.

<!-- Paste the SVG directly -->
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"
     stroke-linecap="round" stroke-linejoin="round">
  <path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/>
  <polyline points="9 22 9 12 15 12 15 22"/>
</svg>

Icons inherit currentColor, so they match your text color automatically.

Programmatic Access

// Load the icons data
const response = await fetch('js/icons.js');
// or include <script src="js/icons.js"></script>

// Access icons
const homeIcon = ANIMOTION_ICONS.icons.find(i => i.id === 'home');
document.getElementById('my-icon').innerHTML = homeIcon.svg;

Project Structure

css3-animations/
ā”œā”€ā”€ index.html                    # Showcase website
ā”œā”€ā”€ api.json                      # Machine-readable catalog (608KB)
ā”œā”€ā”€ LICENSE                       # MIT License
ā”œā”€ā”€ README.md                     # This file
│
ā”œā”€ā”€ css/
│   ā”œā”€ā”€ keyframes.css             # 500 @keyframes (Part 1)
│   ā”œā”€ā”€ keyframes-part2.css       # 341 @keyframes (Part 2)
│   ā”œā”€ā”€ style.css                 # Website UI styles
│   └── utilities.css             # Duration/delay/easing helpers
│
ā”œā”€ā”€ js/
│   ā”œā”€ā”€ data.js                   # Animation registry (745 entries)
│   ā”œā”€ā”€ icons.js                  # Icons registry (120 entries)
│   ā”œā”€ā”€ app.js                    # Website controller
│   ā”œā”€ā”€ icons-app.js              # Icons tab controller
│   └── png-animator.js           # PNG upload & animate
│
ā”œā”€ā”€ icons/
│   └── favicon.svg               # SVG favicon
│
ā”œā”€ā”€ mcp/
│   ā”œā”€ā”€ server.js                 # MCP v2 server (10 tools + 4 resources)
│   ā”œā”€ā”€ icon-loader.js            # Loads 9,000+ icons from npm packages
│   └── package.json              # MCP dependencies (includes icon libraries)
│
ā”œā”€ā”€ docs/
│   └── api.md                    # Detailed API documentation
│
ā”œā”€ā”€ scripts/
│   └── generate-api.js           # Regenerate api.json from data.js
│
└── .github/
    └── workflows/
        └── pages.yml             # GitHub Pages auto-deploy

Integration Examples

React

import './animotion/keyframes.css';
import './animotion/utilities.css';

function Modal({ isOpen, children }) {
  return isOpen ? (
    <div className="animotion-fade-in animotion-duration-300">
      <div className="animotion-zoom-in animotion-ease-spring">
        {children}
      </div>
    </div>
  ) : null;
}

Vue

<template>
  <transition enter-active-class="animotion-fade-in-up" leave-active-class="animotion-fade-out-down">
    <div v-if="show">Content</div>
  </transition>
</template>

Tailwind CSS

Use alongside Tailwind — Animotion classes don't conflict:

<div class="bg-white rounded-lg shadow-md p-6 animotion-card-lift">
  Tailwind styling + Animotion animation
</div>

Angular

@Component({
  template: `<div [class]="animClass">{{ message }}</div>`
})
export class MyComponent {
  animClass = 'animotion-fade-in animotion-duration-500';
}

Browser Support

Animotion works in all modern browsers:

BrowserVersion
Chrome60+
Firefox55+
Safari12+
Edge79+
Opera47+
iOS Safari12+
Chrome Android60+