Uthana MCP
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
- Workflow and recovery
- API coverage and limits
- Stitching steps and positioning
- Install and connect
- First animation and export
- Operational checks
- Contributing
- Public API documentation
Develop from source
uv sync --locked
uv run --locked bash ./test.sh
Licensed under Apache-2.0.
The hosted MCP is a technical preview and is not recommended for production use. Operator integration is described in Hosted transport. Local stdio installation remains supported.
Metadata
Release files for uthana-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| uthana_mcp-0.2.0.tar.gz | 19.2 MB | Without provenance | Details for uthana_mcp-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| uthana_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for uthana_mcp-0.2.0-py3-none-any.whl |
Total release size: 19.2 MB
Release files / uthana_mcp-0.2.0.tar.gz
| Download URL | uthana_mcp-0.2.0.tar.gz |
|---|---|
| Size | 19.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d7457182dd5bd669f37a01aa6bce9c4eb89eeadcd6a9092ab25ce163a884559e
|
|
BLAKE2b-256 checksum How to use checksums |
199ea47c0985d75dc1370b48118597aff332746885ccf192036841c937f4eb32
|
| 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.2.0-py3-none-any.whl
| Download URL | uthana_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 70.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a80d112be701c77c4289a2c97f14f77c54f030892a2f5ce1ee92ff24df82a66a
|
|
BLAKE2b-256 checksum How to use checksums |
fe6846b907957d60d5780cd61066c473cfa9a187fb55d54bf1d288c4f79bf6fa
|
| 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.2.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.