maya-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MAYA_HOST | No | Maya host | localhost |
| MAYA_PORT | No | Maya Command Port | 8100 |
| GPU_API_KEY | No | Vision3D API key | |
| GPU_API_URL | No | Optional suggested default for the Vision3D URL prompt. Never auto-selected. | |
| SHAPE_TIMEOUT | No | Shape generation timeout (seconds) | 900 |
| GPU_VERIFY_TLS | No | Verify TLS certificates for https Vision3D targets | true |
| MAYA_AUDIT_LOG | No | Opt-in durable audit log of tool executions. Set to 1/true/yes/on to enable. | |
| TEXTURE_TIMEOUT | No | Texture generation timeout (seconds) | 600 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| maya_create_primitiveB | Create a 3D primitive in Maya (cube, sphere, cylinder, cone, plane, torus) with optional position, scale, and rotation. |
| maya_assign_materialA | Create a material (lambert, blinn, phong, aiStandardSurface) with RGB color and assign it to an object. |
| maya_transformB | Move, rotate, or scale an object in the Maya scene. |
| maya_create_lightB | Create a light in Maya (directional, point, spot, area, ambient) with configurable intensity and color. |
| maya_create_cameraC | Create a camera in Maya with configurable position, look-at point, and focal length. |
| maya_mesh_operationC | Execute mesh operations: extrude, bevel, boolean (union/difference/intersection), combine, separate, smooth. |
| maya_set_keyframeB | Create an animation keyframe on an object. Allows animating translate, rotate, scale, and visibility per frame. |
| maya_import_fileA | Import 3D files into Maya: OBJ, FBX, GLB/GLTF, Alembic ABC, Maya MA/MB, BVH mocap. With namespace, parent group, and scale options. GLB/GLTF: uses Maya's native glTF scene parser ( BVH: Maya has no native BVH import, so |
| maya_viewport_captureA | Capture the Maya viewport as PNG/JPG image and return it for visual analysis. Does not do Arnold render — it is an instant viewport grab (<1s). Useful for visually verifying scene state, checking lighting, framing, and detecting issues. |
| maya_sessionA | Manage Maya session, query scene state, and run utility commands. Available actions: • ping — Check connection to Maya, return version/scene/renderer. No params needed. • launch — Open Maya and wait for Command Port to respond. No params needed. • new_scene — Create a new empty scene. Refuses if the current scene has unsaved changes; pass {"confirm": true} to discard them. • save_scene — Save the current scene. No params needed. • list_scene — List objects in the scene. Optional params: {"object_type": "mesh", "name_filter": "sphere"} • scene_snapshot — Full scene state: file, modified flag, frame range, object counts by type, renderer, plugins, resolution. No params needed. • delete — Delete objects by name (wildcards supported). Required params: {"object_name": "sphere"} • execute_python — Run arbitrary Python in Maya. Assign result to 'result' variable. Required params: {"code": "import maya.cmds as cmds; ..."} Optional: {"timeout": 60} — seconds to wait for Maya (default 10, max 600); use for long operations, progress heartbeats stream every 10s while waiting. • shelf_button — Create a shelf button with Python code. Required params: {"label": "MyBtn", "command": "print('hello')"} Optional: {"tooltip": "...", "shelf_name": "Custom", "icon_label": "MCP"} • operation_history — Read recent durable-audit records (read-only; needs MAYA_AUDIT_LOG=1). Optional params: {"limit": 50, "tool": "maya_transform", "action": "execute_python", "status": "error"} • publish — Drive the native Toolkit publisher (tk-multi-publish2) inside an engine'd Maya (launched via 'tank'). params: {"mode": "preview"|"publish", "include": ["rig"], "exclude": ["render"], "comment": "...", "timeout": 600}. 'preview' returns the collected publish tree; 'publish' activates matching tasks then validate→publish→finalize. Dependencies are captured automatically by the publish plugins. • review_turntable — Deterministic Viewport-2.0 turntable playblast → .mov (RUNS IN MAYA, long op). Frames the model, orbits 360° over [start,end] at fps, 16:9 / square pixels / overscan, offScreen (never Arnold). Required params: {"out_path": "/path.mov"} (resolve via fpt tk_resolve_path template 'movie_asset_publish' with name= so the file is {Asset}_{Task}v###.mov, e.g. DJ_Model_v001.mov — NOT 'turntable'). Optional: {"start":1,"end":100,"fps":25,"width":1920,"height":1080,"objects":[...],"focal":50,"timeout":600}. Returns the .mov plus the engine asset/task and a Version code {Asset}{Task} so the review Version is named after the task it was generated in. |
| maya_vision3dA | AI-powered 3D asset generation via Vision3D server (requires GPU with Hunyuan3D-2). Server selection is fully per-session and runtime-only: the first
action that needs a GPU call returns After selection, jobs are non-blocking: start → poll → download. Available actions: • select_server — Set the Vision3D server URL for the rest of the session. Required params: {"url": "http://..."}. Accepts any valid http/https URL; ask the user first. • health — Check if the selected Vision3D server is running and what GPU/models are available. No params. • generate_image — Start 3D generation from a reference image. Required params: {"image_path": "/path/to/image.png", "output_subdir": "my_asset"} Optional: {"preset": "medium", "model": "turbo", "octree_resolution": 384, "num_inference_steps": 20, "target_faces": 50000} • generate_text — Start 3D generation from a text prompt. Required params: {"text_prompt": "a medieval sword", "output_subdir": "sword"} Optional: {"preset": "medium", "model": "turbo", "octree_resolution": 384, "num_inference_steps": 20, "target_faces": 50000} • texture — Texture an existing mesh using a reference image. Required params: {"output_subdir": "my_asset"} Optional: {"mesh_filename": "mesh.glb", "image_filename": "input.png"} • poll — Check job progress (call repeatedly while running). Required params: {"job_id": "uuid-from-generate"} • download — Download completed job results. Required params: {"job_id": "uuid", "output_subdir": "my_asset"} Optional: {"files": ["textured.glb", "mesh.glb"]} |
| maya_worldlabsA | Generate a World Labs (Marble) Gaussian-splat ENVIRONMENT from an image and load it into Maya for Arnold. Pipeline — call the actions in order: generate → poll → download → convert → build. Credits are spent ONLY by generate with confirm=true. Call status on a work area to resume an interrupted run from disk without re-generating. Actions: • health — Check the WorldLabs API key + credit balance. No params. • generate — Start image→world generation. Required params: {"image": "/path.png" or "https://..."}. Optional: {"output_subdir": "world", "model": "marble-1.1"|"marble-1.1-plus", "display_name": ..., "text_prompt": ..., "confirm": true, "work_dir": "/work/worldlabs/"}. WITHOUT confirm=true it returns a cost-confirmation payload and spends NOTHING. Pass work_dir (the Toolkit work area, resolved via fpt-mcp tk_resolve_path) to write a resume sidecar so an interrupted run resumes without re-generating. • poll — Poll a generation (~5 min). Required params: {"operation_id": "..."}. • download — Download a finished world's assets to the work area. Required params: {"operation_id": "...", "dest_dir": "/work/worldlabs/"}. Optional: {"which": ["splats_full_res", "pano"]}. Updates the resume sidecar (world_id + downloaded paths). • convert — Convert the downloaded SPZ to PLY (Arnold-readable, via gsbox). Required params: {"spz_path": "/path.spz"}. Optional: {"ply_path": "/out.ply"}. • build — Load into Maya (RUNS IN MAYA): aiGaussianSplat + coloured point proxy + emission shader + eye-level centred camera, plus a fake-HDR panorama dome if given. Required params: {"ply_path": "/world.ply"}. Optional: {"pano_path": "/pano.png", "eye_height": 1.5, "proxy_step": 1, "relight": false, "draw_mode": 2, "focal": 15.0, "timeout": 300, "save_path": "/…/maya/scene.v001.ma"}. draw_mode: 2=Gaussian Splat (default, draws natively in VP2.0), 1=Point Cloud, 0=Bounding Box. focal: camera focal length in mm (default 15, wide for environments). save_path: when given (the Toolkit work-file path resolved via fpt-mcp tk_resolve_path on template maya_asset_work — Toolkit naming/versioning), the assembled scene is saved there so "open in Maya" lands the work file at the config-correct path with no manual Workfiles pick. • status — Report the resumable state of a work area (sidecar + on-disk .spz/.ply/.png). Required params: {"work_dir": "/work/worldlabs/"}. Returns where the pipeline left off (needs_generate / needs_download / needs_convert / ready_to_build). |
| search_maya_docsA | Search Maya API documentation using hybrid RAG (semantic + BM25). Call this BEFORE writing complex Maya commands, using unfamiliar flags, or when unsure about command names, return values, or syntax. Returns the most relevant documentation chunks with relevance scores. Covers: maya.cmds, PyMEL, Arnold/mtoa, Maya-USD, and common anti-patterns. Uses HyDE query expansion + Reciprocal Rank Fusion for high precision. |
| learn_patternA | Save a validated working pattern to the RAG knowledge base. Call this after a successful operation when search_maya_docs returned low relevance (< 60%), indicating the pattern was not well-documented. The pattern will be available in future sessions. Model trust gates: only Opus/Fable can write directly. Other models stage candidates for review. |
| session_statsA | Show session efficiency statistics: token usage, RAG savings, patterns learned. Call at the end of multi-step tasks or when asked about efficiency. Shows how much context was saved by RAG vs loading full documentation. |
| reset_session_statsA | Zero the session stats counters immediately. Use at the start of a new Claude session (or a fresh debugging run) when the idle-based auto-reset has not fired — for example when two sessions happen back-to-back. Returns a confirmation line with the new reset timestamp. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/abrahamADSK/maya-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server