Skip to main content
Glama

Daz3D-MCP

Let AI agents (Claude Code, Codex, Cursor, Antigravity, Gemini CLI, Claude Desktop, VS Code and any other MCP client) control Daz Studio: open and save scenes, find installed content, build characters (shape, clothing, hair, poses), set up cameras, lights and materials, render with Iray, install content from other stores, import OBJ and FBX models, animate figures (keyframes, presets, Mixamo FBX and mocap BVH), and run DazScript.

Independent open source project. Not affiliated with or endorsed by Daz 3D. Leer en español

Early stage, internal testing. Version 0.4. All the features below exist and pass the tests against a simulated Daz Studio, and they are being tested on a real Daz Studio 6.26 on Windows 11 with both AMD and NVIDIA graphics cards. Expect bugs and breaking changes, and do not rely on it for production work yet.

Requirements and known limits

  • An NVIDIA GPU is needed to get everything out of it. Daz Studio is built around NVIDIA Iray, which only renders on NVIDIA cards (and only when the scene fits in the card's memory). With an AMD or Intel GPU, Iray renders on the CPU: much slower, without Iray's AI denoiser, and grainy unless you wait a long time (in our tests an interior scene reached about 310 of the 1,000 to 2,000 iterations it needs in 25 minutes). A big scene can also run out of memory and hang Daz Studio. This affects render, render_shots and render_animation; everything else works with any graphics card.

  • Windows only. No macOS version is planned for now: Daz Studio is mainly made for NVIDIA GPUs, and Macs cannot use them, so Iray renders on the CPU there.

  • No release yet. It is not on PyPI and there is no GitHub release with the compiled plugin, so setup cannot download it: build it (bridge/README.md) and pass --plugin-file, or use --no-plugin.

  • Daz Studio 4.24 is not supported yet.

Related MCP server: bMCP

How it works

AI agent ──MCP (stdio)──> daz3d-mcp (Python) ──HTTP 127.0.0.1 + token──> bridge plugin ──> DazScript in Daz Studio
  • Bridge plugin (bridge/, C++): a tiny server inside Daz Studio. It only listens on 127.0.0.1, needs a token and runs DazScript on the main thread.

  • DazScript library (scripts/): one script per tool; it does the real work.

  • MCP server (src/daz3d_mcp/, Python): the tools agents call.

  • Skills (skills/): SKILL.md guides that teach agents how to use Daz. Agents without skills support get the same text through the MCP (daz_guide tool, prompts and resources).

Install

You need uv and Daz Studio 6 (4.24 support comes later).

uvx daz3d-mcp setup           # copies the bridge plugin into Daz Studio
uvx daz3d-mcp install --all   # registers the MCP and skills in every agent found
uvx daz3d-mcp doctor          # checks everything and says what to fix

Restart Daz Studio and your agents afterwards.

Until the first PyPI release, run the same commands from GitHub:

uvx --from git+https://github.com/MictlanLabs/Daz3D-MCP daz3d-mcp install --all

install writes the agents' config so they run that same source.

One agent only: uvx daz3d-mcp install --client cursor (also claude-code, codex, antigravity, gemini-cli, claude-desktop, windsurf, vscode). uvx daz3d-mcp uninstall removes everything it added.

Any other MCP client: add this server to its settings:

{ "mcpServers": { "daz3d": { "command": "uvx", "args": ["daz3d-mcp"] } } }

No compiled plugin yet? uvx daz3d-mcp setup --no-plugin uses an experimental mode that asks the running Daz Studio to execute script files. It is slower but needs nothing compiled.

Tools

Tool

What it does

daz_status

Checks the connection; Daz version and open scene

daz_dialog

Sees and answers pop-up dialogs Daz stops on (overwrite?, replace?); needs plugin 0.2+

scene_info

Figures, clothing, props, cameras and lights with position, rotation, size

scene_new

Clears the scene (refuses to lose unsaved work unless told)

scene_open

Opens or merges a .duf scene

scene_save

Saves as .duf (never overwrites another file unless told)

viewport_capture

Returns a PNG of the viewport, optionally from a camera or frame

content_libraries

Lists the content libraries and how many files the index holds

content_search

Finds installed figures, characters, clothing, hair, poses, materials, props, lights

content_thumbnail

Shows a content file's thumbnail

content_load

Loads content; fits clothing and hair, applies poses, characters and materials to a target

node_set

Moves, rotates, scales, shows/hides, renames or selects a node

node_delete

Deletes nodes (and what is fitted to a figure)

figure_info

A figure's generation, height, clothing, morphs in use, posed bones and surfaces

morph_list / morph_set

Finds and sets shape dials and the figure's pose and face controls

face_expression

Named expressions (smile, sad, angry, surprised, wink...) on Genesis 9 and 8.1, or face dials by name

eyes_look_at

Aims the eyes (and part of the head turn) at a camera, another figure or a point

eye_color

Iris color only, the whites stay white; Genesis 9's 16 iris images; one color per eye

pose_bones / pose_reset

Rotates bones (reports dials held at joint limits) / back to the default pose

prop_surfaces

Measures where a figure can sit, lie or stand on a prop: height, size, which way a seat faces

place_on

Puts a posed figure on a seat, bed or step: faces it out, against the backrest, hips on the cushion

fit_check

Per body part: how deep it goes into furniture (and which way is out) or how far it floats

wearable_fit

Fits clothing or hair to a figure, or unfits it

package_inspect / package_install

Looks inside a .zip from another store and installs its content into a library

package_list / package_uninstall

Lists installed packages / removes exactly the files one installed

content_add_library

Adds a folder to Daz Studio's content libraries

mesh_inspect / import_mesh

Reads an OBJ or FBX (size, units, textures) / imports it at the right size, without dialogs

wearable_from_mesh

Turns an imported garment into clothing that follows a figure (Transfer Utility)

wearable_adjust

Mesh smoothing and collision of clothing (fixes skin poking through)

anim_timeline

Frame rate, frame range, current frame, and what is animated

anim_keys_set / anim_keys_get / anim_keys_delete

Keyframes on bones, the hip, nodes, morphs and any number property

anim_key_pose

Keys the current pose (from pose_bones or a pose preset) at some frames

anim_sample

World positions of bones at some frames, to check a motion

anim_preview

Viewport images of several frames

anim_foot_contact

Finds feet through the floor, floating and sliding; can fix the hip height

anim_retime / anim_offset

Faster, slower or a set length / later, moved, turned or put on a spot

anim_preset_list / anim_preset_save / anim_preset_apply

Animation presets: built-in, your own (looping, repeated) and bought .duf ones

anim_file_inspect / anim_import

Reads a BVH or binary FBX (Mixamo, CMU...) and adapts it to a Genesis figure with a bone map

camera_create / camera_set

Adds or changes a camera; can frame nodes automatically

camera_shot

Frames a film shot on a face (close-up, over the shoulder, two shot) keeping the 180 degree rule

light_create / light_set

Adds or changes spot, point and distant lights

environment_set

Iray dome, HDRI and sun-sky

material_list / material_set

Reads and changes surfaces (colors, roughness, texture maps)

render_settings

Image size and Iray limits

render

Renders to a file and returns the image

render_shots

Renders a conversation as a series of shots (faces, gazes and camera per line) for visual novels

render_animation

Renders every frame of the animation and joins them into an MP4 or GIF

run_script

Runs DazScript for anything else (can be disabled)

daz_guide

Returns the skills as text for agents without skills support

Skills: daz-basics, scene-building, characters, faces, furniture-poses, dialogue-scenes, rendering, third-party-assets, animation.

Try it: "Open ~/Documents/scene.duf in Daz, describe the scene and show me a capture." Or: "Build a scene with two Genesis 9 characters, dressed and posed, talking to each other, and render it." Or: "Install ~/Downloads/jacket.zip, dress Ana with it, then import ~/Downloads/cape.fbx and make it clothing that follows her." Or: "Make Ana walk four steps toward the camera, then put ~/Downloads/Dancing.fbx from Mixamo on Leo starting at frame 60."

Content search runs in the MCP server on an index of the library files (~/.daz3d-mcp/content-index.json, rebuilt every 24 hours or with refresh_index=true), so Daz Studio is never frozen by a search.

Settings

~/.daz3d-mcp/settings.json (created by setup):

Key

Default

Meaning

allow_run_script

true

Allow the free-form run_script tool

transport

"auto"

auto, http (plugin only) or file (no-plugin mode)

daz_executable

detected

Daz Studio binary, for no-plugin mode

timeout

600

Seconds to wait for one request

render_timeout

3600

Seconds to wait for one render

render_dir

~/.daz3d-mcp/renders

Where renders go when no path is given

ffmpeg

detected

ffmpeg used by render_animation for videos (PATH, then the one Daz Studio ships)

content_libraries

[]

Extra library folders to search

content_index_max_age_hours

24

When to rebuild the content index

install_library

~/Documents/DAZ 3D/Third Party Library

Where package_install puts packages

max_package_gb

20

Largest package (unpacked) package_install accepts

dialog_rules

[]

Answers to Daz dialogs given in advance, e.g. [{"match": "outside the limits", "button": "Turn Limits Off"}] (plugin 0.2+)

rotation_convention

measured

How Daz turns bones; the first anim_import measures it and caches it in ~/.daz3d-mcp/animation.json

Security

The bridge listens on 127.0.0.1 only, requires the random token stored in ~/.daz3d-mcp/token (readable only by you) and rejects browser requests. run_script gives an agent the same power as a DazScript you run yourself; set allow_run_script to false if you do not want that.

Development

uv run --group dev pytest            # Python + DazScript tests (Node.js runs the scripts against a fake Daz)
npm install --prefix tests/fake_daz  # once, for the ES5 syntax checks

Building the bridge: see bridge/README.md. The bridge protocol is documented in docs/protocol.md.

License

Apache 2.0. See LICENSE. The Daz Studio SDK is not included.

Available Tools

63 tools
anim_file_inspectA
Read-onlyIdempotent

Reads a BVH or FBX animation without importing it: frames, frame rate, length, bones, which rig it is (Mixamo, CMU mocap, Unreal, 3ds Max Biped, Genesis) and, with figure, which bones map.

Inputs: path (required), take, figure.

anim_foot_contactA

Checks the feet over an animation: frames where a foot goes through the floor, frames where the figure floats, and how far planted feet slide. With fix it moves the hip up or down per frame so the lowest foot touches the floor.

Inputs: figure (required), fix, floor, end_frame, +2 more.

anim_importA

Imports a BVH or FBX motion (Mixamo, mocap) onto a Genesis figure: reads the file, maps its bones to the figure's (built-in maps for Mixamo, CMU, Unreal, Biped, Genesis; bone_map to fix), adapts the rest pose (T pose vs Genesis A pose) and the body size, and keys every frame. No importer dialog. Then check it with anim_preview and anim_foot_contact.

Inputs: path (required), figure (required), rig, take, +9 more.

anim_key_poseA

Keys the figure's current pose at frames: after a pose preset or pose_bones, this turns the pose into a key pose of the animation.

Inputs: figure (required), frames (required), morphs, all_bones, +1 more.

anim_keys_deleteA
Destructive

Deletes keyframes (all of a node's, or some bones', or a frame range). The pose at the current frame stays as a still pose.

Inputs: node (required), what, bones, end_frame, +1 more.

anim_keys_getB
Read-onlyIdempotent

Reads keyframes of a node as tracks ({bones: {bone: {rotation: [[frame, x, y, z], ...]}}...}), the same format anim_keys_set takes.

Inputs: node (required), bones, summary, end_frame, +1 more.

anim_keys_setA

Sets keyframes. Each key pose says what a node looks like at one frame; Daz fills in the frames between. Rotations are the same dials as pose_bones (degrees). The scene range grows to the last key.

Inputs: node (required), keys, tracks, replace.

anim_offsetA

Relocates an animation: in time (later or earlier) and in space (move it, turn its path, or make it start at a spot). The motion itself does not change.

Inputs: node (required), move, turn, frames, +2 more.

anim_preset_applyB

Applies an animation preset to a figure from a frame on, at any speed, repeated as a cycle.

Inputs: figure (required), preset (required), speed, repeat, +3 more.

anim_preset_listA
Read-onlyIdempotent

Lists animation presets: built-in ones and the ones saved with anim_preset_save. Animated presets bought for Daz are in the content library: content_search(kind="animation").

Inputs: query.

anim_preset_saveA

Saves a figure's animation as a reusable preset (~/.daz3d-mcp/animations), to apply later to any figure of the same generation with anim_preset_apply.

Inputs: name (required), figure (required), loop, morphs, +5 more.

anim_previewA
Read-onlyIdempotent

Viewport images of several frames, to watch the motion (a contact sheet, one image each).

Inputs: camera, frames, max_size.

anim_retimeA

Changes the rhythm of an animation: speeds it up, slows it down or fits it to a length. Keys after the part move with it.

Inputs: node (required), snap, speed, length, +3 more.

anim_sampleA
Read-onlyIdempotent

World positions (cm, Y up) of bones at some frames, as Daz computes them. Use it to check a motion with numbers: is the left foot in front at frame 8, does the hand reach the cup.

Inputs: figure (required), frames (required), bones.

anim_timelineB

Reads or sets the timeline: frame rate, animation range, current frame. Also lists which nodes are animated and over which frames.

Inputs: fps, keep, frame, end_frame, +1 more.

camera_createB

Adds a camera, either framing nodes automatically or at a position aimed at a target.

Inputs: yaw, frame, label, pitch, +6 more.

camera_setB

Moves, aims or reframes an existing camera, or makes it the active one.

Inputs: camera (required), yaw, frame, label, +7 more.

camera_shotA

Places a camera for a film shot of a character's face (close-up, over the shoulder, two shot...), aimed and sized from the face itself, on a consistent side of the line to the person they talk to, so shots and reverse shots cut together. Reports heads in the way.

Inputs: subject (required), shot, side, angle, +7 more.

content_add_libraryA

Adds a folder to Daz Studio's content libraries (it stays after a restart), so its content can be searched and loaded and finds its data files.

Inputs: path (required), kind.

content_librariesA
Read-onlyIdempotent

Lists the user's Daz content libraries (My Library, My DAZ 3D Library...) and how many content files the search index holds.

Inputs: refresh.

content_loadA

Loads content into the scene: adds a figure or prop, dresses a figure (clothing, hair), applies a pose, character, shape or material preset to the target. Returns the new nodes.

Inputs: path (required), target.

content_thumbnailB
Read-onlyIdempotent

Shows the thumbnail image of a content file, to choose between search results.

Inputs: path (required).

daz_dialogA
Destructive

Sees and answers the pop-up dialogs Daz Studio opens (overwrite?, replace or add?, limits...). A tool that stops on one fails with dialog_open and lists its text and buttons; press one here and the stopped call's result comes back as call_result. Without button: lists open dialogs and, if a call was left waiting, waits for it. Ask the user before an answer that would overwrite or discard their work. Needs the bridge plugin 0.2+.

Inputs: wait, check, button, uncheck, +1 more.

daz_guideA
Read-onlyIdempotent

Returns a usage guide (the same text as the Daz3D-MCP skills) for clients without skills support.

Inputs: topic. Returns: result

daz_statusA
Read-onlyIdempotent

Checks that Daz Studio is reachable and reports its version and the open scene.

Inputs: no named parameters.

environment_setA

Sets the Iray environment (dome light, HDRI, sun-sky). Without arguments it reports it.

Inputs: hdri, mode, rotation, draw_dome, +1 more.

eye_colorA

Changes iris color only (not the whites): a color tint, and on Genesis 9 one of its 16 iris images. For a whole new eye look, eye material presets also work (content_search).

Inputs: figure (required), eyes, iris, color, +3 more.

eyes_look_atA

Aims a figure's eyes at a camera, another figure or a point, within the eye joint limits (about 30 degrees); head > 0 turns the head part of the way too.

Inputs: figure (required), target (required), eyes, head.

face_expressionB

Sets a facial expression (smile, sad, angry, surprised, wink...) from the FACS face dials, or face dials by name; clears the previous expression first.

Inputs: figure (required), reset, values, strength, +1 more.

figure_infoA
Read-onlyIdempotent

Describes a figure: generation, height, what it wears, the shape dials in use, the posed bones and its surfaces; optionally joint limits and where its body parts are.

Inputs: figure (required), limits, all_bones, landmarks.

fit_checkA
Read-onlyIdempotent

Checks a figure against furniture or other figures, per body part: how deep it goes into them and which way is out, or how far it floats above the surface under it.

Inputs: figure (required), worn, against, floor_y, +1 more.

import_meshA

Imports a loose OBJ or FBX model (Sketchfab, CGTrader, Blender, a package's meshes) into the scene with the right size, without the importer dialog. Returns the new node, its size in cm and its surfaces. Clothing modeled for a figure then goes through wearable_from_mesh.

Inputs: path (required), take, label, units, +5 more.

light_createB

Adds a light, placed and aimed at a node or point.

Inputs: type, color, label, power, +5 more.

light_setC

Changes a light: placement, aim, power, color, on/off.

Inputs: light (required), on, color, label, +6 more.

material_listA
Read-onlyIdempotent

Lists the surfaces of a node with their shader and main values (color, roughness, maps...).

Inputs: node (required), query, surfaces, all_properties.

material_setB

Changes material properties, e.g. {"Base Color": "#802020", "Glossy Roughness": 0.3}.

Inputs: node (required), properties (required), surfaces.

mesh_inspectA
Read-onlyIdempotent

Reads an OBJ or FBX without importing it: size in file units, the units it most likely uses, surfaces, textures found and missing, whether it is rigged or animated.

Inputs: path (required).

morph_listB
Read-onlyIdempotent

Lists the dials of a figure with their value and range: shape morphs and the figure's pose and face controls (Eye Blink, Jaw Open, Brow Up...; marked control=true).

Inputs: node (required), limit, query, only_nonzero, +1 more.

morph_setB

Sets dials (shape morphs or pose/face controls), e.g. {"Body Tone": 0.5, "Eye Blink": 1}. Unknown dials come back with similar names.

Inputs: node (required), values (required).

node_deleteB
Destructive

Deletes nodes (figures, clothing, hair, props, cameras, lights) from the scene.

Inputs: nodes (required), with_fitted.

node_setB

Moves, rotates, scales, shows/hides, renames, selects or attaches (parents) a figure, prop, camera or light.

Inputs: node (required), label, scale, parent, +7 more.

package_inspectA
Read-onlyIdempotent

Looks inside a content package before installing it: where its Daz content root is (data, People, Props, Runtime...), which files can be loaded, loose OBJ/FBX meshes, extras and problems. Nothing is written.

Inputs: path (required).

package_installA

Installs a content package from another store (Renderosity, RuntimeDNA, CGBytes, free sites): finds its content root, copies it into a content library, makes sure Daz Studio has that library, and returns the new items (paths for content_load) and any loose meshes (paths for import_mesh). Records every file so package_uninstall can remove them.

Inputs: path (required), name, library, overwrite.

package_listB
Read-onlyIdempotent

Lists the packages installed with package_install.

Inputs: no named parameters.

package_uninstallA
Destructive

Deletes the files a package_install wrote (not files other packages share). Ask the user first; scenes that use the package will miss it.

Inputs: package (required).

place_onA

Puts a posed figure on a prop: hips on a seat (turned to face out, against the backrest, knees clear of the seat front), back on a bed, feet on a step. Then reports fit_check.

Inputs: prop (required), figure (required), at, sink, +4 more.

pose_bonesA

Rotates figure bones, for adjustments after a pose preset or to build a pose. Reports dials that Daz held at a joint limit.

Inputs: bones (required), figure (required), relative, ignore_limits.

pose_resetB

Returns all the bones of a figure to the default pose.

Inputs: figure (required).

prop_surfacesA
Read-onlyIdempotent

Measures the flat surfaces of a prop where a figure can sit, lie or stand: height, size, center and, for a seat with a backrest, which way it faces (facing_yaw).

Inputs: node (required), max_tilt, min_area.

renderA

Renders the scene with the current renderer (Iray), waits until it is done and returns the image. Set max_time or max_samples so a test render does not run for long.

Inputs: frame, width, camera, height, +6 more.

render_animationA

Renders the whole animation (or a frame range) with Iray, one image per frame, and joins them into an MP4 or GIF. Waits until it is done. It takes about frames x max_time: render a short range or a few frames (step) first, and ask the user before a long render.

Inputs: fps, name, step, width, +13 more.

render_settingsB

Reads the render settings (renderer, size, limits) and changes the ones given.

Inputs: width, height, quality, max_time, +2 more.

render_shotsA

Renders a dialogue scene as a series of shots for a visual novel: for each beat it sets the faces and gazes, frames the camera (camera_shot) and renders, into NN_ images plus a shots.json listing every beat, its line and its camera. Waits until all are done; it takes about beats x max_time, so render a few beats first and ask the user before a long run.

Inputs: beats (required), only, width, camera, +9 more.

run_scriptA
Destructive

Runs DazScript inside Daz Studio for anything the named tools do not cover. Globals: Scene, App, MainWindow, DazMcp (helpers such as DazMcp.findNode, DazMcp.log). Use DazMcp.log(msg) for messages and return the result.

Inputs: code (required), args.

scene_infoA
Read-onlyIdempotent

Describes the open scene: file, frames, and every figure, prop, camera and light with its parent, world position (cm), rotation (degrees), scale and bounding box.

Inputs: max_nodes, include_bones, include_hidden.

scene_newA
Destructive

Clears the scene. Fails on unsaved changes unless discard_changes is true; ask the user first.

Inputs: discard_changes.

scene_openB
Destructive

Opens a Daz scene (.duf), or merges it into the current one.

Inputs: path (required), merge, discard_changes.

scene_saveC

Saves the scene as a .duf file.

Inputs: path, overwrite.

viewport_captureB
Read-onlyIdempotent

Returns an image of the active 3D viewport so you can see the scene.

Inputs: frame, camera, max_size.

wearable_adjustA

Fixes how clothing sits on a figure: mesh smoothing and collision (cures skin poking through) and other item properties. Without arguments it reports the current values. For loose or tight fit dials use morph_list/morph_set on the item.

Inputs: item (required), smoothing, properties, collide_with, +2 more.

wearable_fitA

Fits clothing or hair already in the scene to a figure (Daz "Fit To"), or unfits it.

Inputs: item (required), figure.

wearable_from_meshA

Makes an imported garment, hat, armor or hair follow a figure (Daz Transfer Utility): copies the figure's rigging and morphs onto it and fits it, so it moves with poses and shapes. The mesh must already sit on the figure in its default pose. Also re-rigs clothing made for another figure generation.

Inputs: item (required), figure (required), kind, label, +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 63 tools

    Disambiguation4/5

    Tools are grouped by resource (scene_, content_, node_, figure_, morph_, pose_, camera_, light_, material_, render_, anim_, package_, mesh_) and each group's members have clearly stated distinct purposes, e.g. anim_retime (rhythm) vs anim_offset (relocation), camera_create vs camera_set vs camera_shot. A few boundaries blur: morph_set vs face_expression both set face dials, pose_bones vs morph_set's control dials overlap, and anim_keys_set vs anim_key_pose need careful reading, but descriptions mostly resolve this.

    Naming Consistency4/5

    Almost everything is snake_case with a resource prefix (camera_create, light_set, material_list, anim_keys_get), giving a predictable, browsable pattern. Minor deviations: content_add_library is a three-part outlier, daz_status/daz_guide/daz_dialog use a product prefix instead of a resource, and anim_key_pose vs anim_keys_set mix singular/plural.

    Tool Count2/5

    63 tools is far beyond a comfortable surface for one agent to navigate, even though the Daz Studio domain is genuinely large. The groups (scene, content, posing, rendering, animation, packaging, meshes) would work better as separate servers or a progressive-disclosure scheme; several tools (anim_foot_contact, anim_sample, prop_surfaces) are niche enough to bloat the list.

    Completeness5/5

    Coverage is remarkably full: scene lifecycle (new/open/save/info), content discovery and loading, node transforms and deletion, figure/morph/pose/expression control, cameras, lights, environment, materials, render settings and stills/animation/shots, plus package install/uninstall, mesh import and rigging, animation import/retime/retarget/presets, and run_script as an escape hatch. No obvious dead end remains for the stated domain.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables remote control of Blender via the Model Context Protocol, allowing users to execute Python scripts, query scene data, and generate 3D models from images. It provides a bridge for AI clients to interact directly with Blender's internal environment and automate 3D content creation.
      3
      6
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI to control Blender 3D through the Model Context Protocol, allowing Python execution, scene state queries, and automation of 3D workflows.
      5
      GPL 3.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server for AI-driven DAZ Studio scene editing. Runs as a native DAZ Studio plugin (DLL) and exposes all scene control, rendering, dForce, asset, and animation commands through the Model Context Protocol.
      14
      MIT