10. AI 도구로 앱 만들기 (MCP)
Claude Code 같은 편집기의 AI 에게 이 프로젝트를 맡깁니다. AI 가 자원을 고르고, 앱을 만들고, 코드를 올리고, 빌드해서 사람이 열 수 있는 주소까지 만듭니다.
사람이 하는 일은 셋입니다 — 토큰을 발급하고, 편집기에 넣고, AI 가 묻는 것에 답합니다.
AI 는 MCP(Model Context Protocol)로 tidoly 에 붙습니다. 편집기가 MCP 를 지원하면 됩니다. 화면에서 버튼으로 하던 일을 AI 가 같은 권한 안에서 대신 부르는 방식이라, AI 가 한 일도 사람이 한 일과 같은 화면에 그대로 보입니다.
먼저 준비할 것
| 무엇 | 왜 | 어디서 |
|---|---|---|
| VPN 연결 | AI 가 붙는 주소는 클러스터 안 주소입니다. VPN 없이는 토큰이 있어도 닿지 않습니다 | 고급 설정 · 노트북에서 클러스터에 붙기 |
| Gitea 설치 | AI 가 앱마다 저장소를 만들고 작업 기록(이슈)을 남깁니다 | 5장 · 개별 설치 |
| 프로젝트 멤버 | 토큰은 발급한 사람의 프로젝트 권한을 물려받습니다 | 프로젝트 → Access → 3장 |
플랫폼 관리자여도 프로젝트 멤버가 아니면 토큰이 아무것도 못 합니다. 토큰에는 관리자 권한이 넘어가지 않기 때문입니다. 관리자라면 먼저 자신을 그 프로젝트 멤버로 넣으세요.
토큰 발급
- 프로젝트 → Overview → 노트북·AI 에서 dev 자원 쓰기 카드로 갑니다 — VPN 명령 아래에 AI 도구에 자격 주기 가 있습니다.
- 어디에 쓸 건가요 칸에 이름을 적습니다 — 예:
내 노트북. AI 토큰 발급을 누릅니다.- 토큰이 발급됐습니다 창의
.mcp.json을 복사합니다. 저장했습니다를 누릅니다.

토큰 값은 발급 창에서 한 번만 보입니다
tidoly 는 토큰을 저장하지 않습니다. 창을 닫으면 다시 볼 수 없고, 잃어버렸으면 새로 발급합니다. 새로 발급해도 기존 토큰은 그대로 살아 있습니다.
토큰은 여러 개를 동시에 가질 수 있습니다 — 노트북용·서버용을 따로 발급하고, 하나만 끊을 수 있습니다.
| 토큰이 할 수 있는 것 | 기준 |
|---|---|
| 프로젝트 | 발급한 프로젝트 하나 |
| 환경 | 이 프로젝트에서 protected 로 표시하지 않은 환경 전부 → 환경 나누기 |
| 권한 | 발급한 사람의 프로젝트 권한 — 관리자 권한은 빠집니다 |
| 기간 | 발급 창에 표시된 만료일까지 |
편집기에 넣기
복사한 내용을 프로젝트 폴더의 .mcp.json 에 그대로 넣습니다.
{
"mcpServers": {
"tidoly-cp": {
"url": "http://control-plane.paas-system.svc.cluster.local:8080/api/v1/mcp",
"headers": { "Authorization": "Bearer <발급된 토큰>" }
}
}
}.mcp.json 을 Git 에 커밋하지 마세요 — 토큰이 그대로 들어 있습니다.
주소가 …svc.cluster.local 입니다. VPN 에 붙어 있지 않으면 이름이 풀리지 않아 연결되지 않습니다. 안 되면 VPN 붙는 법의 4번(확인 명령)부터 보세요.
AI 에게 시키기
편집기에서 만들 앱을 말로 설명하면 됩니다. 예: "팀이 쓸 할 일 관리 앱을 만들어 줘. 로그인이 필요해."
AI 는 연결되는 순간 tidoly 사용 규칙을 함께 받습니다. 그래서 짓기 전에 아래를 먼저 정합니다.
| 정할 것 | AI 가 하는 일 | 모르고 넘어가면 |
|---|---|---|
| 앱 이름 | 묻지 않고 알립니다 — 이름이 곧 주소라서 정한 이름과 주소를 한 문장으로 알려 줍니다 | 주소는 나중에 못 바꿉니다. 다른 이름이 좋으면 그때 바로 말하세요 |
| 밖에서 열 것인가 | 물어봅니다. 어느 쪽도 권하지 않습니다 | 사내용이 인터넷에 열린 채로 남습니다 |
| 재배포 뒤에도 데이터가 남아야 하나 | 물어봅니다 — 남아야 하면 Database, 아니면 Cache | Cache 에 담은 것은 재배포 때 사라집니다 |
| 연결을 오래 여나 (실시간 갱신) | 물어보고, 필요하면 긴 연결을 켭니다 | 60초마다 끊깁니다 |
| 여러 개로 띄울 수 있나 | 물어보고, 필요하면 Cache 를 붙여 상태를 나눕니다 | 어떤 사람에게만 안 보이는 현상이 생깁니다 |
| 로그인이 필요한가 | 필요하면 앱을 만든 직후 로그인(SSO)을 붙입니다 | 앱이 로그인 설정 없이 한 번 떠서 다시 배포해야 합니다 |
요청에 적은 것은 다시 묻지 않습니다. "인터넷에서 열 수 있게" 처럼 글자로 적었을 때만 정해진 것으로 봅니다. "팀이 쓸 수 있게" 는 공개 여부를 정한 말이 아니라서 AI 가 다시 묻습니다.
AI 가 일하는 순서
| 순서 | 하는 일 | 사람에게 보이는 곳 |
|---|---|---|
| 1 | 이 사이트에 깔 수 있는 것과 이미 깔린 것을 확인합니다 | — |
| 2 | 필요한 자산을 설치합니다 (예: PostgreSQL) | 프로젝트 → Overview 자산 목록 |
| 3 | 앱 자리를 만들고, 설계 이유를 적습니다 | 프로젝트 → Applications |
| 4 | Gitea 에 저장소를 만들고, 3의 설계 이유를 이슈로 올립니다 | Gitea 저장소 · 이슈 |
| 5 | 코드를 쓰고, 노트북에서 실제 자원에 붙여 실행해 봅니다 | — |
| 6 | 코드를 올리고 빌드·배포합니다 | 앱 화면 빌드 탭 |
| 7 | 주소를 만들고 그 주소를 알려 줍니다 | 편집기 대화 · 앱 화면 |
| 8 | 이슈를 닫으며 무엇에 막혔고 어떻게 풀었는지 적습니다 | Gitea 이슈 |
AI 의 일은 앱을 처음 쓸 수 있는 상태로 만드는 데까지입니다. 주소가 나오고 이슈가 닫히면 끝입니다. 그 뒤 수정은 저장소를 받아 평소처럼 개발하면 됩니다.
빌드는 Dockerfile 없이 합니다. package.json · go.mod · pom.xml · requirements.txt 같은 파일만 있으면 언어를 알아서 감지합니다 → 6장
이미 있는 앱 이름으로 만들라고 하면 새로 짓지 않고, 그 앱의 이슈를 읽고 이어받습니다.
AI 가 쓰는 도구
AI 가 부르는 기능 목록입니다. 사람이 직접 부를 일은 없고, AI 가 무엇을 할 수 있는지 가늠할 때 봅니다.
| 분류 | 도구 | 하는 일 |
|---|---|---|
| 찾기 | catalog_search | 설치할 수 있는 자산을 찾습니다 |
resources | 이미 깔린 자산과 등록된 외부 자원을 봅니다 | |
| 자산 | install | 카탈로그 자산을 설치합니다 |
status | 설치본·앱의 상태를 봅니다. 끝날 때까지 기다릴 수도 있습니다 | |
| 앱 만들기 | app_create | 코드 없이 앱 자리를 만듭니다. 필요한 자원도 여기서 붙입니다 |
app_deploy_from_git | 이미 코드가 있는 Git 저장소를 바로 배포합니다 | |
app_oidc | 앱에 로그인(SSO)을 붙입니다 | |
app_env | 앱 환경변수를 바꿉니다 (지정한 키만) | |
| 코드 | app_scm_repo | Gitea 에 앱 저장소를 만듭니다 |
app_scm_credential | 그 저장소에 clone·push 할 자격을 붙입니다 — 토큰 값은 나오지 않습니다 | |
app_commit | 파일 몇 개를 한 커밋으로 올립니다 | |
app_local_env | 노트북에서 실행할 환경변수 파일을 받을 5분짜리 1회용 주소를 줍니다 | |
| 배포 | app_build | 빌드하고, 성공하면 배포합니다 |
app_expose | 앱을 밖에서 열 주소를 만듭니다 | |
app_webhook | 사람이 push 할 때 자동 빌드되도록 저장소에 훅을 겁니다 | |
| 확인 | app_logs | 빌드·배포·실행 로그를 봅니다 |
app_trail | 이 앱이 어떻게 만들어졌는지 이력을 봅니다 | |
| 기록 | app_issue | 작업 이유를 이슈로 열고, 붙이고, 닫습니다 |
할 수 없는 것
| 할 수 없는 것 | 대신 |
|---|---|
| 지우기 — 앱·설치본·주소를 삭제하는 도구가 없습니다 | 사람이 화면에서 정리합니다. AI 는 시험용으로 만든 것을 이슈에 적어 둡니다 (환경변수만 AI 가 지울 수 있습니다) |
| protected 환경 작업 | 토큰에 들어가지 않습니다. 운영 환경 반영은 사람이 합니다 → 6장 · 환경 승격 |
| 외부 자원 등록 | 프로젝트 관리자가 한 번 등록하면 AI 가 가져다 씁니다 → 7장 |
| 비밀값 받기 | DB 비밀번호 같은 값은 AI 에게 돌려주지 않습니다. 로그에서도 지워서 줍니다 |
| 다른 프로젝트 | 토큰은 발급한 프로젝트 하나에서만 동작합니다 |
AI 가 한 일 확인하기
| 어디서 | 무엇이 보이나 |
|---|---|
| Gitea → 앱 저장소 → 이슈 | 왜 이렇게 지었는지 · 무엇에 막혔고 어떻게 풀었는지 |
| 프로젝트 → Applications → 앱 | 빌드 이력 · 배포 상태 · 주소 |
| 프로젝트 → Overview | AI 가 설치한 자산 |

AI 에게 "지금까지 한 일을 정리해 줘" 라고 하면 기억이 아니라 실제 호출 이력(app_trail)을 읽고 답합니다. 사람이 화면에서 한 일과 AI 가 한 일이 같은 이력에 구별되어 나옵니다.
토큰 회수
- 프로젝트 → Overview → 노트북·AI 에서 dev 자원 쓰기 → AI 도구에 자격 주기 목록에서 토큰을 찾습니다.
- 휴지통 아이콘을 누릅니다 — 다음 요청부터 막힙니다.
목록에는 토큰 앞자리 · 이름 · 발급한 사람 · 상태(사용 중 · 회수됨 · 만료) · 마지막 사용일이 나옵니다. 사용 이력 없음 인 토큰은 회수해도 되는지 판단하는 단서입니다.
다음 → Gitea MCP