Cinema4D MCP — モデルコンテキストプロトコル(MCP)サーバー
Cinema4D MCP サーバーは Cinema 4D を Claude に接続し、プロンプトによる 3D 操作を可能にします。
目次
コンポーネント
- C4D プラグイン: MCP サーバーからのコマンドをリッスンし、Cinema 4D 環境で実行するソケット サーバー。
- MCP サーバー: MCP プロトコルを実装し、Cinema 4D 統合用のツールを提供する Python サーバー。
前提条件
- Cinema 4D(R2024+推奨)
- Python 3.10 以上 (MCP サーバー コンポーネント用)
インストール
プロジェクトをインストールするには、次の手順に従います。
リポジトリのクローンを作成する
git clone https://github.com/ttiimmaacc/cinema4d-mcp.git
cd cinema4d-mcp
MCP サーバー パッケージをインストールする
ラッパースクリプトを実行可能にする
chmod +x bin/cinema4d-mcp-wrapper
設定
Cinema 4Dプラグインのセットアップ
Cinema 4D プラグインを設定するには、次の手順に従います。
- プラグインファイルのコピー:
c4d_plugin/mcp_server_plugin.pyp
ファイルをCinema 4Dのプラグインフォルダにコピーします。パスはオペレーティングシステムによって異なります。- macOS:
/Users/USERNAME/Library/Preferences/Maxon/Maxon Cinema 4D/plugins/
- Windows:
C:\Users\USERNAME\AppData\Roaming\Maxon\Maxon Cinema 4D\plugins\
- ソケットサーバーを起動します:
- Cinema 4Dを開きます。
- 拡張機能 > ソケットサーバープラグインに移動します
- ソケットサーバーコントロールのダイアログウィンドウが表示されます。「サーバーを起動」をクリックします。
クロードデスクトップ構成
Claude Desktop を構成するには、構成ファイルを変更する必要があります。
- 設定ファイルを開きます:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- または、Claude Desktop の [設定] メニュー ([設定] > [開発者] > [構成の編集]) を使用します。
- MCP サーバー構成の追加: 開発/非公開サーバーの場合は、次の構成を追加します。
"mcpServers": {
"cinema4d": {
"command": "python3",
"args": ["/Users/username/cinema4d-mcp/main.py"]
}
}
- 設定ファイルを更新した後、 Claude Desktop を再起動します。
{
"mcpServers": {
"cinema4d": {
"command": "cinema4d-mcp-wrapper",
"args": []
}
}
}
使用法
- Cinema 4D ソケット サーバーが実行されていることを確認します。
- Claude Desktop を開き、入力ボックスで MCP ツールが利用可能であることを示すハンマー アイコン 🔨 を探します。
- 利用可能なツール コマンドを使用して、Claude を通じて Cinema 4D を操作します。
テスト
コマンドラインテスト
コマンドラインから Cinema 4D ソケット サーバーを直接テストするには:
サーバーの正常な起動と Cinema 4D への接続を確認する出力が表示されます。
MCPテストハーネスによるテスト
リポジトリには、事前定義されたコマンド シーケンスを実行するためのシンプルなテスト ハーネスが含まれています。
- テストコマンドファイル(
tests/mcp_test_harness.jsonl
): 順番に実行できるJSONL形式のコマンドシーケンスが含まれています。各行は、パラメータを含む単一のMCPコマンドを表します。 - GUI テスト ランナー(
tests/mcp_test_harness_gui.py
): テスト コマンドを実行するためのシンプルな Tkinter GUI:python tests/mcp_test_harness_gui.py
GUI を使用すると次のことが可能です。- JSONLテストファイルを選択
- コマンドを順番に実行する
- Cinema 4Dからの回答を見る
このテストハーネスは、特に次の場合に役立ちます。
- 新しいコマンドを迅速にテストする
- アップデート後のプラグインの機能の検証
- デバッグのために複雑なシーンを再現する
- 異なるCinema 4Dバージョン間の互換性テスト
トラブルシューティングとデバッグ
- ログファイルを確認します:
tail -f ~/Library/Logs/Claude/mcp*.log
- Claude Desktop を開いた後、Cinema 4D のコンソールに接続が表示されていることを確認します。
- ラッパー スクリプトを直接テストします。
- mcp モジュールを見つける際にエラーが発生する場合は、システム全体にインストールします。
- 高度なデバッグには、 MCP Inspectorを使用します。
npx @modelcontextprotocol/inspector uv --directory /Users/username/cinema4d-mcp run cinema4d-mcp
プロジェクトファイルの構造
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
ツールコマンド
一般的なシーンと処刑
get_scene_info
: アクティブな Cinema 4D シーンの概要情報を取得します。✅list_objects
: すべてのシーンオブジェクトを(階層とともに)一覧表示します。✅group_objects
: 選択したオブジェクトを新しいヌルの下にグループ化します。✅execute_python
: Cinema 4D 内でカスタム Python コードを実行します。✅save_scene
: 現在の Cinema 4D プロジェクトをディスクに保存します。✅load_scene
: .c4d
ファイルをシーンに読み込みます。✅set_keyframe
: オブジェクトのプロパティ(位置、回転など)にキーフレームを設定します。✅
オブジェクトの作成と変更
add_primitive
: シーンにプリミティブ(立方体、球、円錐など)を追加します。✅modify_object
: 既存のオブジェクトの変換または属性を変更します。✅create_abstract_shape
: 有機的で非標準の抽象的なフォームを作成します。✅
カメラとアニメーション
create_camera
: シーンに新しいカメラを追加します。✅animate_camera
: パス(線形またはスプラインベース)に沿ってカメラをアニメーション化します。✅
照明と素材
create_light
: シーンにライト(オムニ、スポットなど)を追加します。✅create_material
: 標準の Cinema 4D マテリアルを作成します。✅apply_material
: ターゲットオブジェクトにマテリアルを適用します。✅apply_shader
: スタイル化されたシェーダーまたは手続き型シェーダーを生成して適用します。✅
Redshift サポート
validate_redshift_materials
: Redshift マテリアルの設定と接続を確認します。✅ ⚠️ (Redshift マテリアルは完全に実装されていません)
MoGraphとフィールド
create_mograph_cloner
: MoGraph Cloner (線形、放射状、グリッドなど) を追加します。✅add_effector
: MoGraph エフェクター(ランダム、プレーンなど)を追加します。✅apply_mograph_fields
: MoGraph フィールドをオブジェクトに追加してリンクします。✅
力学と物理学
create_soft_body
: オブジェクトにソフトボディタグを追加します。✅apply_dynamics
: リジッドボディまたはソフトボディの物理特性を適用します。✅
レンダリングとプレビュー
render_frame
: フレームをレンダリングしてディスクに保存します (ファイルベースの出力のみ)。⚠️ (動作しますが、解像度が大きい場合は MemoryError: Bitmap Init failed のため失敗します。これはリソースの制限です。)render_preview
: クイックプレビューをレンダリングし、base64 イメージを返します (AI 用)。✅snapshot_scene
: シーンのスナップショット(オブジェクト + プレビュー画像)をキャプチャします。✅
互換性計画とロードマップ
Cinema 4Dバージョン | Pythonバージョン | 互換性ステータス | 注記 |
---|
R21 / S22 | Python 2.7 | ❌ サポートされていません | レガシーAPIとPythonのバージョンが古すぎる |
R23 | Python 3.7 | 🔍 計画なし | 現在テストされていません |
S24 / R25 / S26 | Python 3.9 | ⚠️ 可能性あり(未定) | 不足しているAPIのテストとフォールバックが必要 |
2023.0 / 2023.1 | Python 3.9 | 🧪 進行中 | コア機能のフォールバックサポートをターゲットとする |
2023.2 | Python 3.10 | 🧪 進行中 | 計画されたテストベースと整合 |
2024.0 | Python 3.11 | ✅ サポートされています | 検証済み |
2025.0以降 | Python 3.11 | ✅ 完全サポート | 主な開発目標 |
互換性の目標
- 短期:C4D 2023.1+(Python 3.9および3.10)との互換性を確保する
- 中期: 不足している MoGraph および Field API の条件付き処理を追加する
- 長期的: 需要があれば、R23~S26 のサポート用にオプションのレガシープラグインモジュールを検討します。
最近の修正
- コンテキスト認識:GUIDを用いた堅牢なオブジェクト追跡を実装しました。オブジェクトを作成するコマンドはコンテキスト(GUID、actual_nameなど)を返します。後続のコマンドは、テストハーネス/サーバーから渡されたGUIDを正しく使用して、オブジェクトを確実に検出します。
- オブジェクトの検索: find_object_by_name を再構築して GUID (数値文字列形式) を正しく処理できるようにし、再帰エラーを修正し、doc.SearchObject が失敗した場合の信頼性を向上しました。
- GUID 検出: コマンド ハンドラー (apply_material、create_mograph_cloner、add_effector、apply_mograph_fields、set_keyframe、group_objects) は、さまざまなパラメーター (object_name、target、target_name、list items) で渡された識別子が GUID であるかどうかを正しく検出し、それに応じて検索するようになりました。
- create_mograph_cloner: getattr フォールバックを使用することで、MoGraph パラメータ(MG_LINEAR_PERSTEP など)が不足している場合に発生する AttributeError を修正しました。見つかったオブジェクトがクローン作成時に正しく渡されないロジックのバグを修正しました。
- レンダリング: render_frame の doc.ExecutePasses 関連の TypeError を修正しました。snapshot_scene は、base64 レンダリングロジックを正しく使用するようになりました。大きな render_frame は依然としてメモリ制限に直面します。
- 登録: c4d.NilGuid の AttributeError を修正しました。