エージェントのための3Dファクトリー作業台

Claude Code、Codex、その他 MCP に対応したエージェントに3Dのツールセットを与えるローカル MCP サーバーです。小さなもの — マグカップ、小屋 — を頼めば、返ってくるものはレシピとして保管されます。それをそのまま作り直す小さなファイルです。すでにお使いのツール — Blender、ゲームエンジン、スライサー — の上流に位置し、標準的なファイルをそれらに渡します。どれも置き換えません。ファクトリーができることの残りは、必要になったときに教えてくれます。

npx mojulo init·node 22.12+·apache‑2.0·ローカルで動作

リールタイルにホバーまたはタップすると作り方が見られます

Blender Cycles でレンダリングされた家具付きのラウンジ。オーク材の床、メディアウォールに向かうソファと2脚のクラブチェア、天井に埋め込まれた9つのライトが灯る
Blender Cycles でレンダリングされた Ruby グレープフルーツソーダの6缶パック。グレーのスタジオ背景に、印刷されたコーラル色のカートン、その手前にラベル付きの缶が2本立ち1本が横たわる
机の縁に付けるヘッドホンフック、mojulo のシェーディング表示。オレンジ色の C 字クランプで、前方に反り上がるアームが付く
mojulo のシェーディング表示に映る黄色い作業ロボットのスパイダータンク。膝で曲がった車輪付きの脚が6本、直立した後部タンク、白い3点カメラヘッド
mojulo のシェーディング表示で生成された街区。車と木のある交差した2本の通り、ベンチのある公園、角地に建つ5階建ての建物
mojulo のライブワールドに建つ6階建てのパリのアパルトマン。石造りの通りに面した階に一対の扉、フランス窓のある4フロア、セットバックしたペントハウス、手すり付きの屋上テラス
mojulo のライブワールドで、月のない夜に増水した水力発電ダムの余水吐。12 の水門がそれぞれ白い水のヴェールを落とし、暖色の頂部照明に照らされ、背後に尾根が見える
mojulo のライブワールドに置かれた灰色の V8 エンジンのブロックアウト。2列のヘッドとカバー、ヘッダー、上部にインテークマニホールドとスロットルボディ
mojulo のライブワールドに立つ人型の g-frame mk II。白い骨格の上に青と赤の胸部、鶏冠のある頭部、パネル構成の腕と脚、脇に構えた前腕シールド

すぐ使えるもの

mojulo の4つの機能をポイントクラウドレンダリングでループ再生するリール。9 cm と計測されたマグカップ、seed 4021 と記されたシードから生成された街、world.html にストリーミングされるマグカップ、mug.stl と mug.gltf の書き出しファイル、そしてマグカップを再生成する8行の JSON レシピ

実寸センチメートルのソリッド — 旋盤、スイープ、パーツグラフを、一文で頼むだけ。

シードから育つレベル — 同じシードは、どこでも同じ場所を再生成します。

作ったものは持ち出せる — 自己完結した HTML ページ1枚、glTF、あるいは印刷用ファイルとして。STL / 3MF は実寸です。開くのに何かをインストールする必要はありません。

それぞれがレシピとして保管される — エージェントが後から開き直し、編集し、再生成できる小さなファイルです。

必要環境node 22.12+ & npm·cpu で動作 — gpu 不要·アカウント不要、テレメトリなし·mcp エージェントはご自身で用意 (claude code, codex)

一行で、どこでも同じレシピをブラウザ、blender、unreal で

mojulo が作るものはすべてレシピとして保管されます。開くたびに同じものを再生成する、読める数行です。一行変えれば、どこへ渡ったコピーもそれに合わせて変わります。このラウンジは12行のレシピです。一行足すと天井のライトが9つ付きました — ブラウザでも、Blender のレンダリングでも、Unreal では9つのライトアクターとして。モデリングツールを開いた人は誰もいません。

ダウンライトを付ける前のラウンジの Cycles レンダリング。素の天井
— 最初に頼んだままのラウンジ、素の天井
ダウンライトを付けた後のラウンジの Cycles レンダリング。天井で9つの器具が光る
— レシピに一行追加。同じ部屋、同じ家具、同じカメラ
{
  "title": "One-room house plan — living",
  "kind": "floorplan",
  "width": 24, "height": 28,
  "rooms": [{ "x": 2, "y": 2, "w": 20, "h": 24, "glyph": "L" }],
  "doors": [{ "x": 12, "y": 26, "room": 0, "edge": "S" }],
  "furnish": true,
  "view": "cutaway",
  "seed": 7,
  "potLights": true
}

これがレシピのすべてです。見えているレンダリングは開くたびにそこから作られ、捨ててかまいません。取っておくのはレシピです。この部屋が3つのツールに渡るまでに何を経たかは、見つかったバグも含めて記録にあります。

行き先ウェブページ · blender · ゲームエンジン · プリンター

作ったものは、すでにお使いのツールがそのまま開けるファイルとして持ち出せます。これらのツールはどれも必須ではありません。ウェブページと印刷用ファイルには、他のソフトウェアは一切要りません。

ウェブページ

3D を内側に収めた自己完結の HTML ファイル1枚。送る、ホストする、スマートフォンで開く。インストールも、開く人のアカウントも不要です。

blender

モデルは標準の glTF として開きます。マシンに Blender があれば、mojulo はウィンドウを開かずに実際の光をモデルにベイクさせることも、アーティストに .blend を渡して手作業で仕上げてもらい、仕上がった表面を取り戻すこともできます。

ゲームエンジン

Godot: 書き出したフォルダをプロジェクトとして開き、再生を押すだけ。Unity と Unreal: 番号付きのガイドがインポート手順を案内します。どちらも各自のエディターとアカウントが必要ですが、それを求めているのは各社であって mojulo ではありません。

3D プリンター

実寸ミリメートルの STL または 3MF ファイル。どのスライサーでも開けます。PrusaSlicer か Bambu Studio が入っていれば、mojulo が先にバックグラウンドでスライスし、レイヤー数、印刷時間、フィラメント量をファイルの横に記します。

各ツールが何のインストールを求めるか、反対側から何が出てくるか、そしてそのうちどれが実際に記録として実行されたか。細目がツールごとに列挙し、実行記録がないものはそう記します。

プリンターへフック1つ、記録として

机の縁用のヘッドホンフック。C 字のクランプに反り上がるアーム、mojulo の作業台で実寸ミリメートルでレンダリング
フック — 81 × 30 × 33 mm、スライサーが計測した値

机の縁用のヘッドホンフックを一文で頼みました。あごの幅 19 mm で返ってきたので、もう一度頼むと同じレシピのまま 25 mm に広がりました。3MF として書き出すと、このマシンの2つのスライサーで開き、どちらも寸法と、きれいにスライスできることで一致しました。

ローカルで動作

サーバーも、レシピも、レンダリングもご自身のマシン上にあります。Mojulo は言語モデルもチャット画面も同梱しません。既存のエージェントが MCP 経由で呼び出すサーバーで、ご自身のトークンをご自身のレートで使います。Apache-2.0、npm からインストール、既定でセルフホスト — 他にホストする先が何もないからです。

STEMタイルにホバーでライブワールド · クリックで解説

同じグリッドを、教える道具として使います。エージェントに概念を一文で頼むだけ — 「降着円盤付きのブラックホールを見せて」「原子炉の炉心、ただし制御棒は抜いた状態で」「炭素の軌道」 — すると数行のレシピから、周回して見られるライブな3D世界が生成されます。数値を変えてもう一度生成する。真横から見せてもらう。ページを書き出してクラスに渡す。

はじめる

一行だけ。あとはエージェントに話しかけます。

npx mojulo init
必要環境·node 22.12+·apache‑2.0·ローカルで動作·アカウント不要