MCP server bridging AI clients to the read-only Fabricator/Maya bridge.
Project description
fabricator-mcp
fabricator-mcp connects your own AI assistant (Claude Code, Claude Desktop, Cursor, or any other MCP client) to a Maya session running the FabricatorStudio toolset. Once connected, your assistant can inspect your open scene and your Fabricator rig to help you troubleshoot: scene contents, node details, a viewport screenshot, rig status and components, the last build report, and the bundled docs.
You bring your own AI client and your own API key. This project runs no servers of its own and charges nothing: it is a small local bridge between your Maya session and whatever assistant you already use.
The short version: the AI can see. It cannot touch.
The read-only guarantee
The bridge exposes a fixed set of read and inspection operations. There is no operation in the registry that writes an attribute, creates or deletes a node, changes a connection, renames or reparents anything, saves the file, or runs a rig's auto-fix.
This is not a claim you have to take on faith. The entire op registry is one file in the FabricatorStudio toolset:
maya_tools/framework/toolbar/ai_bridge/handlers.py
Read it. Every handler in it is a pure read of the scene, and a test (test_ai_bridge_maya.py) mechanically scans the file for mutating calls as a backstop against a mutating op sneaking in later.
Two things are worth stating plainly rather than hiding:
- Taking a viewport screenshot writes a temporary file. The screenshot op writes a throwaway PNG to your OS temp folder and deletes it once it has read the bytes back. That is a file write outside the Maya scene, not a scene mutation; the read-only claim is specifically about your scene (the graph, its nodes, its attributes, its connections).
- Reading a node attribute makes Maya evaluate its dependency graph. In a scene that contains a malicious expression node or plug-in node upstream of the attribute being read, that evaluation can run code. This is inherent to how Maya works with any scene you open, not something this bridge adds: selecting a node, playing the timeline, or refreshing the viewport all trigger the same graph evaluation. Only open rigs you trust, the same as you always would.
Data flow and privacy
Nothing leaves your machine except what your chosen AI client sends to your chosen provider. fabricator-mcp collects no telemetry and phones nothing home.
The bridge listens on loopback (127.0.0.1) only, and only while you have started it. It is off by default.
Setup
Prerequisites: Maya with the FabricatorStudio toolset installed. In Maya, open the DevBot toolbar's "Connect AI" popover and click Start.
Then configure your client with the snippet below. The popover has a Copy button for each client, so you don't have to type these by hand; they are reproduced here for reference.
Until this is on PyPI:
fabricator-mcpisn't published yet, souvx fabricator-mcpwon't resolve anything. Pointuvxat this checkout instead with--from <path-to-fabricator-mcp>, for example:claude mcp add fabricator -- uvx --from D:/Documents/KinematicSolutions/fabricator-mcp fabricator-mcpand the equivalent
"args"for Claude Desktop / Cursor:["--from", "D:/Documents/KinematicSolutions/fabricator-mcp", "fabricator-mcp"]. Swap in your own path to this repo. Once the package ships to PyPI, switch back to the plain commands below.
Claude Code
claude mcp add fabricator -- uvx fabricator-mcp
If you started the bridge on a non-default port, append --port <n> to that command.
Claude Desktop / Cursor
Both use the same mcpServers block:
{
"mcpServers": {
"fabricator": {
"command": "uvx",
"args": ["fabricator-mcp"]
}
}
}
For Claude Desktop, this goes in its claude_desktop_config.json. For Cursor, this goes in your client's MCP config file (typically ~/.cursor/mcp.json, or a project-local .cursor/mcp.json); check your installed Cursor version's docs if the exact filename or location has moved.
If you started the bridge on a non-default port, add "--port", "<n>" to the args list.
The default bridge port is 6292.
What your AI can do with it
Once connected, your assistant has tools to:
- Read a scene summary and the details of a specific node.
- Take a viewport screenshot.
- Read Fabricator's status, describe the rig and its components, read the rig's skin/component bindings, and read the last build report.
- Run Fabricator's pre-build checks and read the scene's structural validation.
- Read the bundled troubleshooting and concept docs.
- If a real fix attempt has failed, help you file a well-formed GitHub bug report: it hands back a prefilled "New issue" URL for you to review and submit yourself, under your own GitHub account. It never opens a browser or posts anything on your behalf.
The assistant's behavioral contract arrives automatically at connect, through the MCP server's own instructions: no read required, no step to forget. It is told to propose every fix as steps for you to perform rather than claiming to have done them, and to try a documented fix before ever offering to file a bug. The full operating skill behind that contract also ships as the fabricator://skill resource (and as a bundled skill file in the FabricatorStudio toolset, for native install into a compatible AI client).
Version compatibility
The server and the Maya-side bridge exchange protocol versions on every connect. If they don't match, you'll get a message telling you to update whichever side is behind: the FabricatorStudio toolset in Maya, or your fabricator-mcp package. Keep the two roughly in step.
fabricator-mcp is currently at version 0.1.0.
Troubleshooting
"Maya isn't listening..." is the message you'll see most. It means either the bridge isn't started (open the DevBot toolbar's Connect AI popover and click Start), or it's listening on a different port than your client is configured for (pass --port on both sides to match).
For anything rig-specific, ask your assistant to read the bundled docs (it has a tool for this), or open maya_tools/docs/assistant/troubleshooting.md in the FabricatorStudio toolset directly.
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 fabricator_mcp-0.1.0.tar.gz.
File metadata
- Download URL: fabricator_mcp-0.1.0.tar.gz
- Upload date:
- Size: 24.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
825f38229c81c566e4bbd9cce52abb4d6fcdc3ad4c8f41b5b6fa6a3a02e7896a
|
|
| MD5 |
c3d7f064e585ebc0407b6a09ff49c093
|
|
| BLAKE2b-256 |
b1aaa196be07277e5c59c1555378474fd5266267442883ce0762e8080c4aecb3
|
Provenance
The following attestation bundles were made for fabricator_mcp-0.1.0.tar.gz:
Publisher:
publish-fabricator-mcp.yml on adrianmelian/FabricatorStudio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fabricator_mcp-0.1.0.tar.gz -
Subject digest:
825f38229c81c566e4bbd9cce52abb4d6fcdc3ad4c8f41b5b6fa6a3a02e7896a - Sigstore transparency entry: 2208975475
- Sigstore integration time:
-
Permalink:
adrianmelian/FabricatorStudio@4340cf0eb571b81e91abd2155e9d09f3895ea2a9 -
Branch / Tag:
refs/tags/fabricator-mcp-v0.1.0 - Owner: https://github.com/adrianmelian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-fabricator-mcp.yml@4340cf0eb571b81e91abd2155e9d09f3895ea2a9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file fabricator_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fabricator_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9cab3d6a07439aeae541bf4c09aad2958e8850da0879a5669f60d1730288ebe9
|
|
| MD5 |
1cf788fbf0ff3ac5c8485d664fd60005
|
|
| BLAKE2b-256 |
27eff3f829b42c1620e4997a77f70b1ed1fdcb44ce43c29669b6979f11e7f1b0
|
Provenance
The following attestation bundles were made for fabricator_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish-fabricator-mcp.yml on adrianmelian/FabricatorStudio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
fabricator_mcp-0.1.0-py3-none-any.whl -
Subject digest:
9cab3d6a07439aeae541bf4c09aad2958e8850da0879a5669f60d1730288ebe9 - Sigstore transparency entry: 2208975510
- Sigstore integration time:
-
Permalink:
adrianmelian/FabricatorStudio@4340cf0eb571b81e91abd2155e9d09f3895ea2a9 -
Branch / Tag:
refs/tags/fabricator-mcp-v0.1.0 - Owner: https://github.com/adrianmelian
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-fabricator-mcp.yml@4340cf0eb571b81e91abd2155e9d09f3895ea2a9 -
Trigger Event:
push
-
Statement type: