Disclaimer: This plug‑in is not affiliated with, endorsed by, or sponsored by DAZ 3D.
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.
Claude Desktop ──stdio──> daz-mcp-client.py ──HTTP POST /mcp──> DazPilot (DLL inside DAZ Studio)
- The plugin hosts an HTTP server on
127.0.0.1:8765serving a single endpointPOST /mcp - Clients send JSON-RPC 2.0 messages with MCP methods:
initialize,tools/list,tools/call - Each command maps to DAZ Studio SDK calls executed on DAZ's main thread
- The Python shim
daz-mcp-client.pytranslates MCP stdio transport to HTTP for Claude Desktop
All categories — scene, selection, properties, materials, morphs, cameras, lights, rendering, assets, animation, dForce simulation, poses, clothing, hair, environment, export, viewport, rigging, scripting, mesh queries.
- CMake 3.15+
- C++17 compiler (MSVC 2019+)
- DAZ Studio 4.5+ SDK (place the SDK in a folder named
thirdpartyat the repository root; obtain it from DAZ or your own source, it is not pulled automatically)
cmake -B build -DDAZ_SDK_ROOT="C:\Program Files\DAZ 3D\DAZStudio4\SDK"
cmake --build build --config ReleaseHeader-only test build (no SDK):
cmake -B build -DBUILD_TESTS=ON
cmake --build build --config ReleaseCopy DazPilot.dll to your DAZ Studio plugins directory:
C:\Program Files\DAZ 3D\DAZStudio4\plugins\
Restart DAZ Studio. The server starts automatically on port 8765.
If you prefer to talk to the MCP server directly (without the Python shim), you can POST JSON‑RPC requests to the plugin’s HTTP endpoint. The server runs at http://127.0.0.1:8765/mcp and follows the JSON‑RPC 2.0 specification.
curl -X POST http://127.0.0.1:8765/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'The response will be a JSON object containing the list of available commands.
import requests
payload = {"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}
resp = requests.post('http://127.0.0.1:8765/mcp', json=payload)
print(resp.json())fetch('http://127.0.0.1:8765/mcp', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'tools/list', params: {} })
})
.then(r => r.json())
.then(console.log);All other methods described in the MCP Protocol section work the same way – just replace the method and params fields. The plugin will reply with a JSON‑RPC response containing either result or error.
{
"mcpServers": {
"dazpilot": {
"command": "python",
"args": ["path/to/daz-mcp-client.py"]
}
}
}The shim forwards stdio JSON-RPC to http://127.0.0.1:8765/mcp.
The plugin implements Streamable HTTP transport:
- Endpoint:
POST http://127.0.0.1:8765/mcp - Content-Type:
application/json - Body: JSON-RPC 2.0 request object
| Method | Purpose |
|---|---|
initialize |
Server capabilities & version |
tools/list |
List all 196 commands |
tools/call |
Execute a command |
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_scene_info","arguments":{}}}MIT