blender-copilot: AI が自分で Blender を動かして作業する MCP server
blender-copilot は AI を Blender に直接つなぐ MCP server だ。AI クライアント(Claude、Cursor)がこれを経由して Blender を呼び出し、モデリング、ボーン、表情、エクスポートといった作業を自動でこなす。作った主な目的は VRChat avatar の workflow を回すため。モデリング、リギング、viseme 作成、FBX を Unity に取り込んで descriptor を設定、という一連のチェーンは長くて細かく、完全に手作業なので、いっそ AI に任せることにした。
どうつながっているか
接続は三層に分かれる。AI クライアントは stdio MCP で server.py(FastMCP)につなぎ、server はさらにローカル TCP 9876 で Blender につなぐ。Blender 内のアドオンが socket server を立て、cmd_ プレフィックスでコマンドを振り分け、bpy 内で実行して結果を返す。
AI (Claude / Cursor) ──stdio/MCP──► MCP Server ──TCP:9876──► Blender Addon
なぜ TCP 層を挟むのか、bpy を直接 import しないのか。bpy は Blender プロセスの中でしか生きられず、普通のライブラリとしては使えないからだ。プラグインで中にサービスを立て、外の server が中継するしかない。
ツールが三百個超まで積み上がった経緯
ツールは今や三百個を超え、二十いくつのモジュールに分かれている。きっかけは avatar 作りの一歩ごとに壁にぶつかったことだ。シーンの確認、基礎メッシュ作成、ブーリアン、退化面のクリーンアップ、UV、Rigify でのリギング、VRC Humanoid のボーン命名への変換、15 個の viseme、ARKit 52 の blend shape セット、VRCFT Unified Expressions、髪やスカートの揺れ用 PhysBones、パフォーマンス等級のチェック。ぶつかるたびに一括で補っていった。VRC 関連は vrc_tools.py、フェイストラッキングは face_tracking_tools.py、Unity 自動化は unity_tools.py にある。ほかにも pipeline 級のオーケストレーションをいくつか書き、mesh から FBX まで一気に通したり、FBX を Unity まで押し流して完成品を出したりできるようにした。素材は PolyHaven、Sketchfab、それに Rodin や腾讯混元といった text/image-to-3D をつないでいて、HDRI が足りないときやモデルを手早く引き込みたいときに楽になる。
ハマった落とし穴
一番厄介だったのは TCP のタイムアウトだ。法線の bake やリトポのように長く走る処理は、socket の向こうが待ちきれずに切れる。あとから headless 実行を追加し、コードをヘッドレスの Blender 子プロセスに投げて走らせ、タイムアウトを回避した。bpy は状態を持ちすぎていて、ちょっと油断すると non-manifold、浮いた頂点、退化面を残す。そこで専用のメッシュ品質チェックを作り、エクスポート前に一度体検を通すようにした。
オリジナルであって fork ではない。発想は Blender MCP コミュニティ全体の数々のプロジェクトを統合し、その上に積み上げたものだ。MIT、Blender 4.0+ と Python 3.10+ が必要。