Maya MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MAYA_MCP_ENABLE_RAW_EXECUTION | No | Set to 'true' to enable raw script execution (script.run tool). Disabled by default. | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| health.checkA | Check the health status of the Maya connection |
| maya.connectB | Establish a connection to Maya's commandPort |
| maya.disconnectB | Close the connection to Maya |
| scene.infoA | Get information about the current Maya scene |
| scene.newA | Create a new empty Maya scene. Checks for unsaved changes first and refuses by default if the scene was modified. Use force=True to discard unsaved changes. When a client supports form elicitation, the server may ask for confirmation instead of requiring an immediate retry. |
| scene.saveA | Save the current scene. Saves to the current file path. Fails if the scene is untitled. |
| scene.save_asA | Save the scene to a new file path. Validates the path and saves as Maya ASCII or Binary based on extension. |
| scene.openA | Open a Maya scene file. Validates the file path and checks for unsaved changes before proceeding. Use force=True to discard unsaved changes. When a client supports form elicitation, the server may ask for confirmation instead of requiring an immediate retry. Supported formats: .ma (Maya ASCII), .mb (Maya Binary). |
| scene.undoA | Undo the last operation in Maya. Critical for LLM error recovery. |
| scene.redoA | Redo the last undone operation in Maya. |
| scene.importA | Import a file into the current Maya scene. Supports multiple formats (.ma, .mb, .obj, .fbx, .abc, .usd, .usda, .usdc, .usdz). Returns only top-level parent transforms to protect token budget. |
| scene.exportA | Export scene content to a file. Export selected nodes or entire scene. Supports multiple formats (.ma, .mb, .obj, .fbx, .abc, .usd, .usda, .usdc). |
| nodes.listA | List nodes in the Maya scene, optionally filtered by type. Returns max 500 nodes by default to limit response size. |
| nodes.createC | Create a new node in Maya with optional name, parent, and initial attributes. |
| nodes.deleteA | Delete one or more nodes from the Maya scene. |
| nodes.renameA | Rename one or more nodes in the Maya scene. |
| nodes.parentB | Reparent one or more nodes in the Maya hierarchy. |
| nodes.duplicateC | Duplicate one or more nodes. |
| nodes.infoA | Get comprehensive information about a Maya node in a single call. Use info_category to choose: summary (default), transform, hierarchy, attributes, shape, or all. Reduces tool-call chaining. |
| attributes.getA | Get one or more attribute values from a Maya node. Supports batch queries to reduce tool call chaining. |
| attributes.setA | Set one or more attribute values on a Maya node. Supports batch operations to reduce tool call chaining. |
| connections.listA | List connections on a Maya node with direction and type filters. Returns max 500 connections by default to limit response size. |
| connections.getB | Get detailed connection information for specific attributes on a node. |
| connections.connectA | Connect two attributes in Maya. Use force=True to disconnect existing connections first. |
| connections.disconnectA | Disconnect attributes in Maya. Can disconnect a specific connection, all outgoing from a source, or all incoming to a destination. |
| connections.historyA | List construction/deformation history on a node. Traverses upstream (input) or downstream (output) dependency graph. |
| selection.getA | Get the current selection in Maya |
| selection.setD | Set the Maya selection |
| selection.clearA | Clear the Maya selection (deselect all) |
| selection.set_componentsC | Select mesh components (vertices, edges, or faces) using Maya notation (e.g., 'pCube1.vtx[0:10]', 'pSphere1.e[5]', 'pPlane1.f[0:99]'). |
| selection.get_componentsA | Get currently selected mesh components grouped by type (vertices, edges, faces). |
| selection.convert_componentsB | Convert the current selection to a different component type (vertex, edge, or face). |
| mesh.infoA | Get mesh statistics: vertex/face/edge counts, bounding box, UV status |
| mesh.verticesA | Query vertex positions from a mesh with offset/limit pagination. Returns vertex positions as [x, y, z] arrays. |
| mesh.evaluateA | Analyze mesh topology for issues: non-manifold edges, lamina faces, holes, and border edges. |
| viewport.captureA | Capture a single viewport frame as inline image content using Maya playblast. Read-only: does not modify scene data. |
| curve.infoA | Get NURBS curve information: degree, spans, form, CV count, knots, length, bounding box. |
| curve.cvsA | Query CV positions from a NURBS curve with offset/limit pagination. Returns CV positions as [x, y, z] arrays in world space. |
| modeling.create_polygon_primitiveA | Create a polygon primitive (cube, sphere, cylinder, cone, torus, plane) with configurable dimensions, subdivisions, and axis. |
| modeling.extrude_facesB | Extrude polygon faces with local translation, offset, and division options. |
| modeling.booleanA | Perform a boolean operation (union, difference, intersection) on two meshes. |
| modeling.combineC | Combine multiple meshes into a single mesh. |
| modeling.separateB | Separate a combined mesh into individual meshes. |
| modeling.merge_verticesA | Merge vertices on a mesh within a distance threshold. |
| modeling.bevelB | Bevel edges or vertices with offset, segments, and fraction options. |
| modeling.bridgeB | Bridge between edge loops to create connecting faces. |
| modeling.insert_edge_loopB | Insert an edge loop at the specified edge using polySplitRing. |
| modeling.delete_facesA | Delete polygon faces from a mesh. |
| modeling.move_componentsA | Move mesh components (vertices, edges, faces) by relative translation or to an absolute position. |
| modeling.freeze_transformsA | Freeze (reset) transforms on nodes, applying current values as identity. |
| modeling.delete_historyB | Delete construction history from nodes or the entire scene. |
| modeling.center_pivotB | Center the pivot point on nodes. |
| modeling.set_pivotA | Set the pivot point of a node to an explicit position. |
| shading.create_materialA | Create a material (lambert, blinn, phong, standardSurface) with an associated shading group and optional color. |
| shading.assign_materialA | Assign a material to meshes or face components. Resolves the shading group from the material automatically. |
| shading.set_material_colorA | Set a color attribute on a material (e.g., color, baseColor, transparency). |
| skin.bindA | Bind a mesh to a skeleton with influence options. Creates a skinCluster with configurable bind method and max influences. |
| skin.unbindA | Detach a skin cluster from a mesh, removing skin deformation. |
| skin.influencesA | List influences (joints) on a skin cluster with index mapping. |
| skin.weights.getA | Get per-vertex skin weights with offset/limit pagination. Default limit is 100 vertices (skin weight data is dense). Use offset to paginate through large meshes. |
| skin.weights.setA | Set per-vertex skin weights with optional normalization. Accepts up to 1000 vertex entries per call. |
| skin.copy_weightsC | Copy skin weights from one mesh to another using surface and influence association methods. |
| script.listA | List available Python scripts from configured MAYA_MCP_SCRIPT_DIRS directories. Read-only, does not require Maya connection. |
| script.executeA | Execute a Python script file in Maya from an allowed MAYA_MCP_SCRIPT_DIRS directory. The script is read server-side and sent to Maya. Optional args dict is injected as args in the script namespace. |
| script.runA | Execute raw Python or MEL code in Maya. REQUIRES MAYA_MCP_ENABLE_RAW_EXECUTION=true environment variable. Disabled by default for security. |
| animation.set_timeA | Set the current time (go to a specific frame). |
| animation.get_time_rangeA | Get playback range, animation range, and current time. |
| animation.set_time_rangeB | Set the playback and animation range. |
| animation.set_keyframeA | Set keyframe on attribute(s) at current or specified time. |
| animation.get_keyframesA | Query keyframes for attribute(s) on a node within optional time range. |
| animation.delete_keyframesA | Delete keyframes in a time range for attribute(s). |
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/GimbalGoats/GG_MayaMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server