Cinema4D MCP Server
# Cinema4D MCP โ Model Context Protocol (MCP) Server
Cinema4D MCP Server connects Cinema 4D to Claude, enabling prompt-assisted 3D manipulation.
## Table of Contents
- [Components](#components)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Setup](#setup)
- [Usage](#usage)
- [Agent Skill](#agent-skill)
- [Development](#development)
- [Troubleshooting & Debugging](#troubleshooting--debugging)
- [File Structure](#file-structure)
- [Tool Commands](#tool-commands)
- [Usage Guide](docs/USAGE_GUIDE.md) โ practical tips, extraction patterns, and known issues
## Components
1. **C4D Plugin**: A socket server that listens for commands from the MCP server and executes them in the Cinema 4D environment.
2. **MCP Server**: A Python server that implements the MCP protocol and provides tools for Cinema 4D integration.
## Prerequisites
- Cinema 4D (R2024+ recommended)
- Python 3.10 or higher (for the MCP Server component)
## Installation
To install the project, follow these steps:
### Clone the Repository
```bash
git clone https://github.com/ttiimmaacc/cinema4d-mcp.git
cd cinema4d-mcp
```
### Install the MCP Server Package
```bash
pip install -e .
```
### Make the Wrapper Script Executable
```bash
chmod +x bin/cinema4d-mcp-wrapper
```
## Setup
### Cinema 4D Plugin Setup
To set up the Cinema 4D plugin, follow these steps:
1. **Copy the Plugin File**: Copy the `c4d_plugin/mcp_server_plugin.pyp` file to Cinema 4D's plugin folder. The path varies depending on your operating system:
- macOS: `/Users/USERNAME/Library/Preferences/Maxon/Maxon Cinema 4D/plugins/`
- Windows: `C:\Users\USERNAME\AppData\Roaming\Maxon\Maxon Cinema 4D\plugins\`
2. **Start the Socket Server**:
- Open Cinema 4D.
- Go to Extensions > Socket Server Plugin
- You should see a Socket Server Control dialog window. Click Start Server.
### Claude Desktop Configuration
To configure Claude Desktop, you need to modify its configuration file:
1. **Open the Configuration File**:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- Alternatively, use the Settings menu in Claude Desktop (Settings > Developer > Edit Config).
2. **Add MCP Server Configuration**:
For development/unpublished server, add the following configuration:
```json
"mcpServers": {
"cinema4d": {
"command": "python3",
"args": ["/Users/username/cinema4d-mcp/main.py"]
}
}
```
3. **Restart Claude Desktop** after updating the configuration file.
<details>
<summary>[TODO] For published server</summary>
```json
{
"mcpServers": {
"cinema4d": {
"command": "cinema4d-mcp-wrapper",
"args": []
}
}
}
```
</details>
## Usage
1. Ensure the Cinema 4D Socket Server is running.
2. Open Claude Desktop and look for the hammer icon ๐จ in the input box, indicating MCP tools are available.
3. Use the available [Tool Commands](#tool-commands) to interact with Cinema 4D through Claude.
## Agent Skill
If you use agent skills, the maintained companion skill for this MCP lives in [vladmdgolam/agent-skills](https://github.com/vladmdgolam/agent-skills/tree/main/skills/cinema4d-mcp).
The skill captures production-oriented guidance that sits on top of the raw MCP tools, including:
- when to prefer `inspect_redshift_materials` over ad-hoc Python for Redshift inspection
- when to fall back to `execute_python_script` for full C4D API access
- current Redshift limits when the runtime or node space is unavailable
- practical MoGraph extraction and debugging workflows
## Testing
### Command Line Testing
To test the Cinema 4D socket server directly from the command line:
```bash
python main.py
```
You should see output confirming the server's successful start and connection to Cinema 4D.
### Testing with MCP Test Harness
The repository includes a simple test harness for running predefined command sequences:
1. **Test Command File** (`tests/mcp_test_harness.jsonl`): Contains a sequence of commands in JSONL format that can be executed in order. Each line represents a single MCP command with its parameters.
2. **GUI Test Runner** (`tests/mcp_test_harness_gui.py`): A simple Tkinter GUI for running the test commands:
```bash
python tests/mcp_test_harness_gui.py
```
The GUI allows you to:
- Select a JSONL test file
- Run the commands in sequence
- View the responses from Cinema 4D
This test harness is particularly useful for:
- Rapidly testing new commands
- Verifying plugin functionality after updates
- Recreating complex scenes for debugging
- Testing compatibility across different Cinema 4D versions
## Troubleshooting & Debugging
1. Check the log files:
```bash
tail -f ~/Library/Logs/Claude/mcp*.log
```
2. Verify Cinema 4D shows connections in its console after you open Claude Desktop.
3. Test the wrapper script directly:
```bash
cinema4d-mcp-wrapper
```
4. If there are errors finding the mcp module, install it system-wide:
```bash
pip install mcp
```
5. For advanced debugging, use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector):
```bash
npx @modelcontextprotocol/inspector uv --directory /Users/username/cinema4d-mcp run cinema4d-mcp
```
## Project File Structure
```
cinema4d-mcp/
โโโ .gitignore
โโโ LICENSE
โโโ README.md
โโโ main.py
โโโ pyproject.toml
โโโ setup.py
โโโ bin/
โ โโโ cinema4d-mcp-wrapper
โโโ c4d_plugin/
โ โโโ mcp_server_plugin.pyp
โโโ src/
โ โโโ cinema4d_mcp/
โ โโโ __init__.py
โ โโโ server.py
โ โโโ config.py
โ โโโ utils.py
โโโ tests/
โโโ test_server.py
โโโ mcp_test_harness.jsonl
โโโ mcp_test_harness_gui.py
```
## Tool Commands
### General Scene & Execution
- `get_scene_info`: Get summary info about the active Cinema 4D scene. โ
- `list_objects`: List all scene objects (with hierarchy). โ
- `group_objects`: Group selected objects under a new null. โ
- `execute_python`: Execute custom Python code inside Cinema 4D. โ
- `save_scene`: Save the current Cinema 4D project to disk. โ
- `load_scene`: Load a `.c4d` file into the scene. โ
- `set_keyframe`: Set a keyframe on an objects property (position, rotation, etc.). โ
### Object Creation & Modification
- `add_primitive`: Add a primitive (cube, sphere, cone, etc.) to the scene. โ
- `modify_object`: Modify transform or attributes of an existing object. โ
- `create_abstract_shape`: Create an organic, non-standard abstract form. โ
### Cameras & Animation
- `create_camera`: Add a new camera to the scene. โ
- `animate_camera`: Animate a camera along a path (linear or spline-based). โ
### Lighting & Materials
- `create_light`: Add a light (omni, spot, etc.) to the scene. โ
- `create_material`: Create a standard Cinema 4D material. โ
- `apply_material`: Apply a material to a target object. โ
- `apply_shader`: Generate and apply a stylized or procedural shader. โ
### Redshift Support
- `inspect_redshift_materials`: Read-only Redshift inspector with fallbacks for assignments, preview colors, readable params, a renderEngine-style node-material probe, and a Redshift GraphView fallback via `redshift.GetRSMaterialNodeMaster(...)`. โ
Known quirk: the top-level `capabilities.redshift_module_available` flag can still be `false` on some builds even when the per-material GraphView fallback succeeds. Treat each material's `graph.backend` and `graph.graphview.redshift_module_imported` as the authoritative signal.
- `validate_redshift_materials`: Check Redshift material setup and connections. โ
โ ๏ธ (Redshift materials not fully implemented)
### MoGraph & Fields
- `create_mograph_cloner`: Add a MoGraph Cloner (linear, radial, grid, etc.). โ
- `add_effector`: Add a MoGraph Effector (Random, Plain, etc.). โ
- `apply_mograph_fields`: Add and link a MoGraph Field to objects. โ
### Dynamics & Physics
- `create_soft_body`: Add a Soft Body tag to an object. โ
- `apply_dynamics`: Apply Rigid or Soft Body physics. โ
### Rendering & Preview
- `render_frame`: Render a frame and save it to disk (file-based output only). โ ๏ธ (Works, but fails on large resolutions due to MemoryError: Bitmap Init failed. This is a resource limitation.)
- `render_preview`: Render a quick preview and return base64 image (for AI). โ
- `snapshot_scene`: Capture a snapshot of the scene (objects + preview image). โ
## Compatibility Plan & Roadmap
| Cinema 4D Version | Python Version | Compatibility Status | Notes |
| ----------------- | -------------- | -------------------- | ------------------------------------------------- |
| R21 / S22 | Python 2.7 | โ Not supported | Legacy API and Python version too old |
| R23 | Python 3.7 | ๐ Not planned | Not currently tested |
| S24 / R25 / S26 | Python 3.9 | โ ๏ธ Possible (TBD) | Requires testing and fallbacks for missing APIs |
| 2023.0 / 2023.1 | Python 3.9 | ๐งช In progress | Targeting fallback support for core functionality |
| 2023.2 | Python 3.10 | ๐งช In progress | Aligns with planned testing base |
| 2024.0 | Python 3.11 | โ
Supported | Verified |
| 2025.0+ | Python 3.11 | โ
Fully Supported | Primary development target |
### Compatibility Goals
- **Short Term**: Ensure compatibility with C4D 2023.1+ (Python 3.9 and 3.10)
- **Mid Term**: Add conditional handling for missing MoGraph and Field APIs
- **Long Term**: Consider optional legacy plugin module for R23โS26 support if demand arises
## Recent Fixes
- Context Awareness: Implemented robust object tracking using GUIDs. Commands creating objects return context (guid, actual_name, etc.). Subsequent commands correctly use GUIDs passed by the test harness/server to find objects reliably.
- Object Finding: Reworked find_object_by_name to correctly handle GUIDs (numeric string format), fixed recursion errors, and improved reliability when doc.SearchObject fails.
- GUID Detection: Command handlers (apply_material, create_mograph_cloner, add_effector, apply_mograph_fields, set_keyframe, group_objects) now correctly detect if identifiers passed in various parameters (object_name, target, target_name, list items) are GUIDs and search accordingly.
- create_mograph_cloner: Fixed AttributeError for missing MoGraph parameters (like MG_LINEAR_PERSTEP) by using getattr fallbacks. Fixed logic bug where the found object wasn't correctly passed for cloning.
- Rendering: Fixed TypeError in render_frame related to doc.ExecutePasses. snapshot_scene now correctly uses the working base64 render logic. Large render_frame still faces memory limits.
- Registration: Fixed AttributeError for c4d.NilGuid.
TDQS
Scored across 25 tools
Most tools have distinct purposes targeting specific Cinema 4D operations like adding objects, applying materials, or rendering. However, some overlap exists between 'apply_dynamics' and 'create_soft_body' (both handle dynamics), and 'apply_material' vs 'apply_shader' (both apply materials), which could cause minor confusion despite clear descriptions.
Tool names follow a highly consistent verb_noun pattern throughout, such as 'add_effector', 'create_camera', 'apply_material', and 'render_frame'. All tools use snake_case with clear, descriptive verbs, making the set predictable and easy to navigate.
With 25 tools, the count is borderline high for a single server, potentially overwhelming for agents. While Cinema 4D is a complex application, the toolset feels heavy and might benefit from consolidation or categorization to improve usability without sacrificing functionality.
The toolset provides comprehensive coverage for 3D scene creation and manipulation in Cinema 4D, including object creation, material application, animation, rendering, and scene management. Key workflows like CRUD for objects, materials, and cameras are fully supported, with no apparent gaps that would hinder agent operations.