MCP server for controlling Autodesk Maya via commandPort
Project description
Maya MCP
Maya MCP is a local Model Context Protocol server for controlling Autodesk Maya through Maya's commandPort.
It gives MCP clients a typed tool surface for scene work, nodes, selection, modeling, shading, skinning, animation, curves, scripts, and viewport capture without importing Maya modules in the server process.
This project is unofficial and is not affiliated with or endorsed by Autodesk. Autodesk Maya is a trademark of Autodesk, Inc.
Why Use It
- runs outside Maya, so the server stays isolated from Maya imports
- talks to Maya over
localhostonly - exposes 71 typed tools instead of raw API calls
- supports safer scene replacement flows for unsaved changes
- leaves raw code execution disabled unless you opt in
Quick Start
1. Install
pip install maya-mcp
From source:
pip install -e ".[dev]"
2. Open Maya commandPort
Run this in Maya's Script Editor on the Python tab:
import maya.cmds as cmds
try:
cmds.commandPort(name=":7001", close=True)
except RuntimeError:
pass
cmds.commandPort(
name=":7001",
sourceType="python",
echoOutput=True,
noreturn=False,
bufferSize=16384,
)
3. Start the server
maya-mcp
Other supported launch styles:
python -m maya_mcp.server
python src/maya_mcp/server.py
fastmcp run
fastmcp run works from this repo because it includes fastmcp.json.
4. Add it to your client
Minimal generic config:
{
"command": "maya-mcp"
}
VS Code workspace example in .vscode/mcp.json:
{
"servers": {
"maya": {
"type": "stdio",
"command": "maya-mcp"
}
}
}
5. Verify
Call these tools in order:
health.checkscene.infonodes.list
Tool Coverage
| Family | Count |
|---|---|
health |
1 |
maya |
2 |
scene |
9 |
nodes |
7 |
attributes |
2 |
selection |
6 |
connections |
5 |
mesh |
3 |
viewport |
1 |
modeling |
15 |
shading |
3 |
skin |
6 |
animation |
6 |
curve |
2 |
script |
3 |
script.run is disabled by default and requires MAYA_MCP_ENABLE_RAW_EXECUTION=true.
scene.new and scene.open still refuse by default when the current scene has unsaved changes. Clients that advertise MCP form elicitation can receive an in-band discard-changes confirmation instead of having to retry with force=True.
Main Docs
- Docs Home
- Getting Started
- Client Setup
- Tool Guide
- Architecture Overview
- Transport Specification
- Security Specification
- API Reference
Published docs: https://gimbalgoats.github.io/GG_MayaMCP/
Development
This repo uses py for Python commands on Windows:
py -m ruff check .
py -m ruff format .
py -m mypy src/
py -m pytest
If tests import maya_mcp from site-packages instead of this repo:
$env:PYTHONPATH='src'
py -m pytest
Security Notes
- localhost only
- no remote-host support
- no Maya imports in the MCP server process
- no arbitrary code execution by default
- no secrets or raw tracebacks in client-facing errors
License
MIT. See LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file maya_mcp-0.4.0.tar.gz.
File metadata
- Download URL: maya_mcp-0.4.0.tar.gz
- Upload date:
- Size: 154.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c70cd7078dfaf6196f258597420f647bd1e4d381e472b401467553363f624f7
|
|
| MD5 |
6d0fe28315715ddfc836c3150da5e924
|
|
| BLAKE2b-256 |
076d03f8046d45f942398b7638aeeaa65aa4dbd8c7fcabcd252c920f2b26ccd1
|
Provenance
The following attestation bundles were made for maya_mcp-0.4.0.tar.gz:
Publisher:
publish-pypi.yml on GimbalGoats/GG_MayaMCP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
maya_mcp-0.4.0.tar.gz -
Subject digest:
0c70cd7078dfaf6196f258597420f647bd1e4d381e472b401467553363f624f7 - Sigstore transparency entry: 1357177350
- Sigstore integration time:
-
Permalink:
GimbalGoats/GG_MayaMCP@8ffcd0c63a9c99d32559342ce4bc7c32290cb64d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/GimbalGoats
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8ffcd0c63a9c99d32559342ce4bc7c32290cb64d -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file maya_mcp-0.4.0-py3-none-any.whl.
File metadata
- Download URL: maya_mcp-0.4.0-py3-none-any.whl
- Upload date:
- Size: 118.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d839a57426a4a87e48e5c2a2d2b50c283776773e3a9cbc589850afd556f30511
|
|
| MD5 |
44e98964af8b179e4f08fa86190847d0
|
|
| BLAKE2b-256 |
e5712e8a5043ea10923b9e0b5f338fdea0010f5949ec80838fe23e5a19175118
|
Provenance
The following attestation bundles were made for maya_mcp-0.4.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on GimbalGoats/GG_MayaMCP
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
maya_mcp-0.4.0-py3-none-any.whl -
Subject digest:
d839a57426a4a87e48e5c2a2d2b50c283776773e3a9cbc589850afd556f30511 - Sigstore transparency entry: 1357177363
- Sigstore integration time:
-
Permalink:
GimbalGoats/GG_MayaMCP@8ffcd0c63a9c99d32559342ce4bc7c32290cb64d -
Branch / Tag:
refs/heads/main - Owner: https://github.com/GimbalGoats
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8ffcd0c63a9c99d32559342ce4bc7c32290cb64d -
Trigger Event:
workflow_dispatch
-
Statement type: