Figma Motion MCP
Allows programmatic creation and manipulation of motion animations (keyframes, animation styles) in Figma via its Motion API, enabling AI agents to apply, read, and remove motion timelines on selected nodes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Figma Motion MCPapply fadeInUp to selection, duration 0.5s"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Figma Motion MCP
Claude Code → MCP → our Figma plugin → Figma Plugin API. Authors Figma Motion
(keyframes / animation styles) programmatically from a prompt. No Figma agent, no use_figma.
Claude Code ──stdio(JSON-RPC)── MCP server ──ws://localhost:3055── plugin ui.html ──postMessage── plugin main thread ── figma.* (Motion API, Beta)The MCP server process also hosts the WebSocket bridge, so there is no separate relay.
What it can do
MCP tool | Plugin command | Purpose |
|
| selected node id/name/type |
|
| confirm Motion (Beta) API is exposed in your build |
|
| current timelines / animated props / tracks / styles |
| (server local) | built-in code templates |
|
| resolve template+params → apply keyframe tracks |
|
| raw keyframe tracks |
|
| timeline length (s) |
|
| delete tracks and/or applied styles |
|
| native preset styles |
|
| apply a native preset |
Create / modify / delete are all covered. Template resolution runs server-side — the plugin only ever receives concrete tracks, so it stays dumb and templates are versioned here.
Related MCP server: Figma MCP Bridge
Setup (teammates: one command)
The folder is self-contained (no monorepo deps). Hand someone this folder, they run:
cd figma-motion-mcp
./setup.shsetup.sh does npm install, resolves your absolute node path (nvm-safe), and registers
the MCP server figma-motion at local scope (this project only, not committed — so
each teammate registers their own; no shared/hardcoded paths). It prints the remaining
manual steps.
Manual equivalent (if you prefer / no claude CLI)
npm install
claude mcp add figma-motion -- "$(command -v node)" "$(pwd)/server/mcp-server.js"
claude mcp get figma-motion # verifynvm users: the absolute node path matters — the MCP subprocess won't inherit your shell PATH.
setup.sh/ the$(command -v node)form handles this automatically.
Then: run the plugin in Figma
Figma desktop → Plugins → Development → Import plugin from manifest… → pick
figma-motion-mcp/plugin/manifest.json. Open a NEW Claude session (it auto-starts the
server + WS bridge); the panel should turn green "Connected — bridge ready".
First run — runtime probe (do this once)
Typings (@figma/plugin-typings@1.130.0) confirm the Motion API contract, but it is Beta
and gated per build/seat. Before relying on it:
In Figma, select any node, then run the plugin.
In Claude: "run probe".
Confirm
applyManualKeyframeTrack: "function"andfigma.motionis non-null.animatedPropertiesshows the real field names for your build — if any template name mismatches, fix it inserver/templates.js.
If applyManualKeyframeTrack is "undefined", Motion is not enabled in your Figma build yet.
Example flow
1) Select a frame/layer in Figma.
2) "get_selection" → nodeId
3) "apply fadeInUp to <nodeId>, duration 0.5" → apply_motion_template
4) "read_motion <nodeId>" → timelines / animatedProperties
5) "nudge TRANSLATION_Y keyframe to 32→0" → apply_keyframes
6) "remove OPACITY motion from <nodeId>" → remove_motionNotes / limits
Motion API is Beta — signatures may change. Write calls are wrapped; typings pinned to 1.130.0.
No native style publishing (apply-only). Reuse lives in
server/templates.js.Single-client MVP — newest plugin connection wins.
No
SCALEfield — useSCALE_XY(corrected vs the original draft spec).stdout is JSON-RPC only — all server logs go to stderr.
Override the bridge port with
FIGMA_MOTION_WS_PORT(default 3055; updateui.htmlURL to match).
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/seongwoo-choi-imweb-me/figma-motion-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server