AI 개발

Unity 6 공식 MCP로 AI(Kiro) 연동하고 Android APK까지 빌드하기

oldserver 2026. 10. 20. 10:45
GAMEDEV · Unity + AI
Unity 6 + AI(MCP)로 Android APK까지 빌드하기
씬 조작·스크립트는 AI에게, 최종 빌드는 사람이. 중간에 반드시 걸리는 함정 세 개를 넘은 기록.
 

오늘 Unity 6으로 간단한 모바일 게임을 만들어 Android APK까지 뽑았다. 특이한 건 씬 조작과 스크립트 작성을 상당 부분 AI 어시스턴트(Kiro)에게 시켰다는 점이다. Unity 6에는 공식 MCP(Model Context Protocol) Server 기능이 들어 있어서, 서드파티 플러그인 없이 AI를 Unity 에디터에 바로 붙일 수 있다.

이 글은 그 연동 설치부터 APK 빌드까지 전 과정이다. 중간에 반드시 걸리는 함정 세 개 — 에디터 버전(6000.3 미만이면 메뉴가 안 보임), New Input System, 그리고 MCP로는 APK 빌드가 끝까지 안 되는 문제 — 를 어떻게 넘겼는지까지 정리했다. (로컬 경로는 플레이스홀더다.)

연동 구조

먼저 그림부터. Unity 에디터가 "외부에 노출하는 MCP 서버"를 켜면, AI 클라이언트가 relay를 거쳐 거기에 붙는다. 에디터가 켜져 있어야 브리지가 돈다.

AI 클라이언트 mcp.json 설정 relay .unity/relay/ Unity 에디터 (켜져 있어야 함) Unity MCP Bridge (Start) 콘솔·스크립트·씬 도구
그림 1. AI 클라이언트 → relay → Unity 에디터의 MCP 브리지. 브리지는 에디터 안에서 돈다.

왜 Unity 공식 MCP인가

AI를 Unity에 붙이는 서드파티 방법은 예전부터 있었다(Python·uv 설치, 별도 브리지 등). 그런데 Unity 6부터는 공식 Assistant 패키지에 MCP Server가 내장됐다. 외부 런타임을 안 깔아도 되고, Unity가 직접 "에디터를 노출하는 MCP 서버"를 켜면 AI가 콘솔 읽기·C# 실행·씬 캡처 같은 도구를 바로 쓴다.

단, 에디터가 켜져 있어야 동작한다. 브리지가 에디터 안에서 돌기 때문에, 에디터를 닫으면 AI가 연결돼 보여도 명령이 안 먹는다.

함정 ① 에디터 버전 — 6000.3 미만이면 메뉴가 없다

제일 먼저 걸리는 지점이다. 공식 MCP 기능은 Unity 6.3(에디터 버전 6000.3) 이상에서만 나온다.

  • 그냥 "Unity 6" = 6000.0을 깔면 MCP 메뉴 자체가 안 보인다. 버전 선택 때 반드시 6000.3 이상을 고른다.
  • 6000.3(6.3 LTS), 6000.6(6.6) 등 6.3 이상이면 다 된다. 안정성을 원하면 LTS인 6.3이 낫다.
  • 아직 Pre-release라 Package Manager에 Assistant가 안 보이면, Project Settings → Package Manager에서 Show Pre-Release Package Versions를 켠다.
Unity 6은 버전이 6000.x로 표기된다. "6"이 아니라 "6000"으로 보이는 게 정상이다. 이미 6000.0을 깔았어도 지울 필요 없이, Hub에서 6000.3 이상을 추가 설치하면 된다.

설치 흐름 — Hub → 에디터 → Assistant → MCP

1Unity Hub 설치 후 로그인 (개인/소규모는 Personal 무료)
2Hub → Installs → Unity 6.3 LTS 설치. 모바일이면 모듈에서 Android Build Support 체크
3프로젝트 생성 (3D 템플릿 무난), 에디터 버전이 6000.3 이상인지 확인
4Window → Package Manager → Unity Registry → Assistant 설치
5Project Settings → AI → Unity MCP → Bridge Start (권한 요청 허용)
헷갈리는 지점. 같은 AI 메뉴의 "MCP Client → MCP Servers"는 "Unity가 접속하러 가는 서버" 설정이다. 지금 쓰는 Unity MCP 페이지는 "Unity가 외부에 노출하는 서버"를 켜는 곳이다. 둘은 방향이 반대다.

AI 클라이언트 연결

Unity MCP 설정 페이지에서 Integrations → (클라이언트) → Configure를 누르면, 하단에 OS별 설정 파일 경로와 붙여넣을 JSON 블록이 표시된다.

{
  "mcpServers": {
    "unity": {
      "command": "<Unity 화면에 표시된 relay 실행 경로>",
      "args": ["<Unity 화면에 표시된 인자들>"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

이 JSON을 AI 클라이언트의 mcp.json에 붙여넣는다. 전역이면 C:\Users\<사용자명>\.kiro\settings\mcp.json, 프로젝트 한정이면 워크스페이스의 .kiro/settings/mcp.json.

경로를 추측하지 않는다. command·args·relay 경로는 Unity 화면에 뜬 값을 그대로 복사한다. 버전마다 달라서 손으로 지어내면 relay를 못 찾아 연결이 실패한다. 그리고 "disabled": false인지 꼭 확인한다(일부 안내가 true로 쓰라는데, 실제로 쓰려면 false다).

연결되면 AI 쪽 MCP 패널에 unity Connected (N tools)로 뜬다. 가장 안전한 첫 테스트는 "현재 콘솔 로그 읽어줘" — 로그가 돌아오면 정상이다. 그다음 "원점에 큐브 만들고 Rigidbody 붙여줘" 같은 씬 조작을 시켜볼 수 있다.

함정 ② New Input System — 구형 Input API가 안 먹는다

Unity 6 신규 프로젝트는 기본이 New Input System 전용이다. 이 상태에서 구형 Input.GetKey() / Input.GetAxisRaw()는 동작하지 않는다. AI가 생성한 예제가 구형 입력을 쓰면 이동·발사가 전부 안 먹는 현상이 난다.

  • 정석: 처음부터 New Input System API로 쓴다. Keyboard.current.spaceKey.isPressed 식, using UnityEngine.InputSystem; 추가.
  • 비권장 대안: Player → Active Input Handling을 Both로 바꾸는 방법도 있으나, Both로 바꿔도 런타임에서 구형 Input이 안 먹는 경우가 있었다(재시작 후에도). New API로 바꾸자 즉시 정상. Both에 기대지 말 것.
  • 디버깅 팁: 입력이 안 먹으면 매 프레임 입력값을 Debug.Log로 찍는 프로브를 붙여 확인. 그리고 키 입력은 Game 뷰에 포커스(화면 클릭)가 있어야 들어온다.

함정 ③ MCP로는 APK 빌드가 끝까지 안 된다

오늘의 핵심 교훈이다. 씬 조작·스크립트 작성은 MCP(AI)로 잘 됐는데, Android APK 빌드만은 MCP로 끝까지 안 됐다.

User interactions are not supported for MCP tool calls

BuildPipeline.BuildPlayer가 내부적으로 상호작용(SDK 라이선스 동의 등)을 요구하는데, MCP 도구 호출은 그런 대화형 입력을 지원하지 않아 막힌다. 모듈·설정이 전부 정상이어도 마찬가지다.

해결 — 빌드는 에디터에서 직접 한다. AI는 준비(스크립트·씬·설정)까지만 맡고, 최종 빌드 버튼은 사람이 누른다.
  • 모듈 추가: Hub → Installs → 버전 ⚙ → Add Modules에서 Android Build Support + OpenJDK + Android SDK & NDK Tools 추가.
  • 모듈 추가 후 에디터 재시작 필수: "No Android module loaded. Editor will need to be restarted" 경고가 뜬다. 껐다 켜야 Android 빌드가 활성화된다.
  • SDK/NDK/JDK 임베디드: 경로가 비면 Edit → Preferences → External Tools에서 Hub 동봉(embedded)으로 체크.
  • 빌드 실행: File → Build Settings/Build Profiles → Android 선택 → Build → 출력 경로 지정. 처음엔 Gradle 다운로드로 수 분, SDK 라이선스 창이 뜨면 Accept.

이렇게 에디터에서 직접 빌드하니 APK가 정상적으로 떨어졌다.

모바일 입력 — 키보드 스크립트는 폰에서 안 돈다

APK를 폰에 올리기 전에 하나 더. 데스크톱에서 키보드로 테스트한 스크립트는 폰에서 그대로는 동작하지 않는다. 터치 입력을 따로 넣어야 한다. Touchscreen.current.primaryTouch로 터치(드래그 이동 + 자동 발사 등)를 처리하고, 화면 방향은 PlayerSettings.defaultInterfaceOrientation으로 고정한다.

보너스 — MCP로 씬 편집할 때 Play 모드 함정

MCP로 씬을 편집할 때 Play 모드 중에 가한 변경은 Play를 멈추면 전부 되돌아간다(오브젝트 생성, 컴포넌트 연결, 스프라이트 교체 등).

  • 씬 편집은 반드시 에디트 모드(EditorApplication.isPlaying == false)에서 하고 EditorSceneManager.SaveOpenScenes()로 저장.
  • Play 모드에서는 저장 API가 예외나 "User interactions are not supported" 오류를 낸다. MCP 명령 전에 isPlaying을 먼저 로그로 확인하면 헛작업을 막는다.
  • 스크립트 교체 직후엔 Unity가 재컴파일하느라 MCP 연결이 잠깐 끊긴다("Unity not detected"). 잠시 후 재시도하면 복구된다.

마치며

Unity 6의 공식 MCP는 "AI가 에디터를 직접 조작"하는 걸 플러그인 없이 가능하게 해준다. 콘솔 읽기·스크립트 작성·씬 구성까지는 AI에게 맡기고, 대화형 승인이 필요한 작업(APK 빌드의 SDK 라이선스 등)은 MCP로는 못 넘어가니 사람이 마무리한다. 이 경계만 이해하면 "AI가 밑작업, 사람이 최종 빌드"라는 분담이 꽤 자연스럽다.

가장 많이 데인 셋을 다시 정리하면 — 버전은 6000.3 이상(아니면 MCP 메뉴가 아예 없음), 입력은 New Input System으로(Both는 못 믿음), 빌드는 에디터에서 직접(MCP는 상호작용 못 함). 이 세 가지만 미리 알면 Unity 6 + AI로 APK까지 가는 길이 훨씬 매끄럽다.

 
Unity · AI 코딩(MCP) · 모바일 빌드 문의
댓글로 편하게 남겨주세요.