بنقرة واحدة
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_paramsadd_data_channel, inspect_data_channel, set_data_channel_operator, add_dc_script_operatormanage_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.add_data_channel: reuses first DC modifier by default; create_new=true for a second stack entry.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