Metadata-Version: 2.5
Name: mocapless-mcp
Version: 0.2.0
Summary: MCP server for Mocapless: rig and animate 3D animals and characters from a sentence, inside Claude, Cursor and any MCP client.
Project-URL: Homepage, https://mocapless.com
Project-URL: Documentation, https://mocapless.com/developers
Author-email: Mocapless <hello@mocapless.com>
License: MIT
Keywords: animals,animation,auto-rigging,fbx,mcp,meshy,mocap,quadruped,text-to-motion,tripo
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
Requires-Python: >=3.10
Requires-Dist: httpx>=0.27
Requires-Dist: mcp<2,>=1.10
Requires-Dist: pydantic>=2.5
Description-Content-Type: text/markdown

# mocapless-mcp

Rig and animate 3D characters from a sentence, inside Claude, Cursor, Windsurf or any MCP client. Four-legged animals are the speciality: a model from Meshy, Tripo or Blender — rigged or not — gets a skeleton (legs, spine, neck, head, tail, ears) and walks, trots, sits and lies down from plain English. People are animated too. Exports FBX / GLB / BVH.

```
"Upload fox.glb, make it trot forward, stop, look around and sit down, and save the FBX next to it."
```

The agent uploads the model, plans the motion, quotes the price, generates it, waits, and saves the files.

## Two ways to connect

**Hosted — nothing to install.** Add the address to your client; sign-in opens in the browser.

```
https://api.mocapless.com/mcp
```

```
claude mcp add --transport http mocapless https://api.mocapless.com/mcp
```

No account at all? `https://api.mocapless.com/mcp/try` animates one of Mocapless's own animals as a demo.

**Local — this package.** Runs over stdio, uploads files straight from disk and saves results into a folder. Best next to an Unreal or Unity MCP server that then imports them.

1. Get an API key: [mocapless.com/account](https://mocapless.com/account) → API keys. New accounts have 60 free credits (about a minute of animation).
2. Add the server to your client.

**Claude Desktop** — `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "mocapless": {
      "command": "uvx",
      "args": ["mocapless-mcp"],
      "env": { "MOCAPLESS_API_KEY": "mf_..." }
    }
  }
}
```

**Claude Code**:

```
claude mcp add mocapless -e MOCAPLESS_API_KEY=mf_... -- uvx mocapless-mcp
```

**Cursor / Windsurf** — same JSON under `mcpServers` in the client's MCP settings.

`uvx` comes with [uv](https://docs.astral.sh/uv/). With plain Python: `pip install mocapless-mcp` and use `"command": "mocapless-mcp"`.

## Tools (local server)

| Tool | What it does |
|---|---|
| `account` | Credits left, plan. |
| `list_characters` | Your characters, and whether each is an animal or a person. |
| `upload_character(path)` | Upload an FBX/GLB/DAE — rigged or not — and wait until its skeleton is ready. |
| `create_animal(description)` | No model yet: "a brown horse". A textured 3D animal is made and rigged. |
| `plan_motion(prompt, character_id?)` | Free: the beats and the price for a prompt. |
| `generate_animation(prompt, character_id?, formats?, loop?, quality?, wait?, download_dir?)` | Generate, wait, download. |
| `get_job(job_id, download_dir?)` | Status and files of a generation. |
| `recent_animations(limit?)` | Your recent generations. |
| `share_link(job_id)` | A public link to watch the clip in the browser. |
| `character_pack(character_id, download_dir?)` | The full animation set of one character, in one FBX and one GLB. |
| `unlock_character(character_id)` | The checkout link that unlocks a character. |

Files land in `~/mocapless/<job>/` unless `download_dir` or `MOCAPLESS_DOWNLOAD_DIR` says otherwise.

## Prices

Signing up is free. An animation costs about one credit per second; `plan_motion` quotes it first and a failed job is refunded. The first two animations download free; after that a character is unlocked once for $9, which opens everything made of it and builds its full set. An agent never pays: it hands you a checkout link.

## Prompting

Plain present-tense English about the body, in order: "trots forward, stops, looks around, then sits down". One to four beats, up to 30 seconds per clip. Leave out the camera and the scenery. `loop: true` for idles, walks and runs that should cycle.

## Development

```
cd mcp
uv sync
uv run pytest
uv run mocapless-mcp        # stdio server
```

Environment: `MOCAPLESS_API_KEY` (required), `MOCAPLESS_API_BASE` (default `https://api.mocapless.com`), `MOCAPLESS_DOWNLOAD_DIR`.

<!-- mcp-name: io.github.halifa-bar/mocapless -->
