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

Malware flagged

A supply-chain scanner flagged a high-severity malware risk in this package. Treat it as unsafe to install until the finding is cleared. See Supply Chain Security in the trust breakdown.

Maya MCP

PYPI · MAYA-MCP · SCANNED SEP 20

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

Available components

0 this week 68 Trust /100
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 Security55
  • Malware check failed: a supply-chain vendor flagged a high-severity malware risk. See how to fix → Fail
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
  • 1 of 14 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • License check failed: the license (MIT License) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 61 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 Management87
  • Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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
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
// .cursor/mcp.json
{
  "mcpServers": {
    "gimbalgoats-maya-mcp": {
      "command": "uvx",
      "args": [
        "maya-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "gimbalgoats-maya-mcp": {
      "command": "uvx",
      "args": [
        "maya-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add gimbalgoats-maya-mcp -- uvx maya-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gimbalgoats-maya-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "maya-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add gimbalgoats-maya-mcp --command uvx --arg maya-mcp
# ~/.hermes/config.yaml
mcp_servers:
  gimbalgoats-maya-mcp:
    command: "uvx"
    args: ["maya-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "gimbalgoats-maya-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "maya-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add gimbalgoats-maya-mcp -t stdio -c uvx -a maya-mcp
// mcp.json
{
  "mcpServers": {
    "gimbalgoats-maya-mcp": {
      "command": "uvx",
      "args": [
        "maya-mcp"
      ]
    }
  }
}
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.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 17 Sept 26 +1
    • Stability: 0.97 → pass security
  • 15 Sept 26 +2
    • Malware scan: unverified → fail security
  • 14 Sept 26 −1
    • Malware scan: fail → unverified security
  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +2
    • Malware scan: unverified → fail security
  • 11 Sept 26 −5
    • Malware scan: fail → unverified security
    • Stability: pass → 0.80 functional
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 20 Sept 2026 · Analysed pypi/maya-mcp@0.6.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

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)
forcebooleanIf True, replace existing namespace contents. If False (default), merge.
namespaceNamespace behavior: None = no namespace, '' = auto-generate, 'name' = use specified
NameTypeReqDescription
_original_sizeinteger
_size_warningstring
_truncated_sizeinteger
countintegeryes
erroryes
file_pathyes
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_pathyes
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
forcebooleanIf True, discard unsaved changes. If False (default), refuse when scene has unsaved changes.
NameTypeReqDescription
erroryes
previous_fileyes
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)
forcebooleanIf True, discard unsaved changes. If False (default), refuse when scene has unsaved changes.
NameTypeReqDescription
erroryes
file_pathyes
previous_fileyes
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
redoneyes
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
erroryes
file_pathyes
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
erroryes
file_pathyes
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
undoneyes

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
argsOptional arguments dict injected as __args__ in the script namespace
file_pathstringyesAbsolute path to the .py script file
timeoutOptional timeout override in seconds (default from MAYA_MCP_SCRIPT_TIMEOUT)
NameTypeReqDescription
errorsyes
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
errorsyes
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
languagestringCode language (default: python)
timeoutOptional timeout override in seconds (default from MAYA_MCP_SCRIPT_TIMEOUT)
NameTypeReqDescription
errorsyes
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
nodesNodes to convert (None = use current selection)
to_typestringyesTarget component type
NameTypeReqDescription
_original_sizeinteger
_size_warningstring
_truncated_sizeinteger
countintegeryes
errorsyes
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
addbooleanAdd to existing selection
deselectbooleanRemove 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
addbooleanAdd to existing selection
componentsarrayyesComponent specifications (e.g., ['pCube1.vtx[0:7]', 'pCube1.f[0]'])
deselectbooleanRemove from selection
NameTypeReqDescription
_original_sizeinteger
_size_warningstring
_truncated_sizeinteger
countintegeryes
errorsyes
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
errorsyes
materialstringyes
shading_groupyes

No examples provided.

shading.create_material ~77

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

NameTypeReqDescription
colorOptional [r, g, b] color (0-1 range)
material_typestringType of material shader to create
nameOptional name for the material node
NameTypeReqDescription
errorsyes
materialyes
material_typestringyes
shading_groupyes

No examples provided.

shading.set_material_color ~90

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

NameTypeReqDescription
attributestringColor 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
errorsyes
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_methodstringBinding algorithm: closestDistance (default), heatMap, or geodesicVoxel
jointsarrayyesList of joint names to use as influences
max_influencesintegerMaximum influences per vertex (default 4)
meshstringyesName of the mesh to bind
NameTypeReqDescription
errorsyes
influence_countintegeryes
influencesarrayyes
meshstringyes
skin_clusteryes

No examples provided.

skin.copy_weights ~90

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

NameTypeReqDescription
influence_associationstringInfluence matching method (default: closestJoint)
source_meshstringyesSource mesh (must have a skinCluster)
surface_associationstringSurface matching method (default: closestPoint)
target_meshstringyesTarget mesh (must have a skinCluster)
NameTypeReqDescription
errorsyes
source_meshstringyes
source_skin_clusteryes
successbooleanyes
target_meshstringyes
target_skin_clusteryes

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
errorsyes
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
errorsyes
meshstringyes
skin_clusteryes
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
limitMaximum vertices to return (default 100, use 0 for unlimited)
offsetintegerStarting vertex index (0-based)
skin_clusterstringyesName of the skinCluster node
NameTypeReqDescription
_original_sizeinteger
_size_warningstring
_truncated_sizeinteger
countintegeryes
errorsyes
geometry_typestring
influence_countintegeryes
influencesarrayyes
meshyes
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
normalizebooleanNormalize weights after setting (default True)
skin_clusterstringyesName of the skinCluster node
weightsarrayyesList of {vertex_id: int, weights: {joint: weight}} entries
NameTypeReqDescription
errorsyes
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
formatstringImage format: 'jpeg' (default) or 'png'
frameOptional frame to capture (defaults to current time)
heightintegerCapture height in pixels (64-4096)
offscreenbooleanUse offscreen capture when available (default False)
panelOptional preferred modelPanel name
qualityintegerJPEG quality 1-100 (used when format='jpeg')
show_ornamentsbooleanShow viewport ornaments/gizmos (default True)
widthintegerCapture width in pixels (64-4096)
NameTypeReqDescription
formatstringyes
frameyes
heightintegeryes
mime_typestringyes
panelyes
size_bytesintegeryes
widthintegeryes

No examples provided.

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 68 out of 100 on VerifyMCP. A supply-chain scanner flagged a possible malware risk on one channel of this server. We found no known CVEs affecting it as of 20 September 2026. 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 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.