PoCs

CLI 는 산출물을 남기고, MCP 는 대화를 이어간다

Codex 나 Claude Code 로 Blender 를 다루는 두 방법: CLI 는 Blender Python 을 생성해 헤드리스로 실행해 결과물을 내고, MCP 는 *실행 중인* Blender 에 접속해 단계 사이 현재 씬을 읽으며 대화형으로 조작합니다. 할 수 있는 일은 겹치지만 — 둘 다 큐브를 추가할 수 있습니다 — 작업 방식이 한 축에서 다릅니다: CLI 는 다시 돌릴 수 있고 검토 가능한 스크립트를 남기고(배치·재현성·서버 실행), MCP 는 살아있는 프로세스와 상태 있는 대화를 이어갑니다(확인·조정·검증·반복). 성숙한 방식은 둘 다입니다 — CLI 로 생성·일괄 출력하고, MCP 로 중간에 다듬기.

아직 만들지 않았습니다

이 페이지는 카드에 적힌 내용을 펼쳐 보여줄 뿐입니다 — 돌아가는 코드도, 열어볼 데모도 아직 없습니다. 무엇을 왜 만들려는지가 아래에 있습니다.

어떻게 보나

아직 범위 미정 — 빌드가 아니라 워크플로 분해입니다. 실제 작업 하나("교실 씬을 만들고 GLB 로 내보내기")를 둘로 라우팅합니다: **CLI** 로 기본 씬을 Python 스크립트로 생성(내구성·검토 가능·재실행 가능 — 바닥·벽·책상·칠판·조명을 한 번에), **MCP** 로 살아있는 씬을 보며 대화형 조정("책상 줄여", "칠판 크게", "창에서 빛 들어오게"), 그다음 다시 **CLI** 로 일괄 출력(다중 카메라 렌더, GLB export, 폴리곤 수 확인). 글이 짚는 규율은 챙길 만합니다 — AI 에게 *무엇을 만들지* 뿐 아니라 *어떻게 확인할지*도 지시할 것: 고정 카메라 렌더는 전후를 비교 가능하게 하고(CLI 의 재현 가능한 확인), 라이브 뷰포트는 즉각적이게 합니다(MCP 의 상태 있는 확인). 산출물: 작업 속성(배치? 재현성? 상태? 대화형?)을 CLI 대 MCP 로 매핑하는 결정표, 그리고 둘 다 필요한 작업을 위한 CLI -> MCP -> CLI 파이프라인. 출처: npaka(note.com), "AIでBlenderを操作する方法 — CLIとMCPの使い分け", 2026-09-03 — 실무 how-to; Blender 는 예시이고 CLI 대 MCP 축이 옮겨 쓸 부분.

기술 노트

각 항목이 실제로 무엇을 보여주고 어떻게 동작하는지 — 위 카드보다 자세한 기술 설명입니다.

CLI 는 산출물을 남기고, MCP 는 대화를 이어간다준비 중

목적: **할 수 있는 일은 겹치고 작업 방식이 다르며, 축은 재현성 대 살아있는 상태입니다.** CLI 경로는 생성-후-실행입니다: AI 가 Blender Python 을 쓰고, 헤드리스로 돌고, 결과물을 냅니다 — 그리고 그 스크립트는 내구성 있고 검토 가능하며 다시 돌릴 수 있는 산출물이라, 배치 처리·형식 변환·서버 실행에 맞습니다. MCP 경로는 확인-후-행동입니다: AI 가 실행 중인 Blender 에 접속해, 현재 씬을 읽고, 조작하고, 확인하고, 조정합니다 — 상태 있는 대화. 어느 쪽이 낫지 않고, 다른 것을 최적화합니다. 이것은 `constraint-was-the-product` 가 벌인 바로 그 CLI 대 MCP 논쟁을 *다른 차원*에서 본 것입니다 — 그 카드는 인증·규모·관측성을 저울질했고, 이 카드는 배치-재현성 대 대화형-상태성을 저울질합니다. 축에는 차원이 여럿이고, 당신 작업이 어느 차원에 사는지 이름 붙이는 게 결정의 전부입니다. **재현성 절반이 과소평가된 쪽이고, `agent-ask-not-write` 와 같은 가치입니다.** CLI 는 읽고, 보관하고, diff 하고, 결정적으로 다시 돌릴 수 있는 Python 산출물을 냅니다 — 비결정적 AI 가 한 번 쓰고, 결정적 스크립트가 영원히 실행합니다. 반면 MCP 는 결과를 *실행 중인 프로세스*에 담습니다: 그 힘은 씬을 볼 수 있다는 것이고(이는 `a-boolean-hides-a-state-machine`·`rpc-view-not-consensus` 의 살아있는 상태를 읽는 도구), 그 비용은 대화가 재현 가능한 산출물이 아니라는 것 — 다시 돌려도 씬이 똑같이 돌아오지 않을 수 있습니다. 그래서 CLI 는 무상태-재현가능이고 MCP 는 상태있음-라이브이며, 이것은 REST 대 세션, 배치 대 REPL 뒤의 그 교환과 같습니다 — 3D 도구에서 본 `a-boolean-hides-a-state-machine` 클러스터의 또 한 얼굴. **성숙한 워크플로는 양자택일이 아니라 CLI -> MCP -> CLI 이고, 추가 지시는 어떻게 확인하느냐입니다.** CLI 로 생성·배치하고, MCP 로 대화형 다듬고, CLI 로 출력·검증합니다. 그리고 에이전트는 당신처럼 씬을 보지 못하므로 "무엇을 만들지"는 지시의 절반일 뿐이고 "어떻게 확인할지"가 나머지 절반입니다 — 비교 가능한 전후를 위한 고정 카메라 렌더, 또는 즉각성을 위한 라이브 뷰포트. 이는 `simulate-before-sign` 의 "가정 말고 검증"을 3D 에 적용한 것이고, 일반화됩니다 — 열쇠구멍으로 도구를 모는 모든 에이전트에게 안정적인 지시 형태는 작업 + 그 검증입니다. 관련: `mcp-three-sides`(프로토콜), `constraint-was-the-product`(같은 CLI 대 MCP 축, 다른 차원), `agent-ask-not-write`(검토 가능한 결정적 산출물), `a-boolean-hides-a-state-machine`(상태 대 무상태), `simulate-before-sign`(제작 + 검증).

동작 방식: ### 같은 능력, 다른 작업 방식 | | Blender CLI | Blender MCP | | --- | --- | --- | | 흐름 | AI 가 Python 작성 -> 헤드리스 실행 -> 출력 | AI 가 실행 중 Blender 접속 -> 확인 -> 행동 -> 검증 | | 남기는 것 | 다시 돌릴 수 있고 검토 가능한 **스크립트** | 산출물이 아니라 **살아있는 프로세스**의 변경 | | 상태 | 무상태 / 재현 가능 | 상태 있음 / 라이브 씬 | | 적합 | 배치·형식 변환·대량 편집·자동 렌더·서버 | 기존 씬 편집·배치/조명/카메라 조정·시행착오 | ### 결합 파이프라인 | 단계 | 도구 | 하는 일 | | --- | --- | --- | | 1. 생성 | **CLI** | 기본 씬을 Python 스크립트로 제작 | | 2. 다듬기 | **MCP** | 라이브 씬을 보며 대화형 조정 | | 3. 출력 | **CLI** | 다중 카메라 렌더, GLB export, 폴리곤 수 확인 | ### 무엇을 만들지 뿐 아니라 어떻게 확인할지 지시 | 확인 | 맞는 쪽 | | --- | --- | | **고정 카메라**로 렌더, 전후 비교 | CLI — 재현 가능 | | **라이브 뷰포트** / 씬 정보 읽기 | MCP — 즉각 | | 오브젝트 겹침 확인; 정면/위에서 보기 | 명시하면 둘 다 | ### 관련 카드 `mcp-three-sides`(아래의 프로토콜), `constraint-was-the-product`(같은 CLI 대 MCP 축, 인증/규모로 저울질), `agent-ask-not-write`(CLI 가 남기는 결정적 검토 가능 산출물), `a-boolean-hides-a-state-machine`(상태 대 무상태, 라이브 대 재현), `simulate-before-sign`("무엇을 만들지" + "어떻게 검증할지").