Skip to main content

Uthana MCP

PyPI version License

Local MCP server for Uthana: generate motion from text or video, create characters from prompts, images, or rigged files, trim, loop, and stitch motions, and export retargeted animation.

The host supplies the reasoning model. This server uses the shared Uthana Python client and speaks stdio. It registers 24 tools and the uthana://workflow resource.

📖 API documentation · First animation

Install

Download and run the installer for your platform:

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/Uthana/uthana-mcp/main/install.sh -o install.sh
sh install.sh

Windows (PowerShell)

Invoke-WebRequest https://raw.githubusercontent.com/Uthana/uthana-mcp/main/install.ps1 -OutFile install.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1

The installer checks for uv, installs it if needed, and installs the MCP with Python 3.12. No existing Python installation is required. It prints the server command for your host configuration. Create an API key in your Uthana account settings and paste its value into UTHANA_API_KEY below.

See the installation guide for manual installation, environment settings, and tool timeouts.

Connect

Use the absolute server command printed by the installer. For Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "uthana": {
      "command": "/absolute/path/to/uthana-mcp",
      "args": [],
      "env": {
        "UTHANA_API_KEY": "your-api-key",
        "UTHANA_MCP_INPUT_DIR": "/absolute/path/to/selected-inputs"
      }
    }
  }
}

Cursor (.cursor/mcp.json) uses the same mcpServers object.

Codex (~/.codex/config.toml):

[mcp_servers.uthana]
command = "/absolute/path/to/uthana-mcp"
args = []

[mcp_servers.uthana.env]
UTHANA_API_KEY = "your-api-key"
UTHANA_MCP_INPUT_DIR = "/absolute/path/to/selected-inputs"

Install and connect has Windows path examples and host timeout settings.

Restart your host, then ask it to read Uthana’s workflow, check account access, and estimate a motion before generating it. Production generation spends your account’s credits. Continue with the first-animation walkthrough for upload, generation, and export.

Tools

Tool What it does
generate_motion Text-to-motion V3. Returns a job ID
generate_motion_v2 Text-to-motion V2. Returns a motion ID
generate_locomotion Walk or run cycles from style, strides, speed, and direction
list_locomotion_styles Available locomotion styles
estimate_model_cost USD estimate from current model rates
get_job Generation job state and available motion ID
get_motion Native motion metadata and source-file identity
get_request_status Local request state, result IDs, and recovery guidance
trim_motion Save an interval as a new motion
get_preview APNG or WebM preview
get_preview_frame One APNG frame with index and available timing
generate_motion_from_video Video-to-motion (V2M) 2.0 or 2.1 job
upload_character FBX/GLB upload, with optional auto-rig and rerig options
create_character_from_image PNG/JPEG to a rigged character
preview_character_from_prompt Preview images for a character description
create_character_from_prompt Rig the preview you chose
create_looped_motion Closed or open loop of an existing motion
stitch Join typed motion/transition/motion steps with server preparation
list_characters Character name filter and result pages
list_motions Recent motion name search and source filters
get_usage Pay-as-you-go balance, rates, and allowances
check_download_allowed Current export eligibility
save_motion Register host-edited animated GLTF JSON
download_motion Retargeted FBX/GLB/BVH with export options

UthanaAPI.generate_v1 is a Python adapter method for V1 generation. It is not a separate MCP tool.

Join two motions

Call the stitch tool with the following arguments, or ask your host to stitch the selected motions. Replace the character and motion IDs with your own.

Simple join

Join two motions with automatic positioning. The server handles sampling and alignment.

{
  "request_id": "stitch-basic",
  "character_id": "CHARACTER_ID",
  "steps": [
    {
      "type": "motion",
      "motion_id": "FIRST_MOTION_ID"
    },
    {
      "type": "transition",
      "duration_seconds": 1.0
    },
    {
      "type": "motion",
      "motion_id": "SECOND_MOTION_ID"
    }
  ]
}

Join with ranges and positioning

Select source intervals and place the second motion one meter forward and half a meter right of the first motion’s ending pelvis, turned 45 degrees right. Placement is relative to the first motion’s ending facing.

{
  "request_id": "stitch-positioned",
  "character_id": "CHARACTER_ID",
  "steps": [
    {
      "type": "motion",
      "motion_id": "FIRST_MOTION_ID",
      "range": {
        "start_frame": 12,
        "end_frame": 60
      }
    },
    {
      "type": "transition",
      "duration_seconds": 1.5
    },
    {
      "type": "motion",
      "motion_id": "SECOND_MOTION_ID",
      "range": {
        "start_seconds": 0.5,
        "end_seconds": 3.0
      },
      "placement": {
        "forward_m": 1.0,
        "right_m": 0.5,
        "turn_degrees": 45.0
      }
    }
  ]
}

Choose ranges that fit your source motions and leave the required transition context. Frame indices use each source’s native FPS; do not mix frames and seconds within one range. Inspect resolved_steps and review playback before accepting the result.

Each example makes a separate mutation. Use a distinct request ID for different arguments; recover an uncertain request before retrying. See stitching for the full contract.

Documentation

Develop from source

uv sync --locked
uv run --locked bash ./test.sh

Licensed under Apache-2.0.

Metadata

Release files for uthana-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uthana-mcp 0.1.0
File Size Uploaded Provenance Actions
uthana_mcp-0.1.0.tar.gz 19.1 MB Without provenance Details for uthana_mcp-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for uthana-mcp 0.1.0
File Interpreter ABI Platform Actions
uthana_mcp-0.1.0-py3-none-any.whl Python 3 none any Details for uthana_mcp-0.1.0-py3-none-any.whl

Total release size: 19.2 MB

Release files / uthana_mcp-0.1.0.tar.gz

Download URL uthana_mcp-0.1.0.tar.gz
Size 19.1 MB
Tags Source
SHA-256 checksum
How to use checksums
8e0c89aba0434fe50252de7f31c6b1a5ae5a0615d91444405b2e6562faca2222
BLAKE2b-256 checksum
How to use checksums
e550ee810f47c93474e984c6ff4b2c8916150cd5e7115f19110c2d2f0b5494f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / uthana_mcp-0.1.0-py3-none-any.whl

Download URL uthana_mcp-0.1.0-py3-none-any.whl
Size 59.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8325f4703357a2f067bd94f79aeb0361032361e4c6ede41513f5e0b39e78f375
BLAKE2b-256 checksum
How to use checksums
a393877c6352cee0bc106f23d764aaabd613e0c75fc5168b158ff1a3a47d9a4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for uthana-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page