Agent skill

3dsmax MCP

by cl0nazepamm in cl0nazepamm/3dsmax-mcp

Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP.

MITAuto-check passedAgent Workflows

Install 3dsmax MCP

skills CLI
$ npx skills add cl0nazepamm/3dsmax-mcp --skill 3dsmax-mcp -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install cl0nazepamm/3dsmax-mcp 3dsmax-mcp --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/cl0nazepamm/3dsmax-mcp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/3dsmax-mcp-dev .claude/skills/3dsmax-mcp && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
3dsmax-mcp
GitHub stars
297
Token cost
~3.3k tokens
SKILL.md length
1,478 words
Files
15
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP.

  • Tasks that involve MCP servers
  • SKILL.md covers Tool Profile Routing, Principles, Tool Choice and Workflows, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

3dsmax MCP is an agent skill from cl0nazepamm/3dsmax-mcp. Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 14 other files (for example `curve-construction.md`, `maxscript-3dsmax-objects.md` and `maxscript-animation-controllers.md`).

It sits in Agent Workflows, covering MCP servers. It works with Model Context Protocol. The licence is MIT.

When your agent uses it

  • Tasks that involve MCP servers

Example prompts

  • “/3dsmax-mcp”

What it can do on your machine

Read from SKILL.md and the folder at commit 29aed53. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

3dsmax MCP loads about 3.3k tokens when it runs. Until then it costs about 23 tokens; SKILL.md has 1,478 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~23
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from cl0nazepamm/3dsmax-mcp at commit 29aed53, republished under its MIT licence (© cl0nazepamm). 1,478 words, ~3,267 tokens.

Download SKILL.mdSave it as .claude/skills/3dsmax-mcp/SKILL.md (or your agent's skills folder). This skill also uses 14 other files; get the full folder from GitHub.
name
3dsmax-mcp
description
Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP.

3ds Max MCP — Agent Guide

Each tool's description documents its parameters, modes and limits. This guide covers what no single tool can: routing, tool choice, cross-tool workflows, safety rules and MAXScript pitfalls.

Tool Profile Routing

  • Full/core: operational tools such as query_scene and create_object are advertised directly; call them by name.
  • Progressive: if only list_toolsets, describe_toolset and call_tool are advertised, never call an operational name as a top-level tool. Pick a capability with list_toolsets, load only that group with describe_toolset, then invoke it through call_tool(name=..., arguments=...). If the exact tool and arguments are already known, call_tool can dispatch directly.

Principles

  • Match the user's request. Do not run setup, discovery or scene analysis by habit, and do not call get_bridge_status or get_session_context as a preamble.
  • Prefer a dedicated tool over raw MAXScript whenever one clearly matches.
  • Do not render unless the user asks. Viewport capture is fine when visual proof helps.
  • Verify meaningful edits with query_scene(action="delta"), re-inspection or a capture.
  • Keep mutating calls sequential. Concurrent writes interleave undo transactions: a crash, then persistent corruption such as phantom successes and wrong handles.
  • Multiple Max instances: the first native connection stays bound to that Max and never silently switches. Use list_max_instances, select_max_instance(pid), get_selected_max_instance and release_max_instance. MCP_MAX_PIPE or MCP_MAX_PID pins the startup target (the pipe takes precedence); release also clears it.

Tool Choice

  • Scene reads: query_scene (overview/filter/class/property/selection/delta), get_hierarchy, get_instances, get_dependencies, walk_references. resolve_node_refs gives canonical handle/name/path identity. scene_qa checks naming, transforms, hierarchy and timeline only; it never judges meshes or visuals, and its fix repairs naming only (preview with dry_run=true unless approved).
  • Inspection: inspect_object, inspect_properties, analyze_node_orientation (before rig, vehicle or camera transforms). For unfamiliar plugin APIs: introspect_class, introspect_instance, discover_plugin_classes, map_class_relationships, inspect_plugin_class. Arnold materials such as ai_standard_surface may be missing from class discovery; use inspect_plugin_class or introspect_osl.
  • Edits: object, modifier, material, controller, organization (manage_layers, manage_groups, manage_selection_sets) and viewport tools. Use scene_patch for a preflighted batch of renames, relative transforms, flags or parenting committed as one undo step.
  • Fallbacks: execute_maxscript, or execute_python (pymxs, needs safe mode off), only when no dedicated tool exists.
  • Scene files: manage_scene (hold/fetch/reset/save/info). inspect_max_file, search_max_files, merge_from_file and batch_file_info work without loading a scene.
  • Interactive sessions: watch_scene follows the user's actions.

Workflows

Identity and tokens
  • Node handles are stable only within the loaded scene. Cross-check cached handles with name or path, and refresh after a reset or load.
  • Pass expected_scene_seq from resolve_node_refs to scene_patch when stale targeting matters; selection changes do not invalidate it.
  • Guarded edits take the token from a fresh inspection: expected_mesh, expected_view, curve_token, expected_style, expected_controller, plugin schema/state tokens, expected_dialog. A refused token means inspect again, never bypass the guard.
Modeling
  • Polygon edits: inspect_mesh or an AGENT VIEWPORT capture → pick_component with the capture's view_token as expected_view → mesh_edit(expected_mesh=...) → verify with inspect_mesh, geometry_qa or a capture.
  • Construction: create_mesh for computed vertex/face arrays; loft_mesh for parameterized section lofts; curve_model, inspect_curve and edit_curve for curve-driven forms (read curve-construction.md first); draw_spline plus Lathe/Extrude/Bevel_Profile/Sweep through add_modifier, refined with spline knot edits or edit_vertices conform.
  • Edits act on the editable base cage and preserve modifiers above it. Collapsing (convert=true, collapse_modifier_stack) happens only when requested.
  • boolean_operation: prefer inline cutters (named, atomic, no scene litter). Non-live operands are consumed, so never consume a node other tools still reference by name.
  • After placing parts that should sit on or join each other, run contact_check and judge reported depth against the design intent.
Materials
  • Create and assign: assign_material, create_material_from_textures, smart_import, palette_laydown. They default to OpenPBR; pass material_class for another renderer. Share an existing material with assign_material(names=[...], source_name=...).
  • Edit: set_material_property, set_material_properties, set_sub_material, create_texture_map, set_texture_map_properties. Switch pipelines with create_shell_material, replace_material and batch_replace_materials.
  • Audit: get_material_slots (prefer slot_scope="map"), get_materials, and material_roles (follow next_offset; check complete and truncated).
  • OSL: write_osl_shader, then introspect_osl before wiring. The shader name must match shader_name; OSLMap lowercases parameter names.
  • material_class is the material's own class name: PhysicalMaterial, not Physical (the camera).
Lighting and plugin settings
  • lighting_capabilities → create_lights → inspect_lights → edit_lights. Never infer integer enum meanings. RGB is linear in the rendering color space, Kelvin is explicit, and EXR/HDR inputs get no extra gamma.
  • Other plugin settings: inspect_plugin_class or inspect_plugin_instance with schema_version=2, then plugin_patch with the returned schema and state tokens. Shared or animated resources need deliberate handling.
Viewport and capture
  • Open agent_viewport(action="open") before inspection captures. Navigation and captures then default to it and never redirect into the user's view; source="active" targets the user's view explicitly. Release and reopen after a scene load.
  • set_viewport aims by eye and target without creating a camera. Use capture_viewport, capture_multi_view or capture_screen(enabled=True) for stills and frame-buffer crops.
  • Start interactive previews (agent_viewport(action="render")) and production renders (render_automations) only on request. A capture never certifies convergence or finished denoising.
Animation and controllers
  • Script controllers: script_controller inspect → validate → apply with expected_controller. A controller that returns zero at every frame has failed; inspect it with sample_frames.
  • Other controllers: assign_controller, inspect_controller, inspect_track_view, set_controller_props, add_controller_target. Pass list_wireable_params paths, including their [#Parameters] levels, to wire_params unchanged; get_wired_params and unwire_params read and remove wiring.
  • keyframe_tracks: timeline reads or sets frame rate, current frame and range. list inspects keys; parent numKeys is often 0 because keys live on Bezier Float sub-controllers. Retimes need time/times or both from_time and to_time. bake and resample skip list, constraint, expression, script and motion-capture controllers. Use loop, or match with order=hierarchy, for parented rigs. tracks takes exact tokens only: all, position/pos, rotation/rot, scale/scl, transform/tm.
  • On animated objects, edit keys with keyframe_tracks; transform_object rewrites keys at the current frame.
Show full SKILL.md (595 more words)Show less
Plugins and assets
  • tyFlow graph work: read tyflow-graphs.md completely before acting.
  • RailClone (7.3.5+): get_railclone_style → edit the XML → set_railclone_style(expected_style=...) → verify with get_railclone_output. Read railclone.md first.
  • Data Channel and Max Creation Graph: read procedural-graphs.md completely before acting.
  • Forest Pack: scatter_forest_pack, then hide the source meshes.
  • Cosmos: cosmos_search → cosmos_download → cosmos_import. Repeating a completed import adds another instance.
  • Plugin surfaces: discover_plugin_surface, get_plugin_manifest, and resource://3dsmax-mcp/plugins/{name}/manifest|guide|recipes|gotchas.

Dialogs

  • execute_maxscript and tool scripts run in Max's quiet mode: prompts such as queryBox, overwrite or missing-file warnings silently take their default answer. Pass execute_maxscript(quiet=False) when the user wants to be asked.
  • A call that opens or waits behind a modal dialog returns BLOCKED_BY_DIALOG with its title, text and buttons. The call keeps running inside Max: never repeat it. Other replies warn while any dialog is open.
  • Read and answer dialogs with max_dialogs. respond presses a button by label or index and returns the interrupted call's result.
  • Choose the button yourself only when the user asked you to proceed without confirmation and the task determines the answer. Otherwise show the user the dialog and ask. Always ask before save, overwrite, discard, Fetch, Reset or licensing choices.
  • A MAXScript error box during a call fails that call with MAX_DIALOG_ERROR. Callback errors appear just after the triggering call returns; the next reply warns, so read the error and acknowledge it.

Results and Errors

  • Replies are a ToolEnvelope dict (ok/result/error/hint), not a JSON string. Tool-authored hints win over automatic ones; hint.suggested_tools may list alternatives.
  • Classify raw structured errors by error, code or status=error|failed, never by message alone.
  • USER_BUSY: Max has an open undo operation and the write was rejected before any change. Continue read-only and retry after it finishes; never bypass it with MAXScript.

execute_maxscript

  • Use it only when no dedicated tool exists: unsupported controller operations, render or environment settings, one-off scripted operations.
  • code is JSON-unescaped once before MAXScript parses it. A BAD_PARAM parse error without a line number almost always means escaping corruption, not bad logic:
    • Use forward slashes in path literals ("C:/assets/tex/") or derive paths at runtime; \" and \U break literals.
    • Do not put \n or \t inside string literals.
    • Keep the script on one line, with statements separated by ;.
    • Debug by shrinking to a known-good core (try (...) catch (getCurrentException() as string)) and adding pieces back.

MAXScript Pitfalls

  • Always pass #noPrompt to importFile, e.g. importFile @"C:/assets/model.fbx" #noPrompt using:FBXIMP; configure importer options first.
  • No parentheses with keyword arguments: Box width:10, not Box() width:10. Box width is X, length is Y, height is Z.
  • Wrap risky code: try (...) catch (ex) (ex).
  • Noise is a texture map; Noisemodifier is the modifier.
  • getDir #temp is Max's temp folder, not the OS temp folder.
  • Convert .NET strings to MAXScript strings before using string methods.
  • snapshotAsMesh returns a world-space TriMesh: read vertices in coordsys world without reapplying node.objectTransform, then delete it. Base-cage poly vertices still need the object transform.
  • Normalize controller and wire display tokens: [#Z Position] becomes [#z_position].
  • getClassInstances Material is invalid because Material is not a MAXClass; use sceneMaterials.
  • getHandleByAnim returns values like 12345P; quote them when building JSON.
  • Open Unwrap UVW with $Box001.modifiers[#Unwrap_UVW].edit(), not only the OpenUnwrapUI macro.
  • TCP fallback is opt-in. If viewport interaction stutters while it runs, stop it and use the native bridge.

MAXScript Reference (bundled)

Read the relevant file before writing unfamiliar MAXScript:

FileCovers
maxscript-core-syntax.mdVariables, scope, types, operators, control flow
maxscript-common-patterns.mdUndo/animate blocks, callbacks, file I/O
maxscript-3dsmax-objects.mdNodes, transforms, hierarchy, properties
maxscript-mesh-poly-ops.mdSub-object mesh/poly ops
maxscript-materials-textures.mdMaterials, texmaps, PBR
maxscript-animation-controllers.mdControllers, constraints, wire params
maxscript-rendering-cameras.mdRender settings, cameras, environment
maxscript-splines-shapes.mdSplines and shapes
maxscript-scripted-plugins.mdScripted geometry, modifiers, utilities
maxscript-ui-rollouts.mdRollout UIs and dialogs

© cl0nazepamm, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 14 other files in skills/3dsmax-mcp-dev of cl0nazepamm/3dsmax-mcp.

  • SKILL.md
  • curve-construction.md
  • maxscript-3dsmax-objects.md
  • maxscript-animation-controllers.md
  • maxscript-common-patterns.md
  • maxscript-core-syntax.md
  • maxscript-materials-textures.md
  • maxscript-mesh-poly-ops.md
  • maxscript-rendering-cameras.md
  • maxscript-scripted-plugins.md
  • maxscript-splines-shapes.md
  • maxscript-ui-rollouts.md
  • procedural-graphs.md
  • railclone.md
  • tyflow-graphs.md

Open the folder on GitHubat commit 29aed53

Compare with similar skills

3dsmax MCP next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

3dsmax MCP compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
3dsmax MCP this skillcl0nazepamm/3dsmax-mcp297—~3.3kAutomated safety check: PassMIT
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
MCP Server BuildershareAI-lab/learn-claude-code78k4 repos~1.2kAutomated safety check: PassMIT
MCP Integration for Pluginsanthropics/claude-plugins-official38k11 repos~3.1kAutomated safety check: PassApache-2.0
Crush Configurationcharmbracelet/crush29k—~3.7kAutomated safety check: PassCustom licence
Context Mode Output Sandboxmksglu/context-mode26k—~4.1kAutomated safety check: PassCustom licence

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 4 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • MCP Integration for Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to bundle Model Context Protocol servers in a Claude Code plugin, covering config files, stdio, SSE, HTTP and WebSocket server types, and authentication.

    38k GitHub starsUsed in 11 repos~3.1k tokens
    Agent WorkflowsAuto-check passed
  • Crush Configuration

    charmbracelet/crush

    Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.

    29k GitHub stars~3.7k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Context Mode Output Sandbox

    mksglu/context-mode

    Routes large command, file, API and browser output through context-mode tools so only the needed result enters the agent's context, instead of dumping it via Bash.

    26k GitHub stars~4.1k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Migrates the compatible subset of settings and global file-based MCP servers from the Warp desktop app into Warp Agent CLI without exposing credentials or state.

    65k GitHub starsUsed in 1 repo~2.1k tokens
    Agent WorkflowsAuto-check passed

Categories

Questions about 3dsmax MCP

What does 3dsmax MCP do?

Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP. 3dsmax MCP is an agent skill from cl0nazepamm/3dsmax-mcp. Tool choices, workflows, and MAXScript pitfalls for controlling 3ds Max via MCP.

When should I use 3dsmax MCP?

3dsmax MCP fits situations like: tasks that involve MCP servers.

How do I install 3dsmax MCP in Claude Code?

Run `npx skills add cl0nazepamm/3dsmax-mcp --skill 3dsmax-mcp -a claude-code`. Or copy the skill folder (skills/3dsmax-mcp-dev in cl0nazepamm/3dsmax-mcp) into .claude/skills/3dsmax-mcp in your project. Claude Code loads it when a task matches its description.

How do I install 3dsmax MCP in Codex?

Run `npx skills add cl0nazepamm/3dsmax-mcp --skill 3dsmax-mcp -a codex`. Or copy the skill folder (skills/3dsmax-mcp-dev in cl0nazepamm/3dsmax-mcp) into .agents/skills/3dsmax-mcp in your project. Codex loads it when a task matches its description.

Can I use 3dsmax MCP in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cl0nazepamm/3dsmax-mcp --skill 3dsmax-mcp -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/3dsmax-mcp, .gemini/skills/3dsmax-mcp, .github/skills/3dsmax-mcp and .opencode/skills/3dsmax-mcp in your project.

What does 3dsmax MCP need to run?

SKILL.md names no scripts, command-line tools or credentials: 3dsmax MCP is instructions for the agent only.

Does 3dsmax MCP access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is 3dsmax MCP safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does 3dsmax MCP use?

3dsmax MCP is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does 3dsmax MCP use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to 3dsmax MCP?

Skills that share tags, products or a category with 3dsmax MCP: MCP Server Builder (anthropics/skills, 180k stars), MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), MCP Integration for Plugins (anthropics/claude-plugins-official, 38k stars) and Crush Configuration (charmbracelet/crush, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains 3dsmax MCP?

cl0nazepamm (a GitHub user) maintains it in cl0nazepamm/3dsmax-mcp, which has 297 GitHub stars. The repository was last updated on October 1, 2026.

Source: cl0nazepamm/3dsmax-mcp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.