Skip to main content
Glama
overdare-studio-mcp

overdare-studio-mcp

by Y-Seungmin

overdare-studio-mcp

Claude 로 OVERDARE Studio 를 조작하는 MCP 서버입니다. Claude Desktop 이나 Claude Code 에서 "Workspace 에 빨간 큐브 만들어줘" 처럼 말하면, 실제 Studio 월드에 파트·스크립트를 만들고 수정하고 삭제합니다.

⚠️ 비공식 프로젝트입니다. OVERDARE 와 무관하며 공식 지원이 아닙니다. Studio 가 여는 로컬 포트를 사용하므로 Studio 업데이트로 동작이 바뀔 수 있습니다(npm run replay 로 감지). 로컬 단일 사용자용입니다.


⏱️ 5분 빠른 시작

0. 준비 — OVERDARE Studio 를 실행하고 월드를 하나 열어 둡니다. (Node.js 20+ 필요)

1. 빌드

git clone <this-repo> overdare-studio-mcp && cd overdare-studio-mcp
npm install
npm run build

2. Claude 에 연결 (둘 중 하나)

Claude Code:

claude mcp add overdare-studio -- node /절대경로/overdare-studio-mcp/dist/server/index.js

Claude Desktop — claude_desktop_config.json:

{
  "mcpServers": {
    "overdare-studio": {
      "command": "node",
      "args": ["/절대경로/overdare-studio-mcp/dist/server/index.js"],
      "env": {
        "OVERDARE_PROJECT_CWD": "/절대경로/내-월드-폴더"
      }
    }
  }
}

OVERDARE_PROJECT_CWD 는 .umap/.ovdrjm 월드 파일이 있는 폴더입니다. 쓰기 도구에 필요합니다(읽기는 없어도 됩니다).

3. 첫 도구 호출 — Claude 에게 이렇게 말해 보세요:

  • "OVERDARE 월드 구조 보여줘" → studio_browse 로 트리를 가져옵니다.

  • "Workspace 에 2×2×2 네온 큐브 'Hello' 만들어줘" → studio_create_part 로 실제 생성합니다.

이게 전부입니다. 생성·수정·삭제는 자동으로 백업되고, 실패하면 롤백됩니다.


Related MCP server: Roblox Studio Ultimate MCP Server

주요 기능

  • CRUD — 인스턴스 생성/조회/수정/삭제 + 스크립트 추가를 자연어로 합니다.

  • 안전한 쓰기 — 모든 변경이 백업 → 수정 → 검증 → 적용 → 저장 파이프라인을 거치고, 실패 시 자동 롤백됩니다.

  • 자산 임포트 — 에셋 스토어 모델 + 로컬 이미지(경로 보안 검증)를 임포트합니다.

  • 퍼블리시 가드 — 비가역 publish 는 4중 게이트로 보호합니다(실수 발사 방지).

  • Recorder / Replay — 모든 RPC 를 기록하고, Studio 업데이트 후 프로토콜 변경을 감지합니다.

  • Capability Layer — 지원하지 않는 기능은 호출 시 구조적 에러로 알려 줍니다.


지원 도구 (13)

도구

하는 일

studio_browse

월드 인스턴스 트리 조회 (필터/깊이 지원)

studio_screenshot

뷰포트 스크린샷

studio_create_part

Part 생성 (Size/CFrame/Color/Material/Anchored 등)

studio_update_part

인스턴스 이름/속성 부분 수정

studio_delete

인스턴스 삭제 (자식 포함, 서비스 보호)

studio_add_script

Script/LocalScript/ModuleScript 추가

studio_import_model

에셋 스토어 모델 임포트

studio_import_image

로컬 이미지 임포트 (경로 검증)

studio_apply_action_sequence

ActionSequencer 에 시퀀서 JSON 적용

studio_apply / studio_save

변경 적용 / 월드 저장

studio_publish

월드 퍼블리시 (기본 dry-run, 4중 게이트)

studio_capabilities

Studio 기능 지원 여부 보고

도구별 입력 스키마/예제/반환은 docs/TOOLS.md 를 참고하세요. 모든 도구는 동일한 ToolResult(success/operation/affected/warnings/data/error) 를 structuredContent 로 반환합니다.


안전장치

쓰기 파이프라인 + 자동 롤백

모든 .ovdrjm 변경은 다음 순서를 강제로 거칩니다:

백업 → 수정 → 검증 → level.apply → level.save.file

어느 단계든 실패하면 백업에서 복원하고 라이브 씬을 되돌립니다. 동시 외부 수정도 감지해 중단합니다. --unsafe(또는 OVERDARE_UNSAFE=1) 일 때만 백업을 생략합니다(롤백 불가).

Publish 가드 (비가역 작업)

studio_publish 는 기본이 dry-run(미리보기) 입니다. 실제 발사는 아래 4개가 모두 충족돼야 합니다:

capability 지원  +  OVERDARE_ALLOW_PUBLISH=1  +  confirm:true  +  dryRun:false

하나라도 빠지면 RPC 를 호출하지 않고, 미충족 게이트를 구조적으로 보고합니다.

Recorder / Replay

OVERDARE_MCP_TRACE=1 으로 trace 를 stderr 에 출력하고, OVERDARE_MCP_TRACE_DIR=.trace 로 rpc.jsonl/session.json/metadata.json/ovdrjm.diff 를 저장합니다.

npm run replay .trace/session.json   # 기록 세션을 재생해 프로토콜 변경(드리프트) 감지

응답의 shape(키/타입 구조)를 비교하므로 데이터 변경은 무시하고 프로토콜 변경만 잡아냅니다. (인증 토큰류는 trace 에 <redacted> 로 기록됩니다.)


환경변수

변수

기본값

설명

OVERDARE_PROJECT_CWD

현재 폴더

.ovdrjm 월드가 있는 폴더 (쓰기에 필요)

STUDIO_HOST / STUDIO_PORT

127.0.0.1 / 13377

Studio RPC 엔드포인트

OVERDARE_RPC_TIMEOUT_MS

30000

RPC 타임아웃

OVERDARE_MCP_TRACE

—

1 이면 Recorder 활성화(stderr)

OVERDARE_MCP_TRACE_DIR

—

replay 용 파일 저장 폴더

OVERDARE_ASSET_ROOTS

—

이미지 임포트 허용 경로 추가(플랫폼 구분자)

OVERDARE_ALLOW_PUBLISH

—

1 이면 publish 게이트 하나 해제

OVERDARE_UNSAFE

—

1 이면 백업/롤백 생략(권장하지 않음)


자주 묻는 질문

Q. Studio 가 꺼져 있으면 어떻게 되나요? 읽기/쓰기 도구가 연결 오류를 구조적으로 반환합니다. Studio 를 켜고 월드를 연 뒤 다시 시도하세요.

Q. 쓰기 도구가 "프로젝트 폴더에 .umap 이 없습니다" 라고 합니다. OVERDARE_PROJECT_CWD 를 실제 월드 파일(.umap/.ovdrjm)이 있는 폴더로 지정해야 합니다.

Q. 실수로 월드가 망가지지 않나요? 모든 쓰기는 백업 후 진행되고 실패 시 롤백됩니다. publish 만 비가역이며 4중 게이트로 막혀 있습니다.

Q. OVERDARE 공식 도구인가요? 아닙니다. 비공식·로컬 단일 사용자용 도구입니다.

Q. Studio 업데이트로 안 되면 어떻게 하나요? 로컬 프로토콜이 바뀐 것일 수 있습니다. npm run replay 로 변경 지점을 확인하세요.

Q. 어떤 Claude 클라이언트가 필요한가요? MCP 를 지원하는 Claude Desktop 또는 Claude Code 가 필요합니다. 서버는 stdio 로 동작합니다.


개발

npm run dev        # tsx 로 서버 실행
npm test           # 단위 테스트 (vitest)
npm run typecheck  # 타입 체크
npm run ci         # typecheck + build + test + replay(dry)
npm run gen:docs   # docs/TOOLS.md 재생성

더 자세한 구조·설계는 docs/Architecture.md, 기여 가이드는 CONTRIBUTING.md, 변경 이력은 CHANGELOG.md 를 참고하세요.

License

MIT

Available Tools

13 tools
studio_add_scriptAdd a scriptA

부모 인스턴스(parentGuid) 하위에 Script/LocalScript/ModuleScript 를 추가한다. 쓰기 파이프라인(backup→modify→validate→level.apply→level.save.file)을 강제하며, 실패 시 자동 rollback. 들여쓰기는 탭 사용 권장(선행 4-스페이스 그룹은 자동으로 탭 변환).

Inputs: name (required), source (required), parentGuid (required), scriptClass (required).

studio_applyApply pending level changesA

디스크의 .ovdrjm 변경분을 라이브 씬에 반영한다 (RPC level.apply). 보통 .ovdrjm 편집 직후 호출하는 쓰기 파이프라인의 일부. 보류분이 없으면 사실상 no-op.

Inputs: no named parameters.

studio_apply_action_sequenceApply a sequencer JSON to an Action SequencerA

기존 ActionSequencer 인스턴스(instanceGuid)에 시퀀서 JSON 파일을 적용한다. jsonFilePath 는 프로젝트 경계 안의 .json 파일이어야 한다(경로검증). 실패 시 자동 rollback. 지원 안 하면 capability 에러.

Inputs: instanceGuid (required), jsonFilePath (required).

studio_browseBrowse level treeA

OVERDARE Studio 레벨 인스턴스 트리를 조회한다 (RPC level.browse). 각 노드는 guid/name/class/children 을 가진다. startGuid 로 특정 노드부터, classType 으로 클래스 필터(예 Part/Script), maxDepth 로 깊이 제한(1=최상위만 권장).

Inputs: maxDepth, classType, startGuid.

studio_capabilitiesReport Studio capabilitiesA

Studio RPC 기능 지원 여부(capability)와 버전을 보고한다. 최초 1회 probe 후 캐시. refresh:true 면 강제 재확인. 지원하지 않는 기능을 호출하면 각 도구가 capability 에러를 계약 형태로 반환한다.

Inputs: refresh.

studio_create_partCreate a PartA

부모 인스턴스(parentGuid) 하위에 Part 를 생성한다. 쓰기 파이프라인(backup→modify→validate→level.apply→level.save.file)을 강제하며, 실패 시 자동 rollback. parentGuid 는 studio_browse 로 먼저 확인할 것. 속성: Size/CFrame/Color/Material/Anchored 등. Position 은 CFrame.Position 으로 지정한다. Size 단위는 cm.

Inputs: name (required), parentGuid (required), properties.

studio_deleteDelete an instanceA

인스턴스를 삭제한다 (자식 포함 — 서브트리 통째로 제거). 쓰기 파이프라인(backup→modify→validate→level.apply→level.save.file)을 강제하며 실패 시 자동 rollback. 서비스(Workspace/Lighting/Players 등 싱글톤)는 삭제할 수 없다. guid 는 studio_browse 로 확인.

Inputs: guid (required).

studio_import_imageImport a local image assetA

로컬 이미지 파일을 에셋 매니저에 임포트하고 asset id 를 반환한다. 경로는 프로젝트 경계(기본) 또는 OVERDARE_ASSET_ROOTS 안의 이미지 파일만 허용된다. 지원 확장자: .png, .jpg, .jpeg, .bmp, .tga, .gif, .webp. 지원 안 하면 capability 에러.

Inputs: file (required).

studio_import_modelImport a model from Asset DrawerA

에셋 스토어(Asset Drawer)의 모델을 레벨에 임포트한다 (계층 보존). assetid 는 ovdrassetid://<숫자> 형식. 실패 시 자동 rollback. 지원 안 하면 capability 에러.

Inputs: assetid (required), assetName (required), assetType.

studio_publishPublish the world (irreversible)A

월드를 OVERDARE 플랫폼에 공개한다. 비가역·외부공개. 기본은 dry-run(미리보기). 실제 발사는 OVERDARE_ALLOW_PUBLISH=1 + confirm:true + dryRun:false 가 모두 충족돼야 한다. 하나라도 빠지면 RPC 를 호출하지 않는다.

Inputs: dryRun, confirm, keyword, category, +2 more.

studio_saveSave world to fileA

편집 중인 월드를 파일로 저장한다 (RPC level.save.file). .umap 과 .ovdrjm 둘 다 갱신됨.

Inputs: no named parameters.

studio_screenshotCapture viewport screenshotA

OVERDARE Studio 뷰포트 스크린샷을 캡처해 파일로 저장한다 (RPC game.screenshot, captureType=Viewport). 현재 Viewport 모드만 지원. 응답이 느릴 수 있어 타임아웃을 길게 잡는다.

Inputs: no named parameters.

studio_update_partUpdate a PartA

기존 Part(또는 인스턴스)의 이름/속성을 수정한다. 쓰기 파이프라인(backup→modify→validate→level.apply→level.save.file)을 강제하며 실패 시 자동 rollback. 전달한 필드만 바뀌고 나머지는 보존된다(부분 업데이트). guid 는 studio_browse 로 확인. 속성: Size/CFrame(Position·Orientation)/Color/Material/Anchored/Transparency 등. name 으로 이름 변경.

Inputs: guid (required), name, properties.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 13 tools

    Disambiguation5/5

    Each tool has a clear and distinct purpose: browsing hierarchy, adding scripts, creating/updating parts, deleting instances, applying action sequences, importing assets, saving, publishing, screenshotting, and checking capabilities. No two tools overlap in function.

    Naming Consistency5/5

    All tools follow the 'studio_verb' pattern with consistent snake_case (e.g., studio_add_script, studio_import_image). Even studio_capabilities uses a noun but fits the pattern as a query operation. No mixed conventions.

    Tool Count5/5

    With 13 tools, the set is well-scoped for a studio editing server. It covers essential operations without overloading the user, and each tool serves a necessary function.

    Completeness4/5

    The tool surface covers CRUD for parts/scripts, asset import, publishing, and screenshot. Minor gaps like lack of explicit property getter or clone/move operations exist, but browse and update cover most needs.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers