Skip to main content
Glama

Feature tour

Ten short videos, one per area. Every clip, picture and number in them comes from the real spine-mcp server, on Bolt (the demo character) and on Esoteric's example characters (scripts/make-feature-media.mjs makes them again). Click one for the MP4 with sound.

Related MCP server: spine-mcp

Why

Animators spend hours on work that is precise but not creative: checking loops, offsetting overlap bone by bone, mirroring a gesture, baking physics, re-exporting at three scales, hunting the key Spine dropped without a word. spine-mcp gives an agent such as Claude Code the tools to do that work with numbers and pictures instead of guesses, while the artistic decisions stay with you: every edit is a new animation under a new name, and nothing is written without a backup and a verified re-export. Around that core it covers the rest of the pipeline a 2D animator touches: a PSD into a project or a starting rig, new art into an existing project, walk and run cycles, idle layers and lip sync, review cuts and frame-by-frame video checks, and the hand-off into Unity.

What it can do

Understand a project

Project summary straight from the CLI, a change-aware JSON export cache, structure, raw sections or the exact keys of one animation. Pick up where you left off: an instant status (no CLI call) with the last steps spine-mcp took on the project and whether the file changed since.

Catch problems

Keys Spine drops on import without a warning (missing bones, slots, attachments, constraints, events), bad mesh and weight indices, loop seams and single-frame pops, transition pops played through AnimationState like a game, a performance budget in the terms of Spine's Metrics view, rig QA (names, unused parts, weights, missing images, weights that fold when a bone turns, joints that open), mesh folds and joints opening inside animations, skin combinations and a folder audit for CI.

Measure motion

Per bone: rotation range, extent, angular speed, holds, seam step. Per animation: key poses, pose intervals, the ease of every segment. A/B comparisons in numbers and pictures.

Start from a PSD

A layered PSD (an artist's file or an automatic decomposition), or a folder of PNG parts with a layout (See-through, a cut-and-fill tool), becomes a new Spine project: every layer placed, draw order kept, bones from groups, PhotoshopToSpine tags read, masks baked, checked against the PSD, with an art check (joints that will open a gap, covered parts, specks, oversized art). Or a starting rig: suggested joints, meshes traced from the art, smooth weights at knees and elbows, IK, checked in test poses.

Animate from the rig

Walk and run cycles (feet planted through stance, IK every frame or your rig's own leg and arm IK, footstep events; a front view for characters drawn facing the camera), blocking from poses (a pose library sampled from your animations) and a spline pass that never overshoots, breathing idles, look-ats, follow-through, faces: blinks with lids sliding to your shut pose and lashes hidden, placed over an idle's pose changes the way animators hide them, eye darts with a drift, (spine-core's physics baked onto bones that have none), lip sync from a dialogue file (phonemes with Rhubarb Lip Sync, or loudness), a 2.5D head turn and volume-preserving squash and stretch by mesh deform (bones on the deformed parts, such as an antenna or the shoulders, move with them).

Edit animations

Built on the server, so large animations never pass through the chat: scale, retime, overlap and follow-through with exact bezier splits, loop fixes, easing, slot colors / attachments / mesh deform, a world-space mirror (deform included), leg swaps, repeat, physics baked into keys, event keys at detected foot contacts.

Take in foreign files

JSON written by another tool or an older version: weight order, stretched regions, 4.2 constraints, clips and key hygiene are reported, and fixed on the way in.

Keep keys clean

Generators key on whole frames with fitted bezier curves and round values. The clean operation does the same for baked timelines and reports the drift: a production intro went from 1,553 keys to 949 with bones within 1.6 units.

Team rules

One SPINE_MCP_PROFILE JSON holds default arguments, atlas limits, Unity texture and SkeletonGraphic settings and sprite slices. Unity checks can run on the exact spine-unity commit a game has locked.

Edit the rig, in a new file

Bones, setup pose, IK and physics constraints, events, skins, removing a constraint: written into a new .spine with a report of everything Spine's JSON round trip changed. The original is never touched.

Move animations

To another character or project by name (exact, mapped, case/separator-insensitive), with optional size retargeting and a report of every key that could not move.

Guard art re-imports

Snapshot first, then see what the re-import broke (lost or silently hidden keys, wiped weights, meshes turned into regions), what changed, and where each animation now plays differently. Or skip the re-import: new PSD art goes straight into the image files, cut to the frames the project already draws them in, with the art each mesh would cut off reported before anything is written.

Ship and verify

Runtime export (JSON / binary + atlas at several scales) for a target (mobile, desktop, web presets, one atlas per skin, atlas fill and texture memory) checked in spine-core; then imported with spine-unity in a headless Unity (built-in or URP, Gamma or Linear) and rendered there and with spine-webgl in headless Chrome, compared bone by bone and picture by picture with Spine's own render, the atlas measured under ASTC and ETC2 device compression, and the CPU and garbage per skeleton measured in a headless player, with and without spine-unity's threaded update, and a UI fade through a CanvasGroup checked against the right blend. Into your Unity project as a SkeletonAnimation, UI SkeletonGraphic or SkeletonMecanim prefab with the mix durations you validated.

Show it

Spine's own renderer, contact sheets the agent can look at (cached while nothing changed), and labelled WebP / GIF / MP4 showcases in one call.

Review like a lead

A review cut (real time, then half speed, every frame labelled, audio under the real-time pass), onion skin, arcs with a dot per frame (the spacing chart) and value curves with keys marked, timing read from a reference video and compared with your animation, and frame-by-frame inspection of any video (showreels, breakdowns, captures).

Stay safe

Dry-run by default, sha256 backups, animation-only imports, re-export comparison, automatic rollback, one write per project at a time, a step log per project, restore anything. Works with the editor open: writes then go to a verified side copy you bring in with Import Project. Checked on every Spine release: a conformance suite re-runs the CLI behaviour the write path relies on.

All 38 tools with what each one does and writes: Reference › Tools.

Highlights

Real outputs from the server, on Bolt (the demo character in demo/bolt, art and rig made for this repository) and on Esoteric's example characters. Each one in full, with its numbers: Reference › In depth.

Edit, then prove it

You: Make Bolt's hop bigger and 20% slower, with the arms lagging a bit. Dry-run first. … Looks good, apply it.

// spine_derive_animation: scaleValues 1.35 (rotate), retime 1.2, offsetBones upper-arm(s) 0.06 s
→ { "mode": "applied", "backup": { "id": "2026-11-06T09-47-50-939Z" },
    "verification": { "animationMatches": true, "otherAnimationsUnchanged": true, "structureUnchanged": true, "differences": [] } }

hop

hop-big, written by spine-mcp

upper-arm range 67.0° → 92.0°duration 1.00 s → 1.27 skey poses 5 → 10

Animation from the rig

Walk and run through the rig's own leg IK, a 2.5D head turn, squash and stretch, breathing, a look, follow-through and blocking to spline, each written into the project and verified. Watching them frame by frame found bugs a test now measures (arms held still by IK, crossed legs on a front-facing walk).

Mirror in world space, deform included

Every bone lands exactly on its partner's mirror image (checked frame by frame in spine-core); mesh deform follows vertex by vertex. The owl's left look, mirrored by spine-mcp (middle), next to the artist's own right:

Physics baked into keys

Spine does not bake physics. bakePhysics simulates like a game, writes the result as keys, closes the loop and checks itself against the live simulation: worst difference 0.05 units on Bolt's hop, as bezier keys on whole frames.

Faces

A blink built from the artist's own shut pose (10 lid and brow bones), placed where the head moves the way animators hide a pose change, eye darts that stay inside a clamped look range; and a face audit for animations already made.

Checked in the game

Exports are imported with spine-unity in a headless Unity and with spine-webgl in headless Chrome, then compared bone by bone (within 0.0001 units) and frame by frame with Spine's own render. Animator transitions are played the way SkeletonMecanim plays them: on Bolt, hop → idle snaps the antenna 38.8 units in one frame, and setupKeys adds the keys that fix it.

Review like a lead

Onion skin, arcs with a dot per frame and value curves with the numbers behind them; timing read from a reference video (it finds a 1.21× speed ratio and lines up 6 peaks within a frame); any video gone through frame by frame.

From a PSD to a rig

13 layers into a Spine project whose render matches the PSD (overlap 0.99), an art check, then a starting rig: suggested joints, traced meshes, smooth weights, IK, posed by Spine in two test poses.

This logo is a Spine rig

A 13-bone skeleton generated by demo/logo/build.mjs from the same parametric art as logo.svg, so its last frame is the logo, pixel for pixel. The idle's overlap down the chain was added with spine-mcp's own offsetBones. Rendered by Spine.

Use cases

Where it saves the most time, and what to ask.

Use case

Ask something like

What you get

Delivery check before a character goes to the game

"Check hero.spine before I ship it: our transitions are idle→run→jump, mix 0.2 s, mobile budget 1 draw call."

Dropped keys and seams, popping transitions with causes, the performance budget, a verified export and a Unity / web render comparison, in one report.

Polish pass on existing animations

"Add follow-through to the tail in walk and ease the landing in jump. Show me before and after."

New animations next to the originals, A/B numbers and a side-by-side render to approve.

Variants without redoing work

"Make a 20% faster, bigger hop; mirror wave for the other arm; make idle a 2-cycle loop."

hop-big, wave-mirrored, … written and verified, originals untouched.

A walk or run from the rig

"Give the robot an in-place walk and a run, through its leg IK, with footstep events. It faces the camera."

Planted feet through stance, hip bob and arm swing, the rig's own leg and arm IK targets keyed, a footstep event at each contact; facing the camera, a march in place with foreshortened legs; then a render to judge.

Safe art updates

"Snapshot it, I'm re-importing the PSD." … "What broke?"

Lost or hidden keys, wiped weights, meshes turned into regions, and which animations now look different.

Engine handoff

"Put the hero into my Unity project with idle as the start animation and the mixes we checked; then make sure it looks the same there."

The SkeletonDataAsset, a SkeletonAnimation prefab and the mix durations in your project, verified bone by bone; later art updates replace the data in place (scenes stay linked). Plus a render comparison that catches premultiplied-alpha mistakes.

Matching a reference

"Here is the capture of the attack I'm matching; crop to the character and compare my attack."

Motion peaks, holds and cuts of the reference as a frame table and contact sheet, and how your timing differs: speed ratio, start offset, frames per accent.

Picking up the next day

"Where were we on hero.spine?"

The last steps spine-mcp took (written, staged, rolled back, restored), whether the project was saved in the editor since, backups and what still waits in the staging copy, instantly.

24 use cases with tips: Reference › Use cases · step-by-step recipes: USAGE.

Not the right tool for: production rigging of an existing character, or the first creative pass on an acting shot. Those stay with you in the editor; spine-mcp checks, measures, varies and ships what you made.

How a write stays safe

flowchart LR
  A[validate the new animation<br/>missing refs block it] --> V{older Spine<br/>major.minor?}
  V -- "yes, no allowUpgrade" --> X[refuse]
  V -- no --> B{project changed<br/>since read?}
  B -- yes --> X
  B -- no --> C[sha256-verified backup]
  C --> D["Spine CLI: -a NAME --to SKELETON -r<br/>(animation-only import)"]
  D --> E[re-export + compare<br/>timelines / behaviour]
  E -- any warning or mismatch --> R[restore backup]
  E -- identical --> OK[applied]
  OK --> L[step log<br/>spine_status]

With a Spine editor window open, the same steps run on a staging copy instead of the project (how).

  • Only animation import is used: a full JSON re-import would drop editor-only data, -a changes nothing else (research).

  • Spine exits with code 0 even when it drops keys; spine-mcp treats every such warning as a failure. One case prints nothing at all: a key to an attachment the animation's own skeleton does not have becomes a silent "hide" key (G91), so the validator refuses it before the CLI is called.

  • One write per project at a time. The .spine binary is never parsed or patched.

  • Each Spine call starts Spine headless (about 3 s) and exits; reads come from an export cache while the project is unchanged.

Also: writes with the editor open, a step log to pick up where you left off, and every Spine release checked by 24 probes.

Tested

535 tests

445 unit (every derive operation against spine-core frame by frame, generators measured, rollback paths, platform layer), 71 against the real Spine 4.3.26 CLI, 19 in a headless Unity with spine-unity; on Windows with Spine and Unity all pass except two mesh-fit checks that fail there on 0.56.0 too (STATUS)

Every tool, end to end

All 38 tools through the real MCP server over stdio, 75 calls on copies of Bolt and spineboy, writes and restores included

36 official projects

A full sweep over 213 animations: export, validation, derive invariants, physics bake accuracy, rig QA, a real write + verify + restore and a render per project

Every Spine release

24 probes of the CLI behaviour the write path relies on, against a saved baseline

CI

macOS, Linux and Windows, including a non-ASCII folder

What each suite covers and how to run it: Reference › Tested.

Quick start

Requirements: macOS or Windows, Node 22+ and your own Spine 4.3 Professional license (spine-mcp does not include Spine; reading an exported JSON works without it). Optional: Unity Hub, Google Chrome, ImageMagick, ffmpeg, Rhubarb Lip Sync (which tool needs which: Reference › Setup).

git clone https://github.com/berkanisk/spine-mcp.git && cd spine-mcp
npm install
npm run build
claude mcp add --scope user spine -- "$(command -v node)" "$PWD/dist/index.js"

Use a stable absolute node path (with fnm: ~/.local/share/fnm/aliases/default/bin/node). Any other MCP client takes the same command:

{ "mcpServers": { "spine": { "command": "/absolute/path/to/node", "args": ["/absolute/path/to/spine-mcp/dist/index.js"] } } }

Then, in a new session:

Inspect /absolute/path/to/spine-mcp/demo/bolt/bolt.spine and show me wave.

Windows (PowerShell), environment overrides and optional tools: Reference › Setup.

Limits

  • Existing rigs are never rewritten in place: rig edits go into a new file; meshes and weights of an existing rig stay with the editor.

  • No live editor link: with Spine open, writes go to a verified side copy you bring in with Import Project.

  • Spine Professional is needed for everything that calls the CLI; reading an exported JSON works without it.

  • Generated motion is a starting point: it reads the rig and is measured, but knows nothing about the character's intent.

  • Field testing on artist PSDs, real dialogue and real game captures is still to come. Windows with a licensed Spine and Unity is field tested (research/06: all 7 checks), and so are See-through PSDs and a game's own .skel.bytes.

All of them, with what was verified: Reference › Limits · Roadmap.

Docs

  • Reference: every tool, use cases, each area in depth, safety, setup, tests, limits

  • Usage: prompts, every tool parameter, derive operations, workflows

  • Architecture: modules and the write path

  • Changelog

  • Working notes: status, backlog, decisions, verified Spine pitfalls and a one-page summary (mostly Turkish)

  • Research: survey of 16 existing Spine MCP repos, Phase 0 experiments, audit, capability and gap analysis against Spine users' reported problems (Turkish)

Contributing

Issues and pull requests are welcome: see CONTRIBUTING.md. Security reports: SECURITY.md.

License

The code is under the MIT license. That does not cover Spine or Esoteric's art:

  • You need your own Spine license. spine-core and spine-webgl are npm dependencies under the Spine Runtimes License, which requires one for each user.

  • Raptor, owl, mix-and-match and spineboy in the media are © Esoteric Software, redistributed with their license files, and may not be used commercially.

  • Demo music is by Sascha Ende (CC BY 4.0) and UI sounds are by Kenney (CC0).

Details: THIRD_PARTY_NOTICES.md. Bolt and the logo rig were made for this repository. Videos made with HyperFrames.

Spine is a product of Esoteric Software. This project is independent and not affiliated with or endorsed by Esoteric Software.

Available Tools

38 tools
spine_add_animationAdd animation to projectA

Adds one Spine 4.3 JSON animation to a .spine project. Dry-run validates against the skeleton; apply backs up, imports only this animation through the CLI, re-exports, verifies and rolls back on any mismatch. Existing names need replace; prefer a new name. Times in seconds; rotate uses value; bezier curve is absolute [cx1,cy1,cx2,cy2] per channel.

Inputs: name (required), project (required), animation (required), apply, +6 more.

spine_auditAudit a folder of Spine projectsB
Read-only

Validate, rig QA and budget on every .spine and skeleton .json under a folder: one ok/fail row per skeleton (strict: validation warnings fail too). For release checks and CI.

Inputs: folder (required), max, limits, strict, +1 more.

spine_auto_rigRig a layered PSD into a new Spine projectB

Starting rig in a new project from a layered PSD or parts + layout: bones at joints, traced meshes, weights, optional two-bone IK; hidden lids rigged shut-collapsed. Without bones: suggests a skeleton over the art (nothing written; riders: one character sits on another; rigFrom: an approved rig's joints); pass back as bones. With bones: dry-run with checks; apply writes, validates, runs rig QA, renders test poses. Never overwrites.

Inputs: output (required), ik, psd, mesh, +13 more.

spine_budgetPerformance budgetA
Read-only

Spine Metrics over the setup pose and every frame: attachments, vertices, vertex transforms, triangles, area, clipping, draw call estimate, timelines, constraint costs; worst values with animation@time. limits for pass/fail; draw calls need atlas or pack (~4 s).

Inputs: input (required), fps, pack, skin, +3 more.

spine_compare_animationsCompare two animationsB
Read-only

A/B of two animations of one skeleton: duration, motion ratio, per-bone changes (biggest first), timing structure; optional contact sheets.

Inputs: a (required), b (required), input (required), fps, +4 more.

spine_derive_animationDerive animation variantA

Builds a new animation from an existing one with ops applied in order on the server, then adds it like spine_add_animation (validated, backed up, verified; dry-run unless apply). Ops: docs/USAGE.md#derive-operations.

Inputs: ops (required), name (required), source (required), project (required), +7 more.

spine_doctorCheck Spine setupA
Read-only

Checks the Spine CLI, editor version and license, spine-core version and work folder. Run first when something fails.

Inputs: no named parameters.

spine_editor_statusSpine editor status and import checkC
Read-only

Is a Spine editor window open (and likely on this project)? While it is, writes go to a verified staging copy. With project: what still waits in the staging copy; animations confirms each one after Import Project and a save.

Inputs: staged, project, skeleton, animations.

spine_exportExport runtime filesA

Exports runtime files (JSON and/or .skel plus a packed atlas, optional scales), verified with spine-core in a temp folder before copying to outputDir (no overwrite unless set; project untouched, ~3-5 s). Reports page fill and texture memory. sweep: ranks atlas settings by texture memory and pages, writing nothing.

Inputs: project (required), pot, atlas, clean, +16 more.

spine_export_jsonExport project to JSONA
Read-only

Exports a .spine project's skeletons to JSON in the cache folder (never next to the project); re-exports only when the project changed.

Inputs: project (required), refresh.

spine_generate_animationGenerate animation from the rigA

A new animation of one type (fill only that type's object), added like spine_add_animation (validated, backed up, verified; dry-run unless apply). Missing bones/slots: suggestions by name, nothing written. breathe: torso scale or figure8, followers later; restStart. sway: chain swing. settle: decay after a gesture. blink: eye swaps and/or lid bones; onPoses hides head moves. gaze: eye darts between fixations; brows lift, arch, dip. lookAt: eyes lead, neck-to-head follows. followThrough: secondary motion baked over a source. turn: 2.5D head turn; squash: squash/stretch (mesh deform). walk: in-place cycle. blocking: pose-to-pose. lipSync: mouth/jaw from audio. Seconds, degrees, skeleton units; docs/USAGE.md#generate-options.

Inputs: type (required), project (required), gaze, name, +17 more.

spine_import_layersPSD layers to a new Spine projectA

New Spine project from a layered PSD: a region per layer at its canvas position, draw order from layer order, bones from groups (or PhotoshopToSpine tags), images next to it; masks baked, unsupported effects reported. Or json: PhotoshopToSpine's output (checked). Or parts: PNGs placed by a layout JSON (See-through, cut-boxes or {parts:[{file,x,y|bbox|center,order,bone,pivot,slot}]}). Dry-run by default, never overwrites; verified by re-export and a render against the PSD or the placed parts. Places art only.

Inputs: output (required), psd, json, apply, +8 more.

spine_inspectInspect skeletonA
Read-only

Skeleton structure. view summary (default): counts, bone tree, constraints, per-animation stats; bones|slots|skins|constraints: raw section JSON; animation: every timeline with exact keys.

Inputs: input (required), kind, view, owner, +3 more.

spine_list_backupsList project backupsA
Read-only

Backups made before writes (newest first), ids for spine_restore_backup.

Inputs: project (required).

spine_measureMeasure animation motionB
Read-only

Samples an animation in spine-core (constraints, physics warmed up); per bone: rotation range, path, peak speeds, pops, holds, loop seam. rootMotion: what SkeletonRootMotion reads (travel, sliding feet, in-place speed). parts: how far each slot travels.

Inputs: input (required), animation (required), fps, skin, +7 more.

spine_mix_checkCheck animation transitions for popsB
Read-only

Plays transitions with spine-core's AnimationState like a game (mixes, optional base track), switching at several points; reports pops with phase and likely cause, timelines first keyed after 0, and events lost inside the mix. runtime mecanim: as spine-unity's SkeletonMecanim, plus the keys each incoming animation needs (setupKeys).

Inputs: input (required), at, fps, base, +11 more.

spine_motion_visualOnion skin, arcs and curvesB
Read-only

Onion skin, bone arcs (one dot per frame) and value curves of one animation as an image, plus the numbers. Bones default to the 3 that travel furthest.

Inputs: project (required), animation (required), fps, mode, +4 more.

spine_project_infoSpine project infoA
Read-only

Fast CLI summary (Spine -i): editor version, FPS, skeletons, bone/slot/constraint/animation lists. Several paths per call (one ~3 s CLI start).

Inputs: paths (required).

spine_reference_timingTiming from a reference videoB
Read-only

Timing from a reference video (optional crop): motion peaks, holds, cuts and repeat period as a frame table, graph and sheet. compare aligns a Spine animation on the peaks (speed ratio, offset, per-peak frames).

Inputs: video (required), end, fps, crop, +3 more.

spine_reimport_diffWhat a re-import changedB
Read-only

Compares a project with a snapshot (default latest) or another .spine/.json: what broke (lost keys, weights, meshes, removed items) and what changed, then where playback of common animations now differs.

Inputs: project (required), fps, before, skeleton, +1 more.

spine_render_framesRender animation framesA
Read-only

Renders an animation with Spine's renderer (~4 s, cached) and returns a contact sheet. No MSAA or physics warm-up: for checking, not final video.

Inputs: project (required), animation (required), fps, cell, +5 more.

spine_restore_backupRestore project backupA
Destructive

Puts a backup back. Dry-run by default; apply backs up the current file first, then restores atomically.

Inputs: project (required), backupId (required), apply, force.

spine_review_videoReview videoB

Review cut MP4: each animation rendered by Spine at each speed, every frame labelled (animation, speed, frame, time); optional audio under real-time passes and a title card. Writes only output.

Inputs: output (required), project (required), animations (required), fps, +10 more.

spine_rig_editRig edits into a new projectA

Adds bones, IK, physics, events and skins, sets setup poses, removes constraints, traces regions into meshes in place (meshRegion), copies meshes from another rig (copyMesh); written to a NEW .spine via JSON import (original untouched), listing what else the round trip changed. Dry-run by default; one skeleton.

Inputs: edits (required), output (required), project (required), apply.

spine_rig_qaRig QAA
Read-only

Rig hygiene: names (spaces, clashes, default names, mixed left/right styles), unused bones, attachments, slots and events, bad setup scale, weights not summing to 1, too many influences, weights that fold when a bone turns, joints that open, art a mesh cuts off, missing or unused images. Complements spine_validate.

Inputs: input (required), skeleton, maxInfluences.

spine_showcaseMake a showcase animationA

1-4 animations rendered by Spine side by side, labelled, as an animated .webp (alpha), .gif or .mp4 written only to output. For before/after and reels. Needs ImageMagick plus img2webp or ffmpeg.

Inputs: items (required), output (required), project (required), fps, +8 more.

spine_skinsSkin and skin combination checkC
Read-only

Checks each skin, or mix-and-match combinations: attachment counts, slots several skins set (last wins), slots none fills, and each one's budget over every frame. atlas or pack for exact draw calls.

Inputs: input (required), fps, pack, atlas, +7 more.

spine_snapshotSnapshot a projectA

Saves a labelled, verified backup copy before risky editor work (compare later with spine_reimport_diff). Without label: lists snapshots.

Inputs: project (required), label.

spine_statusProject status and recent spine-mcp stepsA
Read-only

Instant, no CLI: file state, editor window, staging copy, backups, spine-mcp's last steps on the project and outside changes since. Call first when resuming work.

Inputs: project (required), recent.

spine_timingAnimation timing reportC
Read-only

Timing structure from the keys: key poses and intervals, segment durations, ease type per segment, holds.

Inputs: input (required), animation (required), bones, limit, +2 more.

spine_transfer_animationTransfer an animation to another skeletonA

Copies an animation to another skeleton or project, matching names (exact, map, then case/separator-insensitive); reports what matched, renamed or could not move, then adds it like spine_add_animation (dry-run by default). copies: merge mode for animators on copies of one project: what each copy added or changed, conflicts (resolve with prefer), then writes into the base (to).

Inputs: to (required), map, from, name, +12 more.

spine_unity_checkCheck the export in UnityC
Read-only

Fresh export into a throwaway Unity project, every animation vs spine-core bone by bone (~30 s); perf: CPU/GC per skeleton. Options: docs/USAGE.md#into-your-unity-project.

Inputs: project (required), perf, format, render, +18 more.

spine_unity_importImport into a Unity projectB

Imports a .spine into a Unity project with spine-unity (data, atlas, materials, mixes, prefab), then compares it bone by bone with spine-core; reports texture settings and render pipeline. Dry-run by default. update: replace in place (backed up, GUIDs kept). With Unity open, only files are copied. audit: read-only scan (version, data files, API changes).

Inputs: unityProject (required), loop, skin, apply, +15 more.

spine_update_imagesBring new PSD art into an existing projectA

Updates a project's image files from a layered PSD without touching the .spine: layers matched to images and cut to their frames, so meshes and animations stay valid. placement psd takes the PSD's layout; grow enlarges a region image. Dry-run with before/after renders; apply backs up and writes. restore: a backup id.

Inputs: psd (required), project (required), grow, only, +6 more.

spine_validateValidate skeletonB
Read-only

Finds problems: duplicate names, bone order, missing references (Spine drops them on import), mesh indices, key order, curves, keys on physics bones; samples every animation in spine-core (NaN, loop seams, clamps, invisible keys, mesh folds, joints opening). face: blinks vs pose changes and mouth swaps, lashes while shut, mouth bones, blink timing.

Inputs: input (required), fps, face, runtime, +2 more.

spine_video_framesExact video framesB
Read-only

Exact video frames by number (spine_video_inspect's numbering) as a labelled sheet; diff marks changes in red, onion blends them. Up to 48 per call.

Inputs: video (required), end, fps, crop, +6 more.

spine_video_inspectInspect a video frame by frameB
Read-only

Frame-by-frame video check: encoding (VFR, size, pixel format, audio), segments at cuts and transitions with hold pattern (ones/twos), flashes, stutters, dropped frames, motion peaks, audio onsets vs cuts/peaks; an event list, per-frame curves and an overview sheet. verify compares a segment with a Spine animation. Exact frames: spine_video_frames.

Inputs: video (required), end, fps, crop, +3 more.

spine_web_checkCheck the export on the web runtimeB
Read-only

Renders a fresh export with spine-webgl in headless Chrome and compares every frame with Spine's render (silhouette IoU, colour difference, worst frame). Needs Chrome or CHROME_BIN.

Inputs: project (required), fps, scale, animations.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 38 tools

    Disambiguation3/5

    The tools are richly described, but several clusters are easy to confuse: validate vs. rig_qa vs. audit vs. budget, add vs. generate vs. derive vs. transfer_animation, and render_frames vs. showcase vs. review_video vs. motion_visual. Descriptions help separate them, but an agent still needs careful reading before selecting the right tool.

    Naming Consistency4/5

    All tools use the spine_ prefix and snake_case, giving a predictable namespace. The main inconsistency is that many names are verb_noun while others are noun-only or adjective-like (doctor, status, timing, skins), but the set remains readable and coherent.

    Tool Count2/5

    With 38 tools, this surface is well beyond the typical 3-15 range and is heavy for an agent to navigate reliably. The domain is complex, but many related checks and rendering helpers could be consolidated or grouped to reduce selection burden.

    Completeness4/5

    Coverage is broad across import, rigging, animation generation, validation, rendering, export, engine checks, backups, and status inspection. Minor gaps remain, such as explicit animation deletion/renaming or direct keyframe editing, but most workflows have a viable path.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Local MCP server for automating Spine projects via the official CLI, enabling AI tools to inspect, export, import, and add animations to .spine files.
      16
      13 npm
      23
      Apache 2.0
    • F
      license
      B
      quality
      C
      maintenance
      MCP server for reading, validating, and modifying Spine 4.1.24 JSON animation files, with tools for animation timeline editing, validation, preview, and agent integration.
      36
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables authoring, preview, and export of Spine 2D skeletal animations via natural language from Claude Code or any MCP client, with a web dashboard and tools for keyframing, templates, and GIF preview.
      7
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI clients to directly control Spine 3.8.75 animation workflows through 55 MCP tools, including reading projects, editing keyframes, manipulating skeletons, constraints, meshes, atlases, and rendering previews.
      22 npm
      24
      MIT