
Open-source React animations, Motion components and WebGL shaders.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get one Subframe Motion Library example: its complete React source; how it looks and moves; adapt notes naming the code that drives the motion and what to change; the npm packages to install (none means React only); the images its code loads from /motion/assets/ with download URLs (serve them there or change the paths); reduced-motion behavior and limitations; its licence and upstream credit; related examples; the guidance topics worth reading; and a preview image. Use a slug from search_motion_examples or from a www.subframe.com/motion/<slug> URL. This writes no files: adapt the code to the project, keep its licence header, and test it there. The code targets React 19; with React 18 server rendering, move its inline <style> CSS into a stylesheet, since React 18 escapes the CSS's quotes and > characters.
The example's slug, e.g. 'slipstream'.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http motion https://mcp.subframe.com/motion/mcp
Get one Subframe Motion Library example: its complete React source; how it looks and moves; adapt notes naming the code that drives the motion and what to change; the npm packages to install (none means React only); the images its code loads from /motion/assets/ with download URLs (serve them there or change the paths); reduced-motion behavior and limitations; its licence and upstream credit; related examples; the guidance topics worth reading; and a preview image. Use a slug from search_motion_examples or from a www.subframe.com/motion/<slug> URL. This writes no files: adapt the code to the project, keep its licence header, and test it there. The code targets React 19; with React 18 server rendering, move its inline <style> CSS into a stylesheet, since React 18 escapes the CSS's quotes and > characters.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The example's slug, e.g. 'slipstream'. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The example's slug, e.g. 'slipstream'."
}
}
}Get Subframe's guidance for designing motion well, by topic: principles (whether to animate at all), timing (durations, curves, springs), enter-exit (menus, dialogs, toasts), feedback (hover, press, state, loading), scroll, ambient (loops, backgrounds, shaders), text-and-numbers, performance, accessibility and adapting (turning a library example into project code). Read the relevant topics before designing, adapting or reviewing any animation, not only library examples.
| Argument | Type | Description |
|---|---|---|
| topics* | array | The topics to read. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"topics"
],
"properties": {
"topics": {
"type": "array",
"items": {
"enum": [
"principles",
"timing",
"enter-exit",
"feedback",
"scroll",
"ambient",
"text-and-numbers",
"performance",
"accessibility",
"adapting"
],
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "The topics to read."
}
}
}Search the Subframe Motion Library for React animation examples. Describe what you want in plain words — the effect, the element, how it should feel, or, when matching a screenshot, what it looks like and what moves ('glowing border sweeping around a dark pricing card', 'playful press feedback for a like button', 'calm shader background behind a headline'). Results come most relevant first, with how each one looks; call get_motion_example with a slug for its code. If nothing fits closely, the result says so. Search reads plain language but not negations, so put hard constraints in the filters (runtime react means no animation library). Leave the query empty to browse a category or runtime.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many examples to return. Ask for more when you want variety to choose from. |
| query | string | What you're looking for, in plain words. Omit to browse. |
| runtime | string | Only return examples built this way: react needs only React, motion also needs the motion package, webgl draws with WebGL. |
| category | string | Only return this category. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 12,
"maximum": 30,
"minimum": 1,
"description": "How many examples to return. Ask for more when you want variety to choose from."
},
"query": {
"type": "string",
"maxLength": 500,
"description": "What you're looking for, in plain words. Omit to browse."
},
"runtime": {
"enum": [
"react",
"motion",
"webgl"
],
"type": "string",
"description": "Only return examples built this way: react needs only React, motion also needs the motion package, webgl draws with WebGL."
},
"category": {
"enum": [
"Components & interactions",
"Animation & motion",
"WebGL & shaders"
],
"type": "string",
"description": "Only return this category."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 13, 2026.