Model Context Protocol server

RigMuse MCP

RigMuse, as tools any model can call. 39,672 motion-capture clips that land as an FBX in the folder your engine watches, and a browser design studio that hands back a document with the type still typeable.

Install

Pick what you use. The hosted server is a URL and nothing else; the downloadable one adds the four tools that write into a folder on your own machine.

Client
Server

Designing in the editor

The other half of RigMuse is the design studio at rigmuse.com — a PSD editor that runs in the browser. A model can compose in it. It does not send a picture: it composes a small description of the page, and the studio builds the document with its own layer constructors, so the headline arrives as live type you can click into and the card arrives as a shape whose corner radius still has a slider.

The whole design travels inside the link, in the part of a URL browsers never send to a server. Nothing is uploaded, nothing needs an account, and a five-layer poster comes out around six hundred characters.

design_reference

What the editor can build: every canvas preset by name, every field of every layer, and the rules that decide whether a design lands right. Read once, before the first design.

design_create

Compose a design and get the link that opens it. Layers are listed bottom to top, the order you would build the page in.

preset
instagram-story, a4-portrait, youtube-thumbnail… eighteen of them, or give width and height
background
the page colour
layers
text — words, box width, size, colour, weight, alignment, leading, tracking, caps
shape — rect, circle, ring, star, line, triangle, with fill, stroke, dash and corner radius
image — an https picture that allows cross-origin reads

studio_read · studio_edit

Work on the design you have open right now in the studio — rigmuse.com, signed in, the page open. studio_read gives its layers, each with an id, its box and its words or colours, and a picture of the page. studio_edit changes it live in your browser as one step Ctrl+Z takes back: words, size, colour, font, place, hide, delete, bring forward, new text, shapes and tables, or a whole new page from a plan. Every answer carries a fresh picture, so the model sees what it did. Needs your token.

design_read · design_edit local server

Read a design back and change it. design_edit returns a fresh link — once a person opens one the design is theirs, in their browser, where this server cannot reach it.

design_create reviews what it just built and says so plainly. Both checks are arithmetic rather than taste: whether a layer has left the page, and whether the type can be read against what sits behind it.

You:   an autumn sale poster for Instagram
Model: design_create { preset: "instagram-portrait", … }
       → https://rigmuse.com/psd-studio.html#new=H4sIAAAA…
         review:
           "Faint: #161b22 on #0e1116 is 1.1:1 — too close to read."
       design_edit { id, set: [{ index: 4, color: "#8b93a1" }] }
       → nothing off the page, and every piece of type clears its background

Open the link and the design is in the gallery like any other: it saves, it undoes, a refresh reopens it, and every word can be retyped.

Where it lands. Signed in to rigmuse.com, the design goes to your account as it arrives — the same upload a manual Save does — so it is in your gallery on every device. Signed out, it stays in that one browser, and the studio says so rather than letting you find out somewhere else; sign in and press Save and it goes up then.

Connect ChatGPT or Claude — no token

ChatGPT and claude.ai connect by signing in, the way you connect Google Drive: add the address below, press Connect, sign in to RigMuse and press Allow. Nothing to copy, and every tool works — the design you have open, your gallery, the motion library.

The address
https://rigmuse.com/mcp
ChatGPT
Settings → Plugins → New plugin → Create MCP App. Paste the address, choose OAuth as the authentication, create it, then press Connect.
Claude
Settings → Connectors → Add custom connector. Paste the address, add it, then press Connect.

A connected app appears in the list below; Disconnect takes it away at once. It can do what a token can — never read your gallery, delete a design, or see your password.

Straight into your account

With a token, the model can skip the link: pass to_account and the design is queued into your gallery. What is stored is the design, not a picture of one — the studio turns it into a real PSD the next time you open rigmuse.com signed in, because building a PSD needs a canvas and the only canvas here is the editor's.

Checking your account…

The setup prompt is for an assistant that can run commands — Claude Code, Claude Desktop, Cursor. Pasting it into a chat that cannot install anything achieves nothing: for ChatGPT and claude.ai, connect https://rigmuse.com/mcp as above — they sign in instead of carrying a token. Adding a connector is a settings action; a conversation cannot do it for itself.

A token is deliberately weak: it can queue a design, read which account it belongs to, and read and change the one design you have open in the studio while the page is open — each change one step you can undo. It cannot read your gallery, publish anything, delete a design, or make another token — that needs you, signed in, here. Put it in the server's environment, never in a file you commit.

{
  "mcpServers": {
    "rigmuse": {
      "command": "node",
      "args": ["/absolute/path/to/rigmuse-mcp/server.mjs"],
      "env": { "RIGMUSE_TOKEN": "rm_…" }
    }
  }
}

The motion tools

search_motions

Find clips by words and by how they move. Returns ids for the other tools.

query
words that must all appear — tired walk, sword slash
category
locomotion, combat, gesture, idle, pose, dance…
intensity
calm · moderate · energetic
loops
only clips whose end meets their start
locomotion
only clips that travel across the ground
symmetric
only clips that mirror left to right
sort
longest, shortest, energetic, calmest
limit / offset
paging, up to 200 a page

list_categories

Every category with how many clips it holds, and the library totals in clips, seconds and frames.

get_motion

Everything known about one clip: title, description, tags, length, frame rate, intensity, whether it loops or travels, and its file sizes.

id
the clip id from search

download_motion local server

Writes the file to this machine and returns the path.

id
the clip id
format
fbx (default) or rl for iClone / Character Creator
dir
folder to save into; defaults to RIGMUSE_OUT

get_skeleton

What you are retargeting from. Every clip in the library animates the same skeleton, so a mapping worked out once holds for all 39,672.

map_bones

The answer to “the retarget looks wrong and I do not know why”. Hand it your target rig’s bone names and it pairs them up, names the joints the rig is missing, and says what each bad result means.

target_bones
every bone in the target skeleton, spelled as the engine spells them

motion_download_url

A direct link, good for five minutes, for when the file has to go somewhere this machine cannot write.

Into Unity and Unreal

Downloading into a watched folder is the whole integration: both editors import an FBX that appears in their content tree. Ask for what you want and the clip is in the project a moment later.

You:   find a tired, slouching walk that loops, and put it in my game
Model: search_motions { query: "tired slouch walk", loops: true }
       → 105_14_DepressedWalk · "slouched posture, head bowed" · 23.1s
       download_motion { id: "105_14_DepressedWalk",
                         dir: "C:/MyGame/Assets/Motions" }
       → 8.9 MB written

Pair it with an editor-side MCP — one for Unity, one for Unreal — and the same conversation can set up the import, retarget onto your rig and drop it on a timeline. RigMuse finds and fetches; the editor server places.

Retargeting

Every clip animates one skeleton: CC_Base from Reallusion Character Creator — 101 bones, Y-up, centimetres, rooted at CC_Base_BoneRoot. Checked rather than assumed: three clips from three different source datasets were downloaded and their FBX node trees parsed, and all three carry the same bones in the same order. Work the mapping out once and it holds for the whole library.

When the rig does not match, ask before importing. map_bones takes the target skeleton’s bone names and reads the joints out of them by shape, not by a lookup table, so it lands on a UE5 mannequin, a Mixamo character or a hand-built rig alike — the UE5 mannequin comes back fully mapped with nothing missing, and so does Mixamo.

Bones to leave unmapped

The mistake everyone makes once

The root of the body is CC_Base_Hip. CC_Base_Pelvis is its child. Map Pelvis as the retarget root and the character drifts and the feet slide, because the hips are then driven twice.

What each bad result means

feet slide, character drifts
root mapped to Pelvis, or driven at root and hips both
arms too low or too wide
rest poses disagree — match them before retargeting, not after
character sinks or floats
units: fix the import scale, never scale the animation
elbows or knees snap back
a Twist bone was mapped onto the real joint
a whole limb does nothing
that joint is missing from the target — map_bones names it

Prompts

Four come with the server, so the model has the order of the work and not only the tools: retarget_unity (humanoid avatars, and what to do when Unity refuses the rig), retarget_unreal (IK Rig chains for source and target, and the retargeter), rig_check — read a rig and say what will and will not carry over, before importing anything — and design_poster, which walks a page from canvas to type scale to the contrast check.

Add-ons and software

Engine plug-ins, editor bridges and companion tools will be listed here.

Notes