MaxForge MCP
Allows an AI agent to control a live Autodesk 3ds Max session, enabling scene inspection, object creation and transformation, material assignment, keyframe animation, collision proxy generation, and file export.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MaxForge MCP Create a sphere at the origin and apply a red material"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MaxForge MCP
Lets an AI agent (Claude, or anything else that speaks MCP) drive a live 3ds Max session — not by generating scripts for a human to paste in, but by actually creating, editing, and animating objects in real time while Max is open.
Normally, getting an AI to help in 3ds Max means it writes a script and you run it yourself, blind to whether it actually worked. This closes that loop: the agent can query the real scene state before and after every action, catch its own mistakes, and iterate live instead of guessing.
What it can do
Inspect the scene | list objects, read the current selection, query units / frame rate / frame range |
Create & transform | primitives, position / rotation / scale |
Materials & textures | create a material, load a bitmap texture, assign it to objects |
Animation | keyframe position/rotation/scale across frames with real spline interpolation |
Collision proxies | generate a basic bounding-box proxy for an object |
Export & save | export selected objects or the whole scene, save the |
Escape hatch | run arbitrary raw MaxScript or Python for anything not covered above |
Every mutation is wrapped in a real undo block — anything the agent does is a normal Ctrl+Z away from being undone.
Related MCP server: 3dsmax-mcp
How it works
AI agent (MCP client) --stdio--> server/max_mcp_server.py --TCP, localhost only--> max_side/bridge.py (inside 3ds Max)A small Python bridge runs inside 3ds Max, loaded via a startup script, and opens a socket bound to 127.0.0.1 only. An MCP server outside Max connects to it and exposes the tools above. Every command runs on Max's main thread via a Qt timer — the 3ds Max SDK isn't thread-safe, so commands arriving on a socket thread are queued and drained on the main loop rather than executed directly.
max_side/
bridge.py socket + main-thread queue (the only place pymxs is touched)
commands.py one function per tool, each wrapped in an undo block
serialize.py converts pymxs values (Point3, Matrix3, nodes, ...) to JSON
startup_stub.ms drop into Max's startup scripts folder
server/
client.py TCP client, newline-delimited JSON
tools.py MCP tool definitions
max_mcp_server.py the MCP server itself (stdio transport)Setup
Requirements: 3ds Max 2022+ (pymxs), Python 3.10+ on the machine running the MCP server, uv.
1. Install dependencies
uv sync2. Load the bridge into 3ds Max
Copy max_side/startup_stub.ms into Max's startup scripts folder — typically:
%LOCALAPPDATA%\Autodesk\3dsMax\<version>\ENU\scripts\startup\Open the copied startup_stub.ms and set MAXFORGE_REPO_PATH to wherever you cloned this repo. It starts the bridge on port 47823 automatically the next time Max launches. Three macroscripts (category "MaxForge MCP") are also registered for manual control — Start / Stop / Reload — so you can pick up code changes without restarting Max.
3. Point an MCP client at it
For Claude Code:
claude mcp add maxforge -- <repo>\.venv\Scripts\python.exe <repo>\server\max_mcp_server.pyOr wire server/max_mcp_server.py into any other MCP-compatible client's config the same way.
Safety
The socket only ever binds to 127.0.0.1 — never the network. This is a code-execution endpoint sitting inside a modeling app; it's designed to only be reachable from the same machine it runs on.
Status
Live-tested against a running Max 2025 session with a full assertion-based suite (29/29 checks) covering every tool, every error path, and an undo/redo round trip.
create_collision_proxy currently only builds a generic axis-aligned box — it isn't tuned to any specific game engine's collision format yet.
Adding a new tool
Add a handler in
max_side/commands.py, wrapped inundoable("MCP: ..."), registered in theCOMMANDSdict.Add a matching wrapper in
server/tools.py— its docstring is what the agent sees.Register it in the loop at the top of
server/max_mcp_server.py.Run the "Reload MaxForge Bridge" macroscript in Max instead of restarting.
License
Copyright (c) 2026 .bluntman420. — see LICENSE.md. Free to use as-is; modification and redistribution of modified versions is not permitted.
Available Tools
17 toolsadd_modifierB
Add a modifier by its MAXScript class name (Edit_Poly, Bend, UVW_Map, Turbosmooth, ...) to an object, with optional properties.
Inputs: handle (required), modifier (required), params.
apply_materialB
Create a Standard material (optionally with a diffuse bitmap texture loaded from disk) and assign it to the given objects.
Inputs: handles (required), material_name, diffuse_bitmap.
create_collision_proxyA
Create a simple axis-aligned box collision proxy for each given
object, sized to its world bounding box and named {prefix}{name}.
This is a generic starting point, not tuned to any specific game
engine's collision format yet.
Inputs: handles (required), prefix.
create_objectB
Create a primitive/object by its MAXScript class name (Box, Sphere,
Cylinder, Plane, Cone, Torus, Teapot, ...). params are extra
creation-time properties (e.g. {"radius": 10, "height": 20}).
Inputs: type (required), pos, name, params.
deleteC
Delete objects by handle.
Inputs: handles (required).
exportC
Export the scene (or just the given handles) to disk. The exporter is chosen from the path's file extension (.fbx, .obj, ...).
Inputs: path (required), format, handles.
get_scene_infoA
Get scene units, frame rate, frame range, and object count.
Inputs: no named parameters.
get_selectionA
Get the objects currently selected in the 3ds Max viewport.
Inputs: no named parameters.
list_objectsB
List scene objects, each as {handle, name, class, pos, bbox}.
filter matches (case-insensitive) against object name or class.
Inputs: filter, selected_only.
pingA
Check the bridge connection and report the 3ds Max scene state.
Inputs: no named parameters.
run_maxscriptA
Execute arbitrary MaxScript inside 3ds Max and return the result of the last expression. Escape hatch for anything not covered by a typed tool below.
Inputs: code (required).
run_pythonA
Execute arbitrary Python inside 3ds Max's embedded interpreter
(pymxs available as rt). For an expression, its value is returned;
for a statement block, assign to a variable named result to return
something. stdout is captured and returned too.
Inputs: code (required).
save_sceneB
Save the current scene. Omit path to save in place.
Inputs: path.
selectB
Select objects by handle (replaces the current selection).
Inputs: handles (required).
set_keyframeC
Set an animation keyframe on an object at the given frame number.
Inputs: handle (required), pos, rot, time, +1 more.
set_propertyC
Set an arbitrary MAXScript property on an object by name and return its new value.
Inputs: prop (required), value (required), handle (required).
transformB
Set an object's world position, Euler rotation (degrees, XYZ), and/or scale.
Inputs: handle (required), pos, rot, scale.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Every tool targets a distinct operation in the 3ds Max domain: scene state, materials, animation, scripting, selection, object creation, transformation, properties, deletion, export, and saving. Even the two scripting tools (run_maxscript and run_python) are cleanly separated by language, and set_property vs. transform have clear boundaries (arbitrary vs. spatial transformation). No two tools appear to do the same thing.
The majority of tools follow a verb_noun pattern (apply_material, set_keyframe, get_scene_info, create_object, set_property, save_scene, add_modifier). However, several tools use bare verbs (select, transform, delete, export, ping) and two use verb_language (run_maxscript, run_python). This mix of patterns is readable but not fully consistent.
With 17 tools, this is slightly above the ideal 3-15 range but still appropriate for a comprehensive 3ds Max bridge that covers modeling, animation, scene management, and export. The tools are not redundant, and the count reflects the breadth of operations required for a professional DCC integration.
The surface covers the core lifecycle: create, inspect, modify, delete, select, save, export, and add modifiers. It also handles materials and keyframes. Minor gaps include lack of a dedicated get_property tool (though run_maxscript can access anything) and no duplicate or group operations. Overall, agents can accomplish most workflows without dead ends.
Maintenance
Related MCP Connectors
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Connect your AI assistant to Blender for 3D modeling, Geometry Nodes, materials, lighting, animation, rendering and export. Inspect real scenes and viewport images, refine the result and restore checkpoints. OAuth connects your chat to Blender Bridge Desktop on an online Windows 10/11 x64 computer running Blender 4.2+. The chat can run on another device. Requires an active Blender Bridge account; 7-day trial available. AI model access is separate.
Blender-as-a-service for agents: search 3D assets, run Blender Python, or brief the studio agent.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to directly control Autodesk 3ds Max through natural language to create models, set materials, adjust lighting, and automate animations. It bridges the Model Context Protocol with 3ds Max via a TCP socket to execute Python and MAXScript commands.2418MIT
- AlicenseNot gradedqualityAmaintenanceConnect AI agents to Autodesk 3ds Max through the Model Context Protocol, enabling natural language control of scene creation, materials, modifiers, rendering, and plugin workflows.274 PyPI372MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to connect to Autodesk 3ds Max via the Model Context Protocol, allowing natural-language control of scene creation, modeling, materials, viewport capture, and plugin introspection through dedicated MCP tools.MIT
- AlicenseBqualityBmaintenanceEnables AI agents to directly control Autodesk 3ds Max for modeling, shading, rigging, animation, rendering, baking, and engine export through MCP.3753MIT