Cinema 4D MCP Server — extended fork with introspection, plugin-dev, render-engine, and Octane-aware tooling for AI-assisted C4D workflows
Cinema 4D MCP server has 32 tools with basic descriptions and schemas, but significant quality gaps limit production readiness. Tool names follow verb_noun convention (add_primitive, modify_object, list_objects), which is good. However, descriptions are often generic (e.g., 'Modify properties of an existing Cinema 4D object' for modify_object lacks specificity about which properties, constraints, or side effects). Parameter descriptions exist but lack detail on valid ranges, formats, or dependencies. No input validation guidance, no error recovery hints, and no output schema documentation visible in the source. The execute_python tool (IRREVERSIBLE risk) has minimal safeguards. Schema definitions are present in the tool list but lack depth, no enums for constrained inputs (e.g., light_type, primitive type), no min/max bounds on numeric parameters, no documentation of mutually exclusive parameters. Error handling in send_to_c4d() returns generic error dicts without actionable recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (DESTRUCTIVE, IRREVERSIBLE). Overall, the server is functional but falls short of production-grade tool design.
Create a primitive object (cube, sphere, cylinder, etc.) in the Cinema 4D scene
Apply MoGraph fields to objects in the Cinema 4D scene
Assign a material to an object in Cinema 4D
Create keyframe animation for an object in Cinema 4D
Create a light source in the Cinema 4D scene
Create a new material in Cinema 4D
Delete an object from the Cinema 4D scene
execute_python tool lacks safeguards and error guidance. Marked IRREVERSIBLE but has no dry-run, confirmation, or rollback mechanism. Description does not warn of consequences or guide recovery.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. LLM cannot distinguish safe reads from destructive writes without explicit hints.
Parameter descriptions lack constraints. 'segments' in add_primitive has no min/max; 'engine' in set_render_settings has no enum of valid values (physical, octane, etc.); 'light_type' in create_light lacks enum constraint.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
Execute Python code in the Cinema 4D environment
Get animation information from the Cinema 4D scene
Get current camera settings from the Cinema 4D scene
Get properties of a specific Cinema 4D object
Get current render settings from the Cinema 4D scene
Get information about the current Cinema 4D scene
List all lights in the Cinema 4D scene
List all materials in the Cinema 4D scene
List all objects in the current Cinema 4D scene
Load a Cinema 4D scene from a file
Modify properties of an existing Cinema 4D object
Render a frame from the current Cinema 4D scene
Render a preview of the current Cinema 4D scene
Save the current Cinema 4D scene to a file
Add a node to a Scene Nodes graph
Build a Scene Nodes pattern from a template
Connect two ports in a Scene Nodes graph
Get detailed information about a specific Scene Nodes graph
Ping the Scene Nodes helper plugin to verify it is loaded and responsive
List all Scene Nodes graphs in the current Cinema 4D document
List available Scene Nodes patterns
Set the value of a port in a Scene Nodes graph
Set or modify the camera in the Cinema 4D scene
Configure render settings for the Cinema 4D scene
Take a snapshot of the current Cinema 4D scene
Error responses in send_to_c4d() are generic dicts without recovery guidance. 'Not connected to Cinema 4D' tells agent nothing about retry strategy or next steps.
Output schemas not documented. Tools like get_scene_info, list_objects, get_object_properties return data but no schema is visible in source. LLM cannot plan downstream calls without knowing response structure.