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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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