원클릭으로
3dsmax-mcp
Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | 3dsmax-mcp |
| description | Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP. |
Principles:
get_bridge_status or get_session_context as a session preamble.Scene reads — use query_scene(action=...):
overview | filter | class | property | selection | deltaget_instances / get_dependencies — instancing and reference graphget_session_context — bridge + capabilities + overview + selection (on demand only)Object/material/plugin inspection:
inspect_object, inspect_properties, get_material_slots, get_materials, get_material_libraryanalyze_node_orientation — pivot, bbox, local axes, world matrix before rig/vehicle/camera transformsintrospect_class, introspect_instance, introspect_osl, discover_plugin_classes, map_class_relationships — unfamiliar plugin APIs and exact param namesai_standard_surface may not appear in class discovery; inspect with inspect_plugin_class or introspect_oslMutation:
query_scene(action=delta), re-inspection, or viewport capture.Debugging:
walk_references — trace dependencies from a live objectwatch_scene — track user actions during an interactive sessionexecute_maxscript — fallback only when no dedicated tool existsLayers — manage_layers:
list, create, delete, set_current, set_properties, add_objects, select_objectsGroups — manage_groups:
list, create, ungroup, open, close, attach, detachNamed Selection Sets — manage_selection_sets:
list, create, delete, select, replacequery_scene get_hierarchy get_instances get_dependencies
get_object_properties analyze_node_orientation set_object_property create_object delete_objects transform_object select_objects set_visibility clone_objects set_parent batch_rename_objects
add_modifier remove_modifier set_modifier_state set_modifier_property collapse_modifier_stack make_modifier_unique
assign_material, create_material_from_textures, smart_import, palette_laydownset_material_property, set_material_propertiesget_material_slots, get_materials, get_material_librarybackup_material_library saves currentMaterialLibrary / meditMaterials to .matset_sub_materialcreate_texture_map, set_texture_map_propertiescreate_shell_material, replace_material, batch_replace_materialswrite_osl_shadercreate_material_from_textures and smart_import default to OpenPBR. Pass material_class for Physical, Arnold, Redshift, V-Ray, MaterialX, Octane, etc. (see tool tripback hint.renderers).create_shell_material wraps two scene materials in Shell_Material (render slot 0, export/viewport slot 1), or builds from texture_folder with render_material_class / export_material_class. Shell is a container, not a renderer.capture_viewportcapture_multi_viewcapture_screen (requires enabled=True)inspect_max_file, search_max_files, merge_from_file, batch_file_infodiscover_plugin_surface, get_plugin_manifest, refresh_plugin_manifestinspect_plugin_class, inspect_plugin_constructor, inspect_plugin_instanceresource://3dsmax-mcp/plugins/{name}/manifest|guide|recipes|gotchascreate_tyflow, create_tyflow_presetget_tyflow_info (include_operator_properties for deep readback)modify_tyflow_operator, set_tyflow_shape, set_tyflow_physx, add_tyflow_collisionreset_tyflow_simulation, get_tyflow_particle_count, get_tyflow_particlesscatter_forest_pack — surfaces + source geometry; auto footprint per variantassign_controller, inspect_controller, inspect_track_view, set_controller_props, add_controller_targetlist_wireable_params, wire_params, get_wired_params, unwire_paramsFor Data Channel or Max Creation Graph work, read procedural-graphs.md completely before acting. It contains the dedicated tool workflows, agentic compile/verify loop, safety gates, validation rules, and runtime pitfalls.
manage_scene (hold/fetch/reset/save/info)get_state_sets, get_camera_sequenceexecute_maxscriptAlmost never. Only when there is genuinely no dedicated tool:
Do not use for: anything a dedicated tool already does — properties, objects, materials, selection, batch ops, inspection.
set_modifier_property: name + modifier_index (1-based) for one modifier; modifier_class + names for batch. Inspect with inspect_properties(target="modifier") first.smart_import: default lod_filter="lod0". Shared maps match on asset id; variant meshes in a bundle folder with Textures/ share one material key — omit name_pattern for all variants.palette_laydown: sample_mode="random_per_subfolder" for large per-subfolder asset libraries; overflow_mode="palette_then_library" when more than 24 picks.scatter_forest_pack: needs non-zero widthlist/heightlist per geometry item. Hide source meshes after scatter.get_material_slots: prefer slot_scope="map" unless you need every param (slot_scope="all" + include_values:true is huge on Arnold/Physical).create_object: default pos_mode="ground" — pos is bottom-center contact, not bbox center. Tripback includes bbox, placement, groundContact.width=X, length=Y, height=Z.list_wireable_params paths include [#Parameters] levels — pass through to wire_params as-is.create_shell_material: mcp_findMaterialByName uses sceneMaterials — getClassInstances Material is invalid (Material is not a MAXClass).getHandleByAnim formats as values like 12345P; quote it as a string when building JSON, or the result is invalid JSON.ToolEnvelope dict (ok/result/error/hint), not a JSON string. Error envelopes may include hint.suggested_tools; tool-authored hints win over auto-hints.message; classify raw structured errors by error, code, or status=error|failed, not by message alone.keyframe_tracks)action=list — read-only inspection; pass from_time/to_time for loopGaps. Parent numKeys is often 0 — keys live on Bezier Float sub-controllers.action=loop — copies evaluated pose from from_time to to_time parent-first; use for parented reflection rigs (e.g. Plane001 → children). Defaults: frames 1→100.action=match with order=hierarchy — same parent-first copy as loop when closing endpoints on rigged hierarchies.value/move on keyed tracks over transform_object for animated objects — transform_object rewrites keys at the current slider frame.tracks accepts exact tokens only: all, position/pos, rotation/rot, scale/scl, transform/tm — not substring matches.Box width:10 not Box() width:10try (...) catch (ex) (ex)Noise vs Noisemodifier: texture map vs modifier(getDir #temp) is Max temp, not OS temp[#Z Position] to [#z_position]write_osl_shader for file I/O and compilationintrospect_osl before wiring — not introspect_class on OSLMap (massive output)shader_name; use unique names (cache reuse)Read the relevant reference file before writing unfamiliar MAXScript:
| File | Covers |
|---|---|
maxscript-core-syntax.md | Variables, scope, types, operators, control flow |
maxscript-common-patterns.md | Undo/animate blocks, callbacks, file I/O |
maxscript-3dsmax-objects.md | Nodes, transforms, hierarchy, properties |
maxscript-mesh-poly-ops.md | Sub-object mesh/poly ops |
maxscript-materials-textures.md | Materials, texmaps, PBR |
maxscript-animation-controllers.md | Controllers, constraints, wire params |
maxscript-rendering-cameras.md | Render settings, cameras, environment |
maxscript-splines-shapes.md | Splines and shapes |
maxscript-scripted-plugins.md | Scripted geometry, modifiers, utilities |
maxscript-ui-rollouts.md | Rollout UIs and dialogs |
$Box001.modifiers[#Unwrap_UVW].edit() — not the OpenUnwrapUI macro aloneExperimental in-Max chat (Customize UI → MCP → MCP Chat). Prefer external MCP for production.
safe_mode as external MCPquery_scene / inspect_object for scene state — not auto-injected by default/reload, /clear, /help