Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Maya MCP

PYPI · MAYA-MCP

Control Autodesk Maya scenes with 71 typed tools for modeling, animation, shading, and more.

Available components

−16 this week 67 Trust /100

Last scanned (19 hours ago)

Scores higher than 63% of PyPI servers

Category Design and Media

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 14 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to GimbalGoats/GG_MayaMCP). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 106 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability78
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 4980 tokens (~70/item across 71 items; 71 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 7 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 72 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 −14
    • Stability: pass → unverified ▼ security
  • 3 Nov 26 −2
    • Malware scan: fail → unverified ▼ security
  • 31 Oct 26 +2
    • Malware scan: unverified → fail ▼ security
  • 29 Oct 26 −2
    • Malware scan: fail → unverified ▼ security
  • 23 Oct 26 +1
    • Stability: 0.97 → pass security
  • 22 Oct 26 +2
    • Malware scan: unverified → fail ▼ security
  • 21 Oct 26 −1
    • Stability: pass → 0.93 functional
  • 19 Oct 26 −2
    • Malware scan: fail → unverified ▼ security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed pypi/maya-mcp@0.6.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo GimbalGoats/GG_MayaMCP
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/GimbalGoats/GG_MayaMCP/.github/workflows/publish-pypi.yml@refs/tags/v0.6.1
Rekor log index 2206773285
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:55d6ff3a79e4b62b8620fb27b5dfa4701db8f36a3c37b4898405298a01e9c868

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 14 packages
Packages resolved 14
Stale 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 71 exposed · ~4,916 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
scene.import ~152

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.

NameTypeReqDescription
file_pathstringyesPath to the file to import (.ma, .mb, .obj, .fbx, .abc, .usd, .usda, .usdc, .usdz)
forceboolean–If True, replace existing namespace contents. If False (default), merge.
namespace––Namespace behavior: None = no namespace, '' = auto-generate, 'name' = use specified
NameTypeReqDescription
_original_sizeinteger––
_size_warningstring––
_truncated_sizeinteger––
countintegeryes–
error–yes–
file_path–yes–
nodesarrayyes–
successbooleanyes–
total_countinteger––
truncatedboolean––

No examples provided.

scene.info ~16

Get information about the current Maya scene

Input schema present but exposes no named parameters.

NameTypeReqDescription
file_path–yes–
fpsnumberyes–
frame_rangearrayyes–
modifiedbooleanyes–
up_axisstringyes–

No examples provided.

scene.new ~88

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.

NameTypeReqDescription
forceboolean–If True, discard unsaved changes. If False (default), refuse when scene has unsaved changes.
NameTypeReqDescription
error–yes–
previous_file–yes–
successbooleanyes–
was_modifiedbooleanyes–

No examples provided.

scene.open ~123

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).

NameTypeReqDescription
file_pathstringyesPath to the Maya scene file to open (.ma or .mb)
forceboolean–If True, discard unsaved changes. If False (default), refuse when scene has unsaved changes.
NameTypeReqDescription
error–yes–
file_path–yes–
previous_file–yes–
successbooleanyes–
was_modifiedbooleanyes–

No examples provided.

scene.redo ~18

Redo the last undone operation in Maya.

Input schema present but exposes no named parameters.

NameTypeReqDescription
can_redobooleanyes–
can_undobooleanyes–
redone–yes–
successbooleanyes–

No examples provided.

scene.save ~29

Save the current scene. Saves to the current file path. Fails if the scene is untitled.

Input schema present but exposes no named parameters.

NameTypeReqDescription
error–yes–
file_path–yes–
successbooleanyes–

No examples provided.

scene.save_as ~55

Save the scene to a new file path. Validates the path and saves as Maya ASCII or Binary based on extension.

NameTypeReqDescription
file_pathstringyesAbsolute or relative path to save the scene to (.ma or .mb)
NameTypeReqDescription
error–yes–
file_path–yes–
successbooleanyes–

No examples provided.

scene.undo ~22

Undo the last operation in Maya. Critical for LLM error recovery.

Input schema present but exposes no named parameters.

NameTypeReqDescription
can_redobooleanyes–
can_undobooleanyes–
successbooleanyes–
undone–yes–

No examples provided.

script.execute ~104

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.

NameTypeReqDescription
args––Optional arguments dict injected as __args__ in the script namespace
file_pathstringyesAbsolute path to the .py script file
timeout––Optional timeout override in seconds (default from MAYA_MCP_SCRIPT_TIMEOUT)
NameTypeReqDescription
errors–yes–
outputstringyes–
scriptstringyes–
successbooleanyes–

No examples provided.

script.list ~32

List available Python scripts from configured MAYA_MCP_SCRIPT_DIRS directories. Read-only, does not require Maya connection.

Input schema present but exposes no named parameters.

NameTypeReqDescription
_original_sizeinteger––
_size_warningstring––
_truncated_sizeinteger––
countintegeryes–
directoriesarrayyes–
errors–yes–
scriptsarrayyes–
total_countinteger––
truncatedboolean––

No examples provided.

script.run ~83

Execute raw Python or MEL code in Maya. REQUIRES MAYA_MCP_ENABLE_RAW_EXECUTION=true environment variable. Disabled by default for security.

NameTypeReqDescription
codestringyesPython or MEL code to execute
languagestring–Code language (default: python)
timeout––Optional timeout override in seconds (default from MAYA_MCP_SCRIPT_TIMEOUT)
NameTypeReqDescription
errors–yes–
languagestringyes–
outputstringyes–
successbooleanyes–

No examples provided.

selection.clear ~17

Clear the Maya selection (deselect all)

Input schema present but exposes no named parameters.

NameTypeReqDescription
countintegeryes–
selectionarrayyes–

No examples provided.

selection.convert_components ~51

Convert the current selection to a different component type (vertex, edge, or face).

NameTypeReqDescription
nodes––Nodes to convert (None = use current selection)
to_typestringyesTarget component type
NameTypeReqDescription
_original_sizeinteger––
_size_warningstring––
_truncated_sizeinteger––
countintegeryes–
errors–yes–
selectionarrayyes–
to_typestringyes–
total_countinteger––
truncatedboolean––

No examples provided.

selection.get ~15

Get the current selection in Maya

Input schema present but exposes no named parameters.

NameTypeReqDescription
countintegeryes–
selectionarrayyes–

No examples provided.

selection.get_components ~24

Get currently selected mesh components grouped by type (vertices, edges, faces).

Input schema present but exposes no named parameters.

NameTypeReqDescription
_original_sizeinteger––
_size_warningstring––
_truncated_sizeinteger––
edge_countintegeryes–
edgesarrayyes–
errorstring––
face_countintegeryes–
facesarrayyes–
has_componentsbooleanyes–
selectionarrayyes–
total_countintegeryes–
truncatedboolean––
vertex_countintegeryes–
verticesarrayyes–

No examples provided.

selection.set ~46

Set the Maya selection

NameTypeReqDescription
addboolean–Add to existing selection
deselectboolean–Remove from selection
nodesarrayyesNode names to select
NameTypeReqDescription
countintegeryes–
selectionarrayyes–

No examples provided.

selection.set_components ~111

Select mesh components (vertices, edges, or faces) using Maya notation (e.g., 'pCube1.vtx[0:10]', 'pSphere1.e[5]', 'pPlane1.f[0:99]').

NameTypeReqDescription
addboolean–Add to existing selection
componentsarrayyesComponent specifications (e.g., ['pCube1.vtx[0:7]', 'pCube1.f[0]'])
deselectboolean–Remove from selection
NameTypeReqDescription
_original_sizeinteger––
_size_warningstring––
_truncated_sizeinteger––
countintegeryes–
errors–yes–
selectionarrayyes–
total_countinteger––
truncatedboolean––

No examples provided.

shading.assign_material ~63

Assign a material to meshes or face components. Resolves the shading group from the material automatically.

NameTypeReqDescription
materialstringyesName of the material (or shading group) to assign
targetsarrayyesMeshes or face components to assign the material to
NameTypeReqDescription
assignedarrayyes–
errors–yes–
materialstringyes–
shading_group–yes–

No examples provided.

shading.create_material ~77

Create a material (lambert, blinn, phong, standardSurface) with an associated shading group and optional color.

NameTypeReqDescription
color––Optional [r, g, b] color (0-1 range)
material_typestring–Type of material shader to create
name––Optional name for the material node
NameTypeReqDescription
errors–yes–
material–yes–
material_typestringyes–
shading_group–yes–

No examples provided.

shading.set_material_color ~90

Set a color attribute on a material (e.g., color, baseColor, transparency).

NameTypeReqDescription
attributestring–Color attribute name (e.g., 'color', 'baseColor', 'transparency', 'incandescence')
colorarrayyes[r, g, b] color values (0-1 range)
materialstringyesName of the material node
NameTypeReqDescription
attributestringyes–
colorarrayyes–
errors–yes–
materialstringyes–

No examples provided.

skin.bind ~100

Bind a mesh to a skeleton with influence options. Creates a skinCluster with configurable bind method and max influences.

NameTypeReqDescription
bind_methodstring–Binding algorithm: closestDistance (default), heatMap, or geodesicVoxel
jointsarrayyesList of joint names to use as influences
max_influencesinteger–Maximum influences per vertex (default 4)
meshstringyesName of the mesh to bind
NameTypeReqDescription
errors–yes–
influence_countintegeryes–
influencesarrayyes–
meshstringyes–
skin_cluster–yes–

No examples provided.

skin.copy_weights ~90

Copy skin weights from one mesh to another using surface and influence association methods.

NameTypeReqDescription
influence_associationstring–Influence matching method (default: closestJoint)
source_meshstringyesSource mesh (must have a skinCluster)
surface_associationstring–Surface matching method (default: closestPoint)
target_meshstringyesTarget mesh (must have a skinCluster)
NameTypeReqDescription
errors–yes–
source_meshstringyes–
source_skin_cluster–yes–
successbooleanyes–
target_meshstringyes–
target_skin_cluster–yes–

No examples provided.

skin.influences ~38

List influences (joints) on a skin cluster with index mapping.

NameTypeReqDescription
skin_clusterstringyesName of the skinCluster node
NameTypeReqDescription
countintegeryes–
errors–yes–
influencesarrayyes–
skin_clusterstringyes–

No examples provided.

skin.unbind ~36

Detach a skin cluster from a mesh, removing skin deformation.

NameTypeReqDescription
meshstringyesName of the mesh to unbind
NameTypeReqDescription
errors–yes–
meshstringyes–
skin_cluster–yes–
unboundbooleanyes–

No examples provided.

skin.weights.get ~88

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.

NameTypeReqDescription
limit––Maximum vertices to return (default 100, use 0 for unlimited)
offsetinteger–Starting vertex index (0-based)
skin_clusterstringyesName of the skinCluster node
NameTypeReqDescription
_original_sizeinteger––
_size_warningstring––
_truncated_sizeinteger––
countintegeryes–
errors–yes–
geometry_typestring––
influence_countintegeryes–
influencesarrayyes–
mesh–yes–
offsetintegeryes–
skin_clusterstringyes–
total_countinteger––
truncatedboolean––
vertex_countintegeryes–
verticesarrayyes–

No examples provided.

skin.weights.set ~82

Set per-vertex skin weights with optional normalization. Accepts up to 1000 vertex entries per call.

NameTypeReqDescription
normalizeboolean–Normalize weights after setting (default True)
skin_clusterstringyesName of the skinCluster node
weightsarrayyesList of {vertex_id: int, weights: {joint: weight}} entries
NameTypeReqDescription
errors–yes–
set_countintegeryes–
skin_clusterstringyes–

No examples provided.

viewport.capture ~161

Capture a single viewport frame as inline image content using Maya playblast. Read-only: does not modify scene data.

NameTypeReqDescription
formatstring–Image format: 'jpeg' (default) or 'png'
frame––Optional frame to capture (defaults to current time)
heightinteger–Capture height in pixels (64-4096)
offscreenboolean–Use offscreen capture when available (default False)
panel––Optional preferred modelPanel name
qualityinteger–JPEG quality 1-100 (used when format='jpeg')
show_ornamentsboolean–Show viewport ornaments/gizmos (default True)
widthinteger–Capture width in pixels (64-4096)
NameTypeReqDescription
formatstringyes–
frame–yes–
heightintegeryes–
mime_typestringyes–
panel–yes–
size_bytesintegeryes–
widthintegeryes–

No examples provided.

Install

How do I install the Maya MCP server?

Maya MCP runs locally as a PyPI package, launched with uvx maya-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · maya-mcp

# add to Claude Code
claude mcp add gimbalgoats-maya-mcp -- uvx maya-mcp
Common questions

What is the Maya MCP server?

Maya MCP is listed in the public MCP registry as io.github.GimbalGoats/maya-mcp. Control Autodesk Maya scenes with 71 typed tools for modeling, animation, shading, and more. This page covers its PyPI package (maya-mcp).

Is the Maya MCP server safe to use?

Maya MCP scores 67 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Maya MCP server expose?

Maya MCP exposes 71 tools: health.check, maya.connect, maya.disconnect, scene.info, scene.new, and 66 more. Their descriptions and schemas cost roughly 4,916 tokens of context every time the server is loaded.

Is the Maya MCP server still maintained?

Maya MCP is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Maya MCP server under?

Maya MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.