작성자 주: Rhino MCP Server를 처음부터 배포하고 Codex에 APIYI 인터페이스를 설정해, 3단계로 첫 자연어 모델링 명령을 실행해 봅니다. GPT Codex와 Claude 계열 모델의 모델링 성능도 비교합니다.
한마디로 Rhino가 자동 모델링을 하게 만드는 일은 많은 3D 디자이너와 파라메트릭 모델링 엔지니어가 원하는 기능이에요. 어려운 점은 Rhino 자체가 아니라 대규모 언어 모델, MCP 프로토콜, 클라이언트를 서로 연결하는 방법에 있습니다. 이 글에서는 Codex + Rhino MCP + APIYI 인터페이스를 연동하는 전체 과정을 소개하고, Codex에서 Rhino MCP를 사용하는 실전 방법을 알려드려요.
이 글은 개념을 설명하는 데 그치지 않습니다. “MCP Server 배포 → Codex 인터페이스 설정 → 첫 명령 실행” 순서로 따라 할 수 있는 실전 가이드예요. 사용자 지원 과정에서 많은 분이 보통 세 가지 문제에 막힌다는 점을 확인했습니다. 환경을 처음부터 어떻게 구성하는지, Codex를 서드파티 API에 어떻게 연결하는지, 어떤 모델의 모델링 결과가 더 나은지입니다. 이 글에서 하나씩 답해 드릴게요.
핵심 내용: 이 글을 읽고 나면 로컬 컴퓨터에서 자연어로 Rhino를 제어해 기하 도형을 만들 수 있고, 여러 모델의 모델링 성능을 객관적으로 비교하는 방법도 알게 됩니다.

Codex에서 Rhino MCP 연동 시 핵심 사항
시작하기 전에 전체 연결 과정이 어떤 구성 요소로 이루어져 있는지, 각 구성 요소를 누가 담당하는지부터 알아두세요. 연동에 실패하는 경우 중 상당수는 ‘모델 API 문제’와 ‘MCP Server 문제’를 구분하지 않고 함께 점검해서 발생해요.
| 구성 요소 | 역할 | 제공 및 배포 주체 |
|---|---|---|
| Rhino 플러그인 | Rhino 내부에서 명령을 수신하고 모델링 작업을 실행해요 | 사용자 컴퓨터에 설치 |
| Rhino MCP Server | Rhino 기능을 MCP 도구로 제공해 AI 클라이언트가 호출할 수 있게 해요 | 사용자 컴퓨터에 배포 |
| Codex 클라이언트 | MCP 도구를 불러오고, 대규모 언어 모델과의 대화 및 작업 분배를 담당해요 | 사용자 컴퓨터에 설치 및 설정 |
| 대규모 언어 모델 API | 명령을 이해하고, 단계를 계획하며, 도구 호출에 필요한 매개변수를 생성해요 | APIYI를 통해 연동 |
Rhino MCP의 작동 원리 자세히 알아보기
MCP(Model Context Protocol)는 AI 클라이언트가 일관된 방식으로 외부 도구를 호출할 수 있도록 하는 프로토콜이에요. Rhino MCP Server는 ‘직육면체 생성’, ‘현재 문서의 객체 가져오기’, ‘Python 스크립트 실행’ 등의 기능을 도구로 등록해요. Codex는 시작할 때 도구 이름과 설명, 매개변수 구조를 읽어 대규모 언어 모델에 함께 전달해요.
“원점에 100×50×20 크기의 직육면체를 그려줘”라고 입력해도 모델이 Rhino를 직접 조작하는 것은 아니에요. 모델은 구조화된 도구 호출 요청을 반환하고, Codex가 이 요청을 MCP Server로 전달해요. 그러면 Server가 로컬 연결을 통해 Rhino 플러그인에 작업 실행을 알리고, 결과는 같은 경로를 거쳐 모델로 돌아가요. 따라서 모델링 품질은 본질적으로 모델의 도구 호출 능력과 여러 단계로 구성된 작업을 계획하는 능력에 달려 있어요. 모델을 선택할 때 가장 중요하게 살펴봐야 하는 지표이기도 해요.

Codex와 Rhino MCP 연동을 위한 환경 준비
본격적으로 시작하기 전에 로컬 환경이 다음 조건을 충족하는지 확인해 주세요. Rhino MCP는 커뮤니티에서 개발한 오픈소스 프로젝트라 버전에 따라 설치 방법이 조금씩 다를 수 있어요. 자세한 내용은 프로젝트 README를 확인해 주세요.
| 환경 항목 | 요구 사항 | 확인 방법 |
|---|---|---|
| Rhino | Rhino 7 또는 Rhino 8(프로젝트 안내에 따름) | Rhino를 열어 버전 확인 |
| Python 환경 | MCP 서버 실행을 위해 uv 설치 권장 | 터미널에서 uv --version 실행 |
| Node.js | Codex CLI 설치에 npm 사용 | 터미널에서 node -v 실행 |
| Codex 클라이언트 | CLI, IDE 플러그인, 데스크톱 앱 모두 사용 가능 | 터미널에서 codex --version 실행 |
| API 키 | Codex/Claude 계열 모델을 호출할 수 있는 키 | APIYI 콘솔에서 생성 |
사용 중인 네트워크에서 해외 공식 API에 안정적으로 접속하기 어렵다면, 우선 모델 API 연결 문제부터 해결하는 것이 좋아요. MCP 서버와 Rhino는 로컬에서 실행되며, 인터넷 연결이 필요한 부분은 모델 추론 요청뿐이에요.
Codex와 Rhino MCP 빠르게 연동하기: 3단계로 AI 자동 모델링 구현
1단계: Rhino MCP Server 배포
커뮤니티 오픈소스 프로젝트인 rhinomcp를 예로 들면, 배포는 ‘Rhino 플러그인’과 ‘MCP Server’ 두 부분으로 나뉘어요.
- Rhino에서 Package Manager를 열고
rhinomcp를 검색해 플러그인을 설치한 다음, Rhino를 다시 시작해요. - Rhino 명령줄에 플러그인이 제공하는 시작 명령을 입력해요. 프로젝트에서는
mcpstart를 사용해요. 그러면 플러그인이 로컬 연결을 수신하기 시작해요. - 터미널에서
uvx rhinomcp를 실행해 MCP Server가 오류 없이 정상적으로 시작되는지 확인해요.
2단계 설정을 마치면 Codex가 MCP Server를 자동으로 실행하므로, 여기서 수동으로 시작하는 과정은 환경 확인용이에요. uvx 명령을 찾을 수 없다는 메시지가 표시되면 대개 uv가 시스템 PATH에 등록되지 않은 경우예요. 터미널을 다시 열거나 uv 공식 안내에 따라 경로를 설정해 주세요.
2단계: Codex에서 APIYI 인터페이스 설정
Codex 설정 파일은 사용자 디렉터리의 ~/.codex/config.toml에 있어요. 여기에서 사용자 지정 모델 제공자를 선언하고 Rhino MCP Server를 등록하면 돼요.
# ~/.codex/config.toml
model = "gpt-5-codex" # APIYI 콘솔에서 실제로 사용할 수 있는 모델명을 입력하세요
model_provider = "apiyi"
[model_providers.apiyi]
name = "APIYI"
base_url = "https://api.apiyi.com/v1" # APIYI OpenAI 호환 인터페이스
env_key = "APIYI_API_KEY" # 환경 변수에서 키 읽기
wire_api = "responses" # Chat Completions 프로토콜을 사용한다면 "chat"으로 변경하세요
[mcp_servers.rhino]
command = "uvx"
args = ["rhinomcp"]
그런 다음 터미널에서 환경 변수를 설정해요. Windows 사용자는 시스템 환경 변수에 추가하면 돼요.
export APIYI_API_KEY="sk-你的密钥"
wire_api 값은 선택한 모델이 지원하는 프로토콜과 일치해야 해요. 설정 후 프로토콜 관련 오류가 발생하면 다른 값으로 바꿔 다시 시도해 보세요. 자세한 내용은 APIYI 문서의 Codex 사용 안내를 참고해 주세요.
3단계: 첫 번째 자연어 모델링 명령 실행하기
Rhino를 계속 켜 두고 플러그인이 대기 상태인지 확인한 다음, 터미널에서 codex를 입력해 클라이언트를 실행하세요. 먼저 “지금 사용할 수 있는 Rhino 도구가 뭐야?”라고 물어볼 수 있어요. 모델이 모델링 관련 도구를 나열한다면 MCP가 정상적으로 로드된 거예요.
간단한 명령부터 시작해 작업의 복잡도를 점차 높이는 걸 권장해요. 문제가 생겼을 때 원인을 더 쉽게 찾을 수 있어요.
| 난이도 | 예시 명령 | 확인할 모델 역량 |
|---|---|---|
| 입문 | 원점에 100×50×20 크기의 직육면체 만들기 | 단일 도구 호출, 매개변수 정확성 |
| 중급 | 1200×600 크기의 탁상을 그리고 네 모서리에 지름 40, 높이 720인 다리 추가하기 | 여러 단계 계획, 좌표 계산 |
| 복잡 | 5층 나선형 계단 만들기. 각 계단은 15도씩 회전하고 한 층씩 높아지게 하기 | 반복문 로직, Python 스크립트 생성 |
| 수정 | 장면의 모든 직육면체를 빨간색으로 바꾸고 새 레이어에 배치하기 | 문서 상태를 읽은 뒤 작업하기 |
복잡한 작업에서는 모델이 보통 ‘Python 스크립트 실행’ 같은 도구를 호출해 RhinoScript 코드를 한 번에 생성하고 모델링을 완료해요. 이때 모델의 코드 생성 능력이 작업 성공률을 직접 좌우해요.
최소 예제: Python으로 모델의 도구 호출 기능 검증하기
Codex에 연결하기 전에 스크립트를 실행해 모델이 모델링 도구에 올바른 호출 매개변수를 반환하는지 확인할 수 있어요. 이 단계에서 ‘모델 API를 사용할 수 없는 문제’를 빠르게 걸러낼 수 있습니다.
import openai, json
client = openai.OpenAI(api_key="YOUR_API_KEY", base_url="https://api.apiyi.com/v1")
tools = [{"type": "function", "function": {
"name": "create_box",
"description": "在 Rhino 中创建立方体",
"parameters": {"type": "object", "properties": {
"origin": {"type": "array", "items": {"type": "number"}},
"size": {"type": "array", "items": {"type": "number"}}},
"required": ["origin", "size"]}}}]
resp = client.chat.completions.create(
model="gpt-5-codex", # 以控制台实际模型名为准
messages=[{"role": "user", "content": "在原点画一个 100x50x20 的立方体"}],
tools=tools)
call = resp.choices[0].message.tool_calls[0]
print(call.function.name, json.loads(call.function.arguments))
전체 구현 코드 보기: 여러 모델의 모델링 지시 비교 테스트
import openai
import json
from typing import List, Dict
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.apiyi.com/v1" # 同一个 Key 可调用 GPT 与 Claude 系列
)
# 待测试的模型,请替换为控制台中实际可用的模型名
MODELS = ["gpt-5-codex", "claude-sonnet-4-5"]
TOOLS = [
{"type": "function", "function": {
"name": "create_box",
"description": "创建立方体,origin 为角点坐标,size 为长宽高",
"parameters": {"type": "object", "properties": {
"origin": {"type": "array", "items": {"type": "number"}},
"size": {"type": "array", "items": {"type": "number"}}},
"required": ["origin", "size"]}}},
{"type": "function", "function": {
"name": "create_cylinder",
"description": "创建圆柱,base 为底面圆心,radius 为半径,height 为高度",
"parameters": {"type": "object", "properties": {
"base": {"type": "array", "items": {"type": "number"}},
"radius": {"type": "number"},
"height": {"type": "number"}},
"required": ["base", "radius", "height"]}}},
]
PROMPT = "画一张 1200x600x30 的桌面,桌面底部在 z=720,四角各加一条直径 40、高 720 的桌腿"
def run_test(model: str) -> List[Dict]:
"""返回模型规划出的全部工具调用"""
try:
resp = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "你是 Rhino 建模助手,请一次性规划所有工具调用。"},
{"role": "user", "content": PROMPT},
],
tools=TOOLS,
)
calls = resp.choices[0].message.tool_calls or []
return [{"name": c.function.name,
"args": json.loads(c.function.arguments)} for c in calls]
except Exception as e:
return [{"error": str(e)}]
if __name__ == "__main__":
for m in MODELS:
result = run_test(m)
print(f"\n===== {m}:共 {len(result)} 个调用 =====")
for item in result:
print(item)
# 期望:1 个 create_box + 4 个 create_cylinder,且桌腿位于四个角
🚀 빠른 시작: 먼저 APIYI apiyi.com에서 신규 사용자 무료 테스트 크레딧을 받아 위 스크립트로 모델의 도구 호출이 정상 작동하는지 확인한 다음, Codex와 Rhino에 연결하는 방법을 추천해요. 이렇게 하면 문제가 발생했을 때 모델 API 문제인지 로컬 MCP 환경 문제인지 명확히 구분할 수 있습니다.
Codex에서 Rhino MCP를 사용할 때 모델 선택하기
AI 자동 모델링에 적합한 모델은 세 가지 역량을 갖춰야 해요. 코드 생성, 도구 호출, 복잡한 작업 계획 수립이죠. 지금까지의 지원 경험을 바탕으로 GPT Codex 계열과 Claude Sonnet/Opus 계열을 먼저 테스트해 보시길 권해요. 아래 표는 정성적 비교이므로, 실제 성능은 직접 모델링 작업을 수행해 확인해 주세요.

| 모델 계열 | 핵심 장점 | 적합한 모델링 작업 | 이용 가능한 플랫폼 |
|---|---|---|---|
| GPT Codex 계열 | Codex 클라이언트에 맞춰 깊이 최적화되어 코드 생성이 안정적이에요 | 스크립트 기반 모델링, 파라미터 기반 일괄 생성 | APIYI, 공식 API |
| Claude Sonnet 계열 | 도구 호출이 정확하고 속도와 품질의 균형이 좋아요 | 일상적인 모델링 지시, 다단계 작업 | APIYI, 공식 API |
| Claude Opus 계열 | 복잡한 추론과 장기 작업 계획에 강해요 | 복잡한 구조, 장면 상태를 반복해서 확인해야 하는 작업 | APIYI, 공식 API |
GPT Codex 비교 분석: GPT Codex 계열은 Codex 클라이언트와 가장 자연스럽게 연동되고 설정도 간단해요. RhinoScript Python 스크립트를 생성할 때도 일관된 스타일을 보여 줍니다. 다만 장면을 여러 차례 확인하고 판단해야 하는 수정 작업에서는 프롬프트 작성 방식에 따라 결과가 달라질 수 있어요. 스크립트 생성이 중심인 파라미터 기반 모델링을 시작하기에 안정적인 선택지예요.
Claude 계열 비교 분석: Claude Sonnet/Opus는 도구 호출 매개변수의 정확도와 긴 작업 흐름의 계획 수립 능력이 좋은 평가를 받고 있어요. Claude를 더 선호한다면 Claude Code에서 동일한 Rhino MCP Server를 불러와 대체 클라이언트로 사용할 수도 있어요. Codex에서 OpenAI 호환 인터페이스를 통해 Claude를 호출하면 같은 환경에서 두 계열을 더 편리하게 비교할 수 있습니다.
💡 선택 팁: 모델 성능은 모델링 유형에 따라 크게 달라지므로 절대적인 최선의 선택은 없어요. APIYI apiyi.com에서 같은 API 키로 GPT Codex와 Claude 계열을 각각 테스트해 보세요. 앞서 소개한 비교 스크립트로 동일한 지시를 실행한 뒤, 성공률과 비용을 기준으로 결정하면 됩니다.
Codex에서 Rhino MCP 연동 시 자주 발생하는 오류 해결
연동 중 발생하는 오류는 대부분 ‘모델 인터페이스 → Codex 설정 → MCP Server → Rhino 플러그인’ 순서로 단계별 점검하면 해결할 수 있어요.
| 증상 | 가능한 원인 | 해결 방법 |
|---|---|---|
| Codex를 시작한 후 401 오류가 표시됨 | 환경 변수가 적용되지 않았거나 API 키를 잘못 입력함 | 터미널을 다시 열고 APIYI_API_KEY가 설정되어 있는지 확인해요 |
| 모델이 없다는 메시지가 표시됨 | 모델 이름이 플랫폼에 등록된 실제 이름과 다름 | 콘솔에서 정확한 모델 이름을 복사해요 |
| 모델이 Rhino 도구가 없다고 응답함 | MCP Server가 로드되지 않음 | config.toml의 mcp_servers 항목에 오타가 없는지 확인해요 |
| 도구 호출 시간 초과 | Rhino 플러그인이 수신 대기 상태가 아님 | Rhino에서 시작 명령을 다시 실행해요 |
| 모델이 잘못된 도구를 호출하거나 매개변수가 누락됨 | 지시가 모호하거나 모델의 계획 능력이 부족함 | 치수, 좌표, 단위를 명확히 지정하거나 다른 모델로 테스트해요 |
자주 묻는 질문 FAQ
Q1: Rhino MCP란 무엇인가요?
Rhino MCP는 MCP 프로토콜을 기반으로 하는 Rhino 도구 서비스예요. Rhino의 모델링 기능을 AI가 호출할 수 있는 도구로 제공하죠. Codex, Claude Code처럼 MCP를 지원하는 클라이언트와 함께 사용하면 대규모 언어 모델이 자연어 지시에 따라 Rhino에서 기하 도형을 만들고 수정할 수 있어요.
Q2: Codex를 Rhino MCP에 연결하는 것과 AI에게 Grasshopper 코드를 직접 작성하게 하는 것은 어떻게 다른가요?
AI가 코드를 작성하더라도 사람이 직접 붙여넣고 실행한 뒤 결과를 확인해야 해요. Codex를 Rhino MCP에 연결하면 모델이 도구를 직접 호출하고 실행 결과를 확인한 다음, 이어서 다음 작업을 수행할 수 있어요. 여러 단계의 모델링이나 반복적인 수정 작업에는 이 방식이 더 적합하고, 장기간 유지 관리해야 하는 파라미터 기반 로직에는 Grasshopper가 더 적합해요.
Q3: APIYI가 Rhino MCP Server를 배포해 주나요?
아니요. APIYI는 모델 API 인터페이스를 제공하며, Rhino MCP Server와 Codex 클라이언트는 사용자의 로컬 환경에 직접 배포하고 설정해야 해요. 두 구성 요소 모두 로컬에서 실행되므로, 이 글의 1단계와 2단계를 따르면 설정을 마칠 수 있어요.
Q4: Codex와 Rhino MCP를 연결하면 어떤 작업에 가장 유용한가요?
– **초기 설계 모델링**: 건축 매스나 가구 프레임 등의 초기 모델을 빠르게 생성해요.
– **파라미터 기반 일괄 생성**: 규칙에 따라 배열, 나선형 구조, 크기가 점차 변하는 부재를 생성해요.
– **장면 일괄 수정**: 레이어, 색상, 이름 등을 한꺼번에 바꾸는 반복 작업을 처리해요.
Q5: API를 통해 Codex에서 사용할 모델을 빠르게 연결하려면 어떻게 해야 하나요?
1. APIYI(apiyi.com)에 접속해 계정을 만들고 API 키를 생성해요.
2. 신규 사용자 무료 테스트 크레딧을 받아요.
3. `config.toml`에서 `base_url`을 `https://api.apiyi.com/v1`로 설정하고 모델 이름을 입력해요.
같은 키로 GPT, Claude 등 주요 모델을 호출할 수 있어요. 다른 모델로 바꾸려면 설정에서 모델 이름만 수정하면 돼요.
Q6: 모델이 도구를 잘못 선택하거나 매개변수를 잘못 입력하는 이유는 무엇인가요?
도구 호출의 정확도는 도구 설명이 명확한지, 모델의 계획 능력이 충분한지에 따라 달라져요. 지시문에 단위, 좌표 원점, 구체적인 치수를 명시하고, 복잡한 작업은 여러 단계로 나눠 실행해 보세요. 같은 지시가 반복해서 실패한다면 Claude Opus처럼 계획 능력이 뛰어난 모델과 비교해 볼 수 있어요.
Q7: Codex와 Rhino MCP를 연결할 때 알려진 제한 사항은 무엇인가요?
– **비용**: 복잡한 작업은 도구를 여러 차례 호출하므로 일반 대화보다 토큰을 훨씬 많이 사용해요.
– **정확도**: 모델이 좌표를 잘못 계산할 때가 있으므로, 중요한 치수는 사람이 다시 확인해야 해요.
– **호환성**: 커뮤니티 플러그인은 Rhino 버전 업데이트 후 일시적으로 호환되지 않을 수 있으니 프로젝트 업데이트를 확인해야 해요.
Codex와 Rhino MCP 연동 핵심 요점
- 구성 요소: Rhino 플러그인, MCP 서버, Codex 클라이언트, 대규모 언어 모델 API가 모두 필요해요.
- 로컬 배포: Rhino MCP 서버와 Codex는 모두 로컬에서 실행하고, 모델 추론에만 인터넷을 연결하면 돼요.
- 핵심 설정:
config.toml에 모델 제공자와mcp_servers를 함께 선언해야 해요. - 단계별 진행: 단일 큐브부터 시작해 여러 단계의 계획 수립과 스크립트 생성 작업으로 차근차근 확장해 보세요.
- 모델 선택: GPT Codex 시리즈와 Claude Sonnet/Opus 시리즈를 우선 테스트해 보세요.
- 간편한 시작: APIYI의 API 키 하나로 동일한 환경에서 여러 모델을 비교할 수 있어요.
요약
Codex와 Rhino MCP를 연동할 때는 다음 세 단계를 따르면 돼요.
- 1단계: MCP 서버 배포: Rhino 플러그인을 설치하고 서버를 실행한 다음,
uvx rhinomcp로 서비스가 작동하는지 확인해요. - 2단계: 모델 인터페이스 설정: Codex 설정 파일에서 사용자 지정 제공자를 설정하고 Rhino MCP를 등록해요.
- 3단계: 모델링 명령 실행: 간단한 명령부터 시작해 모델의 도구 호출 및 계획 수립 능력을 단계적으로 확인해요.
전체 연동이 완료되면 모델링 결과는 모델 선택과 명령 작성 방식에 따라 달라져요. 이 글의 비교 스크립트를 활용해 평소 자주 하는 모델링 작업을 직접 테스트해 보세요.
빠르게 결과를 확인하려면 APIYI apiyi.com을 이용해 보세요. OpenAI 호환 인터페이스와 무료 테스트 사용량을 제공하며, 여러 모델을 한곳에서 연동할 수 있어 Codex에서 GPT와 Claude 시리즈를 편리하게 바꿔 가며 사용할 수 있어요.
📚 참고 자료
- rhinomcp 오픈소스 프로젝트: Rhino MCP 플러그인 및 서버 구현
- 링크:
github.com/jingcheng-chen/rhinomcp -
설명: 설치 방법, 사용 가능한 도구 목록, 버전 호환성 안내가 포함되어 있어요.
-
OpenAI Codex 프로젝트 저장소: Codex CLI 설치 및 설정 안내
- 링크:
github.com/openai/codex -
설명:
config.toml의 모델 제공자 및 MCP 서버 설정 항목에 관한 공식 안내예요. -
Model Context Protocol 공식 문서: MCP 프로토콜 사양
- 링크:
modelcontextprotocol.io - 설명: 도구 등록, 호출, 반환 메커니즘을 이해하는 데 필요한 기본 자료예요.
작성자: APIYI 기술팀
기술 문의: APIYI 공식 홈페이지에서 문의해 주세요. Codex, Claude Code 등의 사용 사례별 설정 안내는 docs.apiyi.com 문서 센터에서 확인할 수 있어요.
