Atlas / MCP servers / cl0nazepamm / 3ds Max

3ds MaxBLOCK

mcp/cl0nazepamm/3ds-max

3ds Max MCP server

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
168 96r · 65w · 7d
Transport
stdio
License
MIT
Stars
288
01

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/FStormPBR texture 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

  1. Close 3ds Max and fully exit your AI clients.
  2. Run 3dsmax-mcp-1.7.2-Setup.exe and select your clients.
  3. 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

Read from source at commit 16024f22bf5dOBSERVED · 2026-10-06
02

Connect

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-code
claude mcp add 3dsmax-mcp -- uvx 3dsmax-mcp
claude-desktop
{
  "mcpServers": {
    "3dsmax-mcp": {
      "command": "uvx",
      "args": [
        "3dsmax-mcp"
      ]
    }
  }
}
03

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.

ToolRiskDescription
add_controller_targetwriteAdd a node variable or constraint target to an existing controller.
add_data_channelwriteAppend operators to a Data Channel modifier
add_dc_script_operatorwriteAdd the legacy MAXScript input operator with explicit executable authorization.
add_modifierwriteAdd a modifier to an object.
add_tyflow_collisionwriteAdd/configure Collision operator and wire collider node list.
add_tyflow_eventwriteAdd one event to an existing tyFlow object.
agent_viewportreadOwn a shaded floating AGENT VIEWPORT without moving the user
analyze_node_orientationreadInspect world-space orientation, pivots, bounding boxes, and local axes for scene nodes.
assign_controllerwriteCreate and assign a controller to a sub-anim track.
assign_materialwriteCreate a material, or share an existing object
backup_material_librarywriteSave material-library scratchpads to .mat files without changing the scene.
batch_file_inforeadRead metadata from multiple .max files in a single call.
batch_rename_objectswriteRename multiple objects in a single batch operation.
batch_replace_materialsreadReplace multiple materials in a single operation.
boolean_operationreadBoolean modeling on a base object via the Boolean modifier (BooleanMod).
capture_multi_viewreadCapture multiple viewport angles to a stitched file and return compact metadata.
capture_screenreadCapture the desktop or an unobscured V-Ray, Corona or FStorm frame buffer.
capture_tyflow_editorreadOpen the tyFlow editor and capture the screen for visual wire inspection.
capture_viewportreadCapture AGENT VIEWPORT when open, otherwise the active view, to a saved file.
clone_objectsreadClone (copy/instance/reference) objects in the scene.
collapse_modifier_stackreadCollapse the modifier stack on an object.
connect_tyflow_eventswriteConnect events via Send Out using tyFlow
connect_tyflow_operatorwriteConnect a test/Send Out operator
contact_checkreadFind meshes that pass through each other, touch, or float just short of contact.
cosmos_downloadreadDownload a Cosmos model, material or HDRI without importing it.
cosmos_importwriteDownload if needed and import one Cosmos asset into the selected Max instance.
cosmos_searchreadFind compatible Cosmos assets for the selected Max instance.
create_lightswriteCreate 1..32 semantic lights in one native transaction with typed readback.
create_material_from_textureswriteCreate a fully-wired PBR material from a folder of texture maps.
create_meshwriteCreate an Editable Poly from explicit WORLD vertices and ordered polygon faces.
create_objectwriteCreate a geometry object with spatial placement feedback.
create_shell_materialwriteWrap render + export materials in a Shell Material (dual pipeline).
create_texture_mapwriteCreate a texture map and store it as a MAXScript global variable.
create_tyflowwriteCreate tyFlow with one event and a configurable operator list.
create_tyflow_presetwriteCreate common tyFlow presets: rain, snow, fountain, burst, debris.
curve_modelreadConstruct editable curves, swept profiles or matched quad lofts with saved controls.
delete_effectdestructiveDelete an atmospheric or render effect by index.
delete_objectsdestructiveDelete objects from the 3ds Max scene by name.
disconnect_tyflow_operatorreadDisconnect an operator
discover_plugin_classesreadEnumerate ALL registered classes in 3ds Max
discover_plugin_surfacereadDiscover plugin-related classes and summarize likely entry points.
draw_splinewriteDraw and edit spline shapes from explicit points (world-space).
edit_curvewriteAtomic world-space base-spline edits guarded by inspect_curve.curve_token.
edit_lightswriteEdit inspected lights atomically. Each edit contains light_ref,
edit_verticeswriteRead and manipulate Editable_Poly vertices in world space.
execute_maxscriptwriteExecute arbitrary MAXScript in 3ds Max and return the result.
execute_pythonwriteExecute Python in 3ds Max; return stdout, stderr and a JSON-compatible value.
geometry_qareadCheck evaluated mesh topology without changing the scene or collapsing its stack.
get_bridge_statusreadPing the MCP bridge for protocol/transport metadata.
get_camera_sequencewriteGet only the camera-assigned State Sets, sorted by start frame.
get_dependenciesreadTrace the reference graph for an object using refs.dependents / refs.dependentnodes.
get_effectsreadList all atmospheric effects and render effects in the scene.
get_hierarchyreadGet the hierarchy tree of an object (recursive children).
get_instancesreadGet all instances (copies sharing the same base object) of a scene object.
get_material_libraryreadInspect the active material library scratchpad and Material Editor slots.
get_material_slotsreadGet compact material slot/property info without schema caches.
get_materialsreadList all materials assigned to objects in the current 3ds Max scene.
get_object_propertiesreadGet compact properties of a named object (transform, class, material name).
get_plugin_capabilitiesreadGet 3ds Max version, available renderers, installed plugins, and class counts.
get_plugin_manifestreadReturn a structured plugin manifest derived from live runtime data plus curated hints.
get_railclone_outputreadInspect RailClone getXMLOutput at the current frame, without rendering.
get_railclone_stylereadRead complete RailClone style XML and a token for guarded replacement.
get_selected_max_instancereadRead this MCP process
get_session_contextreadBundle bridge, capabilities, scene overview, and selection in one call.
get_state_setsreadGet all State Sets with their camera assignments and frame ranges.
get_tyflow_graphreadFull tyFlow graph view: events, operators, properties, ledger edges, staleness.
get_tyflow_inforeadInspect a tyFlow object with deep flow/event/operator/property readback.
get_tyflow_particle_countreadReturn tyFlow particle count at current frame or supplied frame.
get_tyflow_particlesreadReturn particle data rows from tyFlow read-only APIs.
get_wired_paramsreadShow existing wire connections on an object.
harvest_tyflow_manifestreadProbe-harvest the tyFlow operator manifest and cache it per tyFlow version.
inspect_controllerreadInspect the controller on a specific sub-anim track.
inspect_curvereadRead an editable spline
inspect_data_channelwriteInspect the active Data Channel stack in processing order.
inspect_lightsreadDecode actual light settings. Targets are light_ref objects returned by
inspect_material_networkreadInspect a material graph: wired slots, nested maps, file manifest, and health issues.
inspect_max_filereadInspect an external .max file without opening it.
inspect_meshreadInspect an Editable Poly BASE cage with actionable component IDs and optional labeled capture.
inspect_modifier_propertiesreadCompatibility alias for inspect_properties(target=
inspect_objectreadGet a deep exploratory object summary (props, modifiers, material, instances).
inspect_plugin_classreadInspect a plugin class. schema_version=2 provides bounded SDK metadata,
inspect_plugin_constructorreadReturn likely creation notes for a plugin class.
inspect_plugin_instancereadInspect a live plugin. Version 1 preserves the legacy scene-node response.
inspect_propertiesreadDeep-inspect all properties of an object, modifier, base object, or material.
inspect_track_viewreadInspect an object
introspect_classreadInspect SDK class descriptors and published interfaces; unpublished APIs may be absent.
introspect_instancereadDeep C++ SDK introspection of a live scene object with actual values.
introspect_oslreadInspect the API surface of any material, texturemap, or modifier class.
invoke_toolwriteInvoke any registered MCP tool inside 3ds Max via the native bridge.
isolate_and_capture_selectedreadCapture isolated viewport screenshots of each selected object (resolves to top-level parents).
keyframe_trackswriteDeterministic 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_patternsreadAnalyze the current scene to learn real-world class usage patterns.
lighting_capabilitiesreadDiscover supported lighting shapes, units, renderer routes and color policy.
list_dc_operatorsreadDiscover the live Data Channel operator catalog.
list_dc_presetsreadList available Data Channel presets without creating a scene object.
list_max_instanceswriteList live Max instances in default order without selecting one.
list_plugin_classesreadList classes likely tied to a plugin or superclass family.
list_tyflow_operator_typesreadReturn available and unavailable tyFlow operator names for this installation.
list_tyflow_operatorsreadQuery the cached tyFlow operator manifest (no Max traffic).
list_wireable_paramsreadDiscover sub-anim parameters on an object that can be wired.
load_dc_presetreadLoad a Data Channel preset into the object
loft_meshwriteCreate/read/update a parameterized quad loft stored on its mesh node in the .max file.
main_threadreadInspect or clean up what runs on the Max main/UI thread.
make_modifier_uniquereadMake an instanced modifier unique (de-instance it).
manage_data_channel_stackwriteSafely edit a Data Channel stack.
manage_groupswriteManage object groups — create, ungroup, open, close, attach, detach.
manage_layersdestructiveManage scene layers — create, delete, list, set properties, move objects.
manage_scenereadManage the 3ds Max scene state.
manage_selection_setsdestructiveManage named selection sets — create, delete, list, select, replace.
map_class_relationshipsreadMap which classes can reference which types via their ParamBlock2 params.
material_rolesreadRead the files connected to each material slot, including wrappers and submaterials.
max_dialogsreadRead and answer dialogs blocking 3ds Max, over an independent connection.
mcg_get_contextreadReturn the live MCG compiler, temp workspace, templates, and safety context.
mcg_inspect_graphreadInspect a session graph or read-only source as normalized graph data.
mcg_list_graphsreadList session graphs or read-only installed/sample graph sources.
mcg_search_operatorsreadSearch typed inputs plus value(0)/function(1) outputs; fall back to XML offline.
merge_from_filewriteMerge objects from an external .max file into the current scene.
mesh_editwriteEdit vertices, edges, and faces as one undoable batch, rolling back on failure.
modify_tyflow_operatorwriteSet operator properties on an existing tyFlow event/operator pair.
palette_laydownreadLay down folder textures into Compact Material Editor palette slots.
pick_componentreadTarget Editable Poly base-cage IDs from an AGENT VIEWPORT capture.
plugin_patchwriteAtomically edit inspected PB2 properties with native typed readback.
query_scenereadUnified scene query. action: overview | filter | class | property | selection | delta.
refresh_plugin_manifestreadRefresh and return the plugin manifest.
release_max_instancereadRelease this MCP process
remove_modifierdestructiveRemove a modifier from an object by name.
remove_tyflow_elementdestructiveRemove operator from an event, or remove event when operator_name is empty.
render_automationsreadArm a done-signal for the NEXT render, then report when it finishes.
render_scenereadRender the current viewport in 3ds Max.
replace_materialreadReplace one material with another across all objects that use it.
replicate_materialwritePreview or apply a structure-preserving material clone/remap through native C++.
reset_tyflow_simulationdestructiveReset simulation for one tyFlow object or for all tyFlow objects.
resolve_node_refsreadResolve NodeRefs to canonical identities plus mutation sceneSeq.
run_tool_smokewriteRun generated live smoke cases against the native bridge inside 3ds Max.
scatter_forest_packwriteCreate a Forest Pack scatter object and wire surfaces + source geometry.
scene_patchwritePreflight and atomically apply mechanical node edits in one native undo step.
scene_qareadScan or repair non-mesh scene hygiene using the native SDK.
script_controllerwriteInspect, validate or atomically apply a script controller with typed inputs.
search_max_filesreadSearch .max files in a folder for objects matching a name pattern.
select_max_instancereadBind this MCP process to a live Max PID until explicitly changed or released.
select_objectsreadSelect objects in the 3ds Max scene. An explicit names=[] clears selection.
set_controller_propswriteModify script text or properties on an existing controller.
set_data_channel_operatorwriteSet properties on a 1-based visible stack operator with rollback on error.
set_material_propertieswriteSet multiple properties on an object
set_material_propertywriteSet a property on an object
set_modifier_propertywriteSet a modifier parameter on one object or many.
set_modifier_statewriteSet the enable state of a modifier with viewport/render granularity.
set_object_propertywriteSet a property on a named object in the 3ds Max scene.
set_parentwriteParent or unparent objects in the 3ds Max scene.
set_railclone_stylewriteReplace a RailClone graph using setXMLStyle and return actual XML readback.
set_sub_materialwriteCreate or assign a sub-material in a Multi/Sub-Object material slot.
set_texture_map_propertieswriteSet properties on a texture map stored as a MAXScript global variable.
set_tyflow_physxwriteSet object-level PhysX settings from tyFlow object properties.
set_tyflow_shapewriteSet Shape operator with validated 3D shape IDs.
set_tyflow_wiring_ledgerwriteReconcile the wiring ledger by hand (e.g. after reading an editor capture).
set_viewportwriteSet the agent modeling view when open, otherwise the active viewport.
set_visibilitywriteShow, hide, freeze, or unfreeze objects.
smart_importwriteBatch-import 3D meshes from a folder, auto-assigning materials by stem matching.
toggle_effectwriteEnable or disable an atmospheric or render effect by index.
transform_objectwriteMove, rotate, and/or scale an object by world/local offsets.
tyflow_apply_patchwriteApply a batch of tyFlow graph operations as one transaction.
tyflow_event_censusreadPer-event particle counts at probe frames via temporary instrumentation.
undo_lastreadUndo the last 3ds Max scene operation.
unwire_paramsreadDisconnect a wired parameter.
walk_referencesreadWalk the full reference dependency graph of a scene object.
watch_scenereadLive scene event watcher — track what happens in 3ds Max in real-time.
wire_paramsreadConnect parameters between objects with a wire expression.
write_osl_shaderwriteWrite an OSL shader to disk and create an OSLMap from it.
04

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.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (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)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
maxmcp/helpers/python_execution.py:59
bootstrap = safe_string(f"exec({ascii(source)}, {{}})")
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
maxmcp/tools/mcg.py:1395
verify=False,
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
maxmcp/tools/mcg.py:1996
verify=False,
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
maxmcp/tools/mcg.py:2108
verify=False,
Why it matters. certificate verification is disabled
Fix. leave verification on
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
scripts/run_live_tool_smoke.py:224
mod = importlib.import_module(f"maxmcp.tools.{module_name}")
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_effect, delete_objects, manage_layers, manage_selection_sets, remove_modifier, remove_tyflow_element, reset_tyflow_simulation
Why it matters. 7 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
maxmcp/tools/_tyflow_core.py:160
return hashlib.sha1(canonical.encode("utf-8")).hexdigest()
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
install.py:59
INSTALLER_ANSI_BANNER = base64.b64decode(
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
maxmcp/helpers/contact_check.py:154
"name": base64.b64decode(parts[2], validate=True).decode("utf-8"),
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
maxmcp/helpers/cosmos_client.py:147
data = b"".join(base64.b64decode(encoded[i:i+4], validate=True)
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
maxmcp/helpers/curve_runtime.py:63
return base64.b64decode(value, validate=True).decode("utf-8")
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
maxmcp/tool_response.py:243
img_bytes = b64decode(raw_data)
INFOInventory / provenance · inv.oversize · CWE-1104
native/bin/mcp_bridge_2023.gup
native/bin/mcp_bridge_2023.gup
Why it matters. 2506752 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
native/bin/mcp_bridge_2024.gup
native/bin/mcp_bridge_2024.gup
Why it matters. 2510336 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
native/bin/mcp_bridge_2025.gup
native/bin/mcp_bridge_2025.gup
Why it matters. 2509824 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
native/bin/mcp_bridge_2026.gup
native/bin/mcp_bridge_2026.gup
Why it matters. 2509824 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
native/bin/mcp_bridge_2027.gup
native/bin/mcp_bridge_2027.gup
Why it matters. 2454016 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-06 · audit v0.4.1 · source sha 16024f22bf5dfull audit observations/trust-audit/mcp-server/cl0nazepamm__3ds-max.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-0616024f22bf5dBLOCKD69first audit
06

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.

Advertisement