3ds MaxBLOCK
3ds Max MCP server
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Connect AI agents to Autodesk 3ds Max through the Model Context Protocol.
Automate everything!
Current release: 1.7.5 — see CHANGELOG.md.
Features
- 160 MCP tools — For scene reads, modeling, materials, modifiers, controllers, viewport capture, procedural graphs, and plugin workflows.
- Native Bridge — only 2023-2027 versions.
- Introspection — discover arbitrary Max classes for all kinds of automation and scripting purposes.
- Bundled agent skill — There is a bundled maxscript documentation if you want to create your own tools.
- FStorm materials and lights —
FStorm/FStormPBRtexture import, palette laydown and smart import; create and edit plane/disc/sphere lights and suns with native solar controls. See support and validation.
Requirements
- Windows and Autodesk 3ds Max 2023–2027
- An MCP client, such as Claude Desktop, Codex or Cursor
Quick start
- Close 3ds Max and fully exit your AI clients.
- Run
3dsmax-mcp-1.7.2-Setup.exeand select your clients. - Open 3ds Max and restart your AI client.
The installer includes Python, dependencies, native bridges and agent skills. To update, close Max and your clients, then run the new installer.
Install from source
Requires Python 3.12+, uv and Git. Close Max and your AI clients before installing.
git clone https://github.com/cl0nazepamm/3dsmax-mcp.git cd 3dsmax-mcp uv sync uv run python install.py
Use the default Full tool profile. To update, run git pull, uv sync, then uv run python install.py again.
See Advanced configuration for manua
16024f22bf5dOBSERVED · 2026-10-06Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add 3dsmax-mcp -- uvx 3dsmax-mcp
{
"mcpServers": {
"3dsmax-mcp": {
"command": "uvx",
"args": [
"3dsmax-mcp"
]
}
}
}Exposed tools (168)
96 read · 65 write · 7 destructive. Blast radius: 7 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
add_controller_target | write | Add a node variable or constraint target to an existing controller. |
add_data_channel | write | Append operators to a Data Channel modifier |
add_dc_script_operator | write | Add the legacy MAXScript input operator with explicit executable authorization. |
add_modifier | write | Add a modifier to an object. |
add_tyflow_collision | write | Add/configure Collision operator and wire collider node list. |
add_tyflow_event | write | Add one event to an existing tyFlow object. |
agent_viewport | read | Own a shaded floating AGENT VIEWPORT without moving the user |
analyze_node_orientation | read | Inspect world-space orientation, pivots, bounding boxes, and local axes for scene nodes. |
assign_controller | write | Create and assign a controller to a sub-anim track. |
assign_material | write | Create a material, or share an existing object |
backup_material_library | write | Save material-library scratchpads to .mat files without changing the scene. |
batch_file_info | read | Read metadata from multiple .max files in a single call. |
batch_rename_objects | write | Rename multiple objects in a single batch operation. |
batch_replace_materials | read | Replace multiple materials in a single operation. |
boolean_operation | read | Boolean modeling on a base object via the Boolean modifier (BooleanMod). |
capture_multi_view | read | Capture multiple viewport angles to a stitched file and return compact metadata. |
capture_screen | read | Capture the desktop or an unobscured V-Ray, Corona or FStorm frame buffer. |
capture_tyflow_editor | read | Open the tyFlow editor and capture the screen for visual wire inspection. |
capture_viewport | read | Capture AGENT VIEWPORT when open, otherwise the active view, to a saved file. |
clone_objects | read | Clone (copy/instance/reference) objects in the scene. |
collapse_modifier_stack | read | Collapse the modifier stack on an object. |
connect_tyflow_events | write | Connect events via Send Out using tyFlow |
connect_tyflow_operator | write | Connect a test/Send Out operator |
contact_check | read | Find meshes that pass through each other, touch, or float just short of contact. |
cosmos_download | read | Download a Cosmos model, material or HDRI without importing it. |
cosmos_import | write | Download if needed and import one Cosmos asset into the selected Max instance. |
cosmos_search | read | Find compatible Cosmos assets for the selected Max instance. |
create_lights | write | Create 1..32 semantic lights in one native transaction with typed readback. |
create_material_from_textures | write | Create a fully-wired PBR material from a folder of texture maps. |
create_mesh | write | Create an Editable Poly from explicit WORLD vertices and ordered polygon faces. |
create_object | write | Create a geometry object with spatial placement feedback. |
create_shell_material | write | Wrap render + export materials in a Shell Material (dual pipeline). |
create_texture_map | write | Create a texture map and store it as a MAXScript global variable. |
create_tyflow | write | Create tyFlow with one event and a configurable operator list. |
create_tyflow_preset | write | Create common tyFlow presets: rain, snow, fountain, burst, debris. |
curve_model | read | Construct editable curves, swept profiles or matched quad lofts with saved controls. |
delete_effect | destructive | Delete an atmospheric or render effect by index. |
delete_objects | destructive | Delete objects from the 3ds Max scene by name. |
disconnect_tyflow_operator | read | Disconnect an operator |
discover_plugin_classes | read | Enumerate ALL registered classes in 3ds Max |
discover_plugin_surface | read | Discover plugin-related classes and summarize likely entry points. |
draw_spline | write | Draw and edit spline shapes from explicit points (world-space). |
edit_curve | write | Atomic world-space base-spline edits guarded by inspect_curve.curve_token. |
edit_lights | write | Edit inspected lights atomically. Each edit contains light_ref, |
edit_vertices | write | Read and manipulate Editable_Poly vertices in world space. |
execute_maxscript | write | Execute arbitrary MAXScript in 3ds Max and return the result. |
execute_python | write | Execute Python in 3ds Max; return stdout, stderr and a JSON-compatible value. |
geometry_qa | read | Check evaluated mesh topology without changing the scene or collapsing its stack. |
get_bridge_status | read | Ping the MCP bridge for protocol/transport metadata. |
get_camera_sequence | write | Get only the camera-assigned State Sets, sorted by start frame. |
get_dependencies | read | Trace the reference graph for an object using refs.dependents / refs.dependentnodes. |
get_effects | read | List all atmospheric effects and render effects in the scene. |
get_hierarchy | read | Get the hierarchy tree of an object (recursive children). |
get_instances | read | Get all instances (copies sharing the same base object) of a scene object. |
get_material_library | read | Inspect the active material library scratchpad and Material Editor slots. |
get_material_slots | read | Get compact material slot/property info without schema caches. |
get_materials | read | List all materials assigned to objects in the current 3ds Max scene. |
get_object_properties | read | Get compact properties of a named object (transform, class, material name). |
get_plugin_capabilities | read | Get 3ds Max version, available renderers, installed plugins, and class counts. |
get_plugin_manifest | read | Return a structured plugin manifest derived from live runtime data plus curated hints. |
get_railclone_output | read | Inspect RailClone getXMLOutput at the current frame, without rendering. |
get_railclone_style | read | Read complete RailClone style XML and a token for guarded replacement. |
get_selected_max_instance | read | Read this MCP process |
get_session_context | read | Bundle bridge, capabilities, scene overview, and selection in one call. |
get_state_sets | read | Get all State Sets with their camera assignments and frame ranges. |
get_tyflow_graph | read | Full tyFlow graph view: events, operators, properties, ledger edges, staleness. |
get_tyflow_info | read | Inspect a tyFlow object with deep flow/event/operator/property readback. |
get_tyflow_particle_count | read | Return tyFlow particle count at current frame or supplied frame. |
get_tyflow_particles | read | Return particle data rows from tyFlow read-only APIs. |
get_wired_params | read | Show existing wire connections on an object. |
harvest_tyflow_manifest | read | Probe-harvest the tyFlow operator manifest and cache it per tyFlow version. |
inspect_controller | read | Inspect the controller on a specific sub-anim track. |
inspect_curve | read | Read an editable spline |
inspect_data_channel | write | Inspect the active Data Channel stack in processing order. |
inspect_lights | read | Decode actual light settings. Targets are light_ref objects returned by |
inspect_material_network | read | Inspect a material graph: wired slots, nested maps, file manifest, and health issues. |
inspect_max_file | read | Inspect an external .max file without opening it. |
inspect_mesh | read | Inspect an Editable Poly BASE cage with actionable component IDs and optional labeled capture. |
inspect_modifier_properties | read | Compatibility alias for inspect_properties(target= |
inspect_object | read | Get a deep exploratory object summary (props, modifiers, material, instances). |
inspect_plugin_class | read | Inspect a plugin class. schema_version=2 provides bounded SDK metadata, |
inspect_plugin_constructor | read | Return likely creation notes for a plugin class. |
inspect_plugin_instance | read | Inspect a live plugin. Version 1 preserves the legacy scene-node response. |
inspect_properties | read | Deep-inspect all properties of an object, modifier, base object, or material. |
inspect_track_view | read | Inspect an object |
introspect_class | read | Inspect SDK class descriptors and published interfaces; unpublished APIs may be absent. |
introspect_instance | read | Deep C++ SDK introspection of a live scene object with actual values. |
introspect_osl | read | Inspect the API surface of any material, texturemap, or modifier class. |
invoke_tool | write | Invoke any registered MCP tool inside 3ds Max via the native bridge. |
isolate_and_capture_selected | read | Capture isolated viewport screenshots of each selected object (resolves to top-level parents). |
keyframe_tracks | write | Deterministic native animation edits. Actions: timeline; list/set; delete_keys/move_keys/scale_keys; resample or bake; normalize_tangents/style; match/loop; ort. Key-time edits use time/times or from_time/to_time. bake replaces keys in its sample window by default; resample preserves them unless rep |
learn_scene_patterns | read | Analyze the current scene to learn real-world class usage patterns. |
lighting_capabilities | read | Discover supported lighting shapes, units, renderer routes and color policy. |
list_dc_operators | read | Discover the live Data Channel operator catalog. |
list_dc_presets | read | List available Data Channel presets without creating a scene object. |
list_max_instances | write | List live Max instances in default order without selecting one. |
list_plugin_classes | read | List classes likely tied to a plugin or superclass family. |
list_tyflow_operator_types | read | Return available and unavailable tyFlow operator names for this installation. |
list_tyflow_operators | read | Query the cached tyFlow operator manifest (no Max traffic). |
list_wireable_params | read | Discover sub-anim parameters on an object that can be wired. |
load_dc_preset | read | Load a Data Channel preset into the object |
loft_mesh | write | Create/read/update a parameterized quad loft stored on its mesh node in the .max file. |
main_thread | read | Inspect or clean up what runs on the Max main/UI thread. |
make_modifier_unique | read | Make an instanced modifier unique (de-instance it). |
manage_data_channel_stack | write | Safely edit a Data Channel stack. |
manage_groups | write | Manage object groups — create, ungroup, open, close, attach, detach. |
manage_layers | destructive | Manage scene layers — create, delete, list, set properties, move objects. |
manage_scene | read | Manage the 3ds Max scene state. |
manage_selection_sets | destructive | Manage named selection sets — create, delete, list, select, replace. |
map_class_relationships | read | Map which classes can reference which types via their ParamBlock2 params. |
material_roles | read | Read the files connected to each material slot, including wrappers and submaterials. |
max_dialogs | read | Read and answer dialogs blocking 3ds Max, over an independent connection. |
mcg_get_context | read | Return the live MCG compiler, temp workspace, templates, and safety context. |
mcg_inspect_graph | read | Inspect a session graph or read-only source as normalized graph data. |
mcg_list_graphs | read | List session graphs or read-only installed/sample graph sources. |
mcg_search_operators | read | Search typed inputs plus value(0)/function(1) outputs; fall back to XML offline. |
merge_from_file | write | Merge objects from an external .max file into the current scene. |
mesh_edit | write | Edit vertices, edges, and faces as one undoable batch, rolling back on failure. |
modify_tyflow_operator | write | Set operator properties on an existing tyFlow event/operator pair. |
palette_laydown | read | Lay down folder textures into Compact Material Editor palette slots. |
pick_component | read | Target Editable Poly base-cage IDs from an AGENT VIEWPORT capture. |
plugin_patch | write | Atomically edit inspected PB2 properties with native typed readback. |
query_scene | read | Unified scene query. action: overview | filter | class | property | selection | delta. |
refresh_plugin_manifest | read | Refresh and return the plugin manifest. |
release_max_instance | read | Release this MCP process |
remove_modifier | destructive | Remove a modifier from an object by name. |
remove_tyflow_element | destructive | Remove operator from an event, or remove event when operator_name is empty. |
render_automations | read | Arm a done-signal for the NEXT render, then report when it finishes. |
render_scene | read | Render the current viewport in 3ds Max. |
replace_material | read | Replace one material with another across all objects that use it. |
replicate_material | write | Preview or apply a structure-preserving material clone/remap through native C++. |
reset_tyflow_simulation | destructive | Reset simulation for one tyFlow object or for all tyFlow objects. |
resolve_node_refs | read | Resolve NodeRefs to canonical identities plus mutation sceneSeq. |
run_tool_smoke | write | Run generated live smoke cases against the native bridge inside 3ds Max. |
scatter_forest_pack | write | Create a Forest Pack scatter object and wire surfaces + source geometry. |
scene_patch | write | Preflight and atomically apply mechanical node edits in one native undo step. |
scene_qa | read | Scan or repair non-mesh scene hygiene using the native SDK. |
script_controller | write | Inspect, validate or atomically apply a script controller with typed inputs. |
search_max_files | read | Search .max files in a folder for objects matching a name pattern. |
select_max_instance | read | Bind this MCP process to a live Max PID until explicitly changed or released. |
select_objects | read | Select objects in the 3ds Max scene. An explicit names=[] clears selection. |
set_controller_props | write | Modify script text or properties on an existing controller. |
set_data_channel_operator | write | Set properties on a 1-based visible stack operator with rollback on error. |
set_material_properties | write | Set multiple properties on an object |
set_material_property | write | Set a property on an object |
set_modifier_property | write | Set a modifier parameter on one object or many. |
set_modifier_state | write | Set the enable state of a modifier with viewport/render granularity. |
set_object_property | write | Set a property on a named object in the 3ds Max scene. |
set_parent | write | Parent or unparent objects in the 3ds Max scene. |
set_railclone_style | write | Replace a RailClone graph using setXMLStyle and return actual XML readback. |
set_sub_material | write | Create or assign a sub-material in a Multi/Sub-Object material slot. |
set_texture_map_properties | write | Set properties on a texture map stored as a MAXScript global variable. |
set_tyflow_physx | write | Set object-level PhysX settings from tyFlow object properties. |
set_tyflow_shape | write | Set Shape operator with validated 3D shape IDs. |
set_tyflow_wiring_ledger | write | Reconcile the wiring ledger by hand (e.g. after reading an editor capture). |
set_viewport | write | Set the agent modeling view when open, otherwise the active viewport. |
set_visibility | write | Show, hide, freeze, or unfreeze objects. |
smart_import | write | Batch-import 3D meshes from a folder, auto-assigning materials by stem matching. |
toggle_effect | write | Enable or disable an atmospheric or render effect by index. |
transform_object | write | Move, rotate, and/or scale an object by world/local offsets. |
tyflow_apply_patch | write | Apply a batch of tyFlow graph operations as one transaction. |
tyflow_event_census | read | Per-event particle counts at probe frames via temporary instrumentation. |
undo_last | read | Undo the last 3ds Max scene operation. |
unwire_params | read | Disconnect a wired parameter. |
walk_references | read | Walk the full reference dependency graph of a scene object. |
watch_scene | read | Live scene event watcher — track what happens in 3ds Max in real-time. |
wire_params | read | Connect parameters between objects with a wire expression. |
write_osl_shader | write | Write an OSL shader to disk and create an OSLMap from it. |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (5 observation(s))
- Network
- declared (7 observation(s))
- Shell
- declared (4 observation(s))
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (17)
bootstrap = safe_string(f"exec({ascii(source)}, {{}})")verify=False,
verify=False,
verify=False,
mod = importlib.import_module(f"maxmcp.tools.{module_name}")delete_effect, delete_objects, manage_layers, manage_selection_sets, remove_modifier, remove_tyflow_element, reset_tyflow_simulation
return hashlib.sha1(canonical.encode("utf-8")).hexdigest()INSTALLER_ANSI_BANNER = base64.b64decode(
"name": base64.b64decode(parts[2], validate=True).decode("utf-8"),data = b"".join(base64.b64decode(encoded[i:i+4], validate=True)
return base64.b64decode(value, validate=True).decode("utf-8")img_bytes = b64decode(raw_data)
native/bin/mcp_bridge_2023.gup
native/bin/mcp_bridge_2024.gup
native/bin/mcp_bridge_2025.gup
native/bin/mcp_bridge_2026.gup
native/bin/mcp_bridge_2027.gup
Gates applied: no_behavioural_pass.
16024f22bf5dfull audit observations/trust-audit/mcp-server/cl0nazepamm__3ds-max.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-06 | 16024f22bf5d | BLOCK | D | 69 | first audit |
Questions
What is the 3ds Max MCP server?
3ds Max MCP server
What tools does 3ds Max expose?
168 in total: 96 read-only, 65 that write, and 7 that can delete or overwrite (delete_effect, delete_objects, manage_layers, manage_selection_sets, remove_modifier). Every one is listed on this page with its risk.
Is 3ds Max safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 4 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 7 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does 3ds Max need?
No credential environment variables were found in its source, so it appears to need none.
How does 3ds Max run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as 3dsmax-mcp.
How current is this page?
The grade is for one exact copy of the source (16024f22bf5d), read on 2026-10-06. The repository is watched and re-audited when it changes.