에이전트를 위한 3D 팩토리작업대.

Claude Code, Codex, 또는 MCP를 지원하는 모든 에이전트에 3D 툴셋을 주는 로컬 MCP 서버입니다. 작은 것 — 머그컵, 오두막 — 을 요청하면, 돌아오는 것은 레시피로 보관됩니다. 그것을 똑같이 다시 만들어내는 작은 파일입니다. 이미 쓰고 있는 도구들 — Blender, 엔진, 슬라이서 — 의 상류에 자리해 표준 파일을 넘겨주며, 그중 어느 것도 대체하지 않습니다. 팩토리가 하는 나머지 일은, 그것에 손을 뻗을 때 알려줍니다.

npx mojulo init·node 22.12+·apache‑2.0·로컬에서 실행

타일에 마우스를 올리거나 탭하면 만든 과정이 나옵니다

Blender Cycles로 렌더한 가구가 놓인 라운지: 오크 바닥, 미디어 월을 향한 소파와 클럽 체어 두 개, 은은히 빛나는 매입형 천장등 아홉 개
Blender Cycles로 렌더한 루비 자몽 소다 식스팩: 라벨이 붙은 캔 두 개는 서 있고 하나는 누워 있으며, 그 뒤에 인쇄된 코랄색 카턴이 회색 스튜디오 스윕 위에 놓여 있다
mojulo의 셰이딩 뷰로 본 책상 모서리용 헤드폰 후크: 앞쪽에서 위로 감아 올라가는 스윕 암이 달린 주황색 C자형 클램프
mojulo의 셰이딩 뷰로 본 노란색 작업 로봇 스파이더 탱크: 무릎에서 굽은 바퀴 달린 다리 여섯 개, 곧게 선 후방 탱크, 흰색 3점 카메라 헤드
mojulo의 셰이딩 뷰로 본 생성된 도시 블록: 차와 나무가 있는 교차하는 두 거리, 벤치가 놓인 공원, 그리고 코너 부지의 5층 건물
mojulo의 라이브 월드에 있는 6층 파리 아파트 건물: 짝을 이룬 문이 있는 석재 1층, 프렌치 윈도우가 있는 네 개 층, 뒤로 물러난 펜트하우스와 난간이 있는 루프 테라스
mojulo의 라이브 월드에서 달 없는 밤에 방류 중인 수력 발전 댐의 여수로: 열두 개의 수문이 각각 따뜻한 정상부 조명 아래로 흰 물의 베일을 흘리고, 뒤에는 능선이 있다
mojulo의 라이브 월드에 있는 회색 V8 엔진 블록아웃: 헤드와 커버 두 뱅크, 헤더, 위쪽의 인테이크 매니폴드와 스로틀 보디
mojulo의 라이브 월드에 서 있는 휴머노이드 g-프레임 mk II: 흰색 프레임 위의 파랑과 빨강 흉부, 볏이 달린 머리, 패널로 덮인 팔과 다리, 옆에 든 팔뚝 실드

바로 쓸 수 있는 것

mojulo의 네 가지 기능을 포인트 클라우드 렌더로 보여주는 반복 릴: 9 cm로 측정된 머그컵, seed 4021이라고 표시된 시드 도시, world.html로 흘러 들어가는 머그컵, mug.stl과 mug.gltf 내보내기 파일, 그리고 머그컵을 다시 생성하는 8줄짜리 JSON 레시피

실제 센티미터 단위의 솔리드 — 선반, 스윕, 부품 그래프를 한 문장으로 요청합니다.

시드에서 자란 레벨 — 같은 시드는 어디서든 같은 장소를 다시 생성합니다.

만든 것은 밖으로 나갈 수 있습니다 — 하나로 완결된 HTML 페이지, glTF, 또는 출력 파일: 실제 크기의 STL / 3MF. 열어 보려고 설치할 것은 없습니다.

모든 것은 레시피로 보관됩니다 — 에이전트가 나중에 다시 열고, 고치고, 다시 생성할 수 있는 작은 파일입니다.

요구 사항node 22.12+ & npm·cpu로 동작 — gpu 불필요·계정 불필요, 텔레메트리 없음·mcp 에이전트는 직접 준비 (claude code, codex)

한 줄로, 어디서나브라우저, blender, unreal에서 같은 레시피

mojulo가 만드는 모든 것은 레시피로 보관됩니다. 열 때마다 같은 것을 다시 생성하는, 읽을 수 있는 몇 줄입니다. 한 줄을 바꾸면 그것이 간 곳이 어디든 모든 복사본이 함께 바뀝니다. 이 라운지는 열두 줄짜리 레시피입니다. 한 줄을 더하니 천장등 아홉 개가 생겼습니다 — 브라우저에서, Blender의 렌더에서, 그리고 Unreal에서는 아홉 개의 라이트 액터로. 아무도 모델링 도구를 열지 않았습니다.

매입등 이전의 라운지 Cycles 렌더: 아무것도 없는 천장
이전 — 처음 요청한 그대로의 라운지, 아무것도 없는 천장
매입등 이후의 라운지 Cycles 렌더: 천장에서 빛나는 캔 조명 아홉 개
이후 — 레시피에 한 줄 추가. 같은 방, 같은 가구, 같은 카메라
{
  "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
}

이것이 레시피 전부입니다. 보이는 렌더는 열 때마다 그것으로 만들어지고 버려도 됩니다. 남겨 두는 것은 레시피입니다. 이 방이 세 개의 도구로 들어가는 길에서 겪은 일은, 그 과정에서 찾아낸 버그까지 포함해 기록에 남아 있습니다.

어디로 가는가웹페이지 · blender · 게임 엔진 · 프린터

만든 것은 밖으로 나갈 수 있습니다. 이미 쓰고 있는 도구들이 스스로 여는 파일로 말이죠. 이 도구들 중 어느 것도 필수는 아닙니다: 웹페이지와 출력 파일은 다른 소프트웨어를 전혀 필요로 하지 않습니다.

웹페이지

3D가 안에 들어 있는, 하나로 완결된 HTML 파일. 보내고, 호스팅하고, 휴대폰에서 열어 보세요. 설치할 것도, 여는 사람에게 필요한 계정도 없습니다.

blender

모델은 표준 glTF로 열립니다. Blender가 그 컴퓨터에 있으면 mojulo가 창을 열지 않고 실제 빛을 모델에 베이크하게 할 수도, 아티스트에게 .blend를 건네 손으로 마무리하게 하고 완성된 표면을 다시 가져올 수도 있습니다.

게임 엔진

Godot: 내보낸 폴더를 프로젝트로 열고 재생을 누르면 됩니다. Unity와 Unreal: 번호가 붙은 안내가 임포트 과정을 안내합니다. 둘 다 각자의 에디터와 계정이 필요한데, 그건 mojulo가 아니라 그들이 요구하는 것입니다.

3D 프린터

실제 밀리미터 단위의 STL 또는 3MF 파일. 어떤 슬라이서에서든 열립니다. PrusaSlicer나 Bambu Studio가 설치되어 있으면 mojulo가 먼저 백그라운드에서 슬라이스하고, 레이어 수, 출력 시간, 필라멘트를 파일 옆에 적어 둡니다.

각 도구가 무엇을 설치하라고 하는지, 반대편으로 무엇이 나오는지, 그리고 이 중 무엇이 실제로 기록으로 실행되었는지 — 세부 사항이 도구별로 나열하고, 실행 기록이 없는 곳은 없다고 말합니다.

프린터로후크 하나, 기록으로

책상 모서리용 헤드폰 후크: 스윕 암이 달린 C자형 클램프, mojulo의 작업대에서 실제 밀리미터로 렌더한 모습
후크 — 81 × 30 × 33 mm, 슬라이서가 측정한 대로

책상 모서리용 헤드폰 후크를 한 문장으로 요청했습니다. 조 폭 19 mm로 돌아왔고, 다시 요청하니 같은 레시피에서 25 mm로 넓어졌습니다. 3MF로 써 내자 이 컴퓨터의 두 슬라이서에서 열렸고, 둘 다 크기와 깔끔하게 슬라이스된다는 점에 동의했습니다.

로컬에서 실행

서버, 레시피, 렌더는 모두 내 컴퓨터에 있습니다. mojulo는 언어 모델도 채팅 창도 함께 제공하지 않습니다 — 이미 쓰고 있는 에이전트가 MCP로 호출하는 서버이며, 토큰은 당신 것을 당신의 요율로 씁니다. Apache-2.0, npm에서 설치, 기본이 셀프 호스팅입니다. 다른 어디에도 호스팅할 것이 없기 때문입니다.

STEM타일에 올리면 라이브 월드 · 클릭하면 해설

같은 그리드를 선생님으로 일하게 한 것입니다. 에이전트에게 개념을 한 문장으로 요청하면 — "강착 원반이 있는 블랙홀을 보여줘", "원자로 노심, 그리고 제어봉은 빼고", "탄소의 오비탈" — 몇 줄짜리 레시피에서 돌려볼 수 있는 라이브 3D 월드를 생성합니다. 숫자를 바꿔 다시 생성하고, 측면에서 보여 달라고 하고, 페이지를 내보내 수업에 건네주세요.

시작하기

한 줄, 그다음은 에이전트에게 말하면 됩니다.

npx mojulo init
필요·node 22.12+·apache‑2.0·로컬에서 실행·계정 불필요