저는 코드를 전혀 모르는 비개발자입니다. 하지만 AI와 함께라면 무엇이든 만들 수 있을 거라는 막연한 꿈이 있었죠. 이 글은 그 꿈을 현실로 옮기는 과정에서 겪은 생존기입니다.
첫 번째 좌절: 샘플 코드는 그림의 떡
모든 시작은 OpenAI의 공식 문서와 샘플 코드였습니다. ChatGPT 내부에서 작동하는 앱, 'Habit Party'를 만들고 싶었거든요. 야심 차게 공식 샘플을 복제했고, 어찌어찌 서버를 처음 띄웠을 때의 기쁨은 아직도 생생합니다. 하지만 거기까지였습니다. 며칠 뒤 다시 시도했을 때, 그 서버는 켜지지 않았습니다.
전략 변경: 애초에 기획부터 샘플코드에 맞춰서 하자.
고민 끝에 저는 발상을 전환하기로 했습니다. 샘플코드를 수정하는 대신, 그냥 아예 수정하지 않아도 되게(혹은 최소한만 수정) 내 기획을 샘플코드에 맞추는 거였어요.
애초에 ui부터 그냥 샘플코드에 있는 ui만을 기반으로 거기에 맞춰 기획을 하면 적어도 프론트 앤드 단의 ui기획 부분은 좀더 수월하게 작업할수 있지 않을까 싶었죠.
그래서 저는 Claude에게 OpenAI의 공식 SDK 문서를 전부 제공하고,
'습관파티' 기획을 이 구조에 맞춰 다시 설계하고 개발해줘.
라고 요청했습니다. 샘플의 UI와 시스템 구조를 최대한 따르되, 그 안에 제 아이디어를 녹여달라고요.
얼마 후, Claude는 habit-party-mvp라는 이름의 그럴듯한 프로젝트 폴더를 만들어냈습니다.
하지만..문제는;;
"이거 만들었는데... 어떻게 실행하지?"
제 질문에 Claude는 친절하게도 SETUP_GUIDE.md라는 설치 안내서를 만들어주었습니다.
두 번째 좌절: 나만 어려운 설명서
SETUP_GUIDE.md는 전문가에겐 친절했을지 몰라도, 저 같은 비개발자에게는 외계어와 다름없었습니다. 'Supabase 설정', '환 경변수', '의존성 설치'... 모든 단계가 거대한 벽처럼 느껴졌습니다.
결국 다시 Claude에게
"이것도 너무 어려워. 내가 개발 지식이 전혀 없다고 생각하고, 한 단계씩 아주 쉽게 설명해줘."그제야 비로소 길이 보이기 시작했습니다.
Supabase 가입: Claude가 알려준 링크로 들어가 'Start your project'를 누르고, 프로젝트 이름을 정했습니다.
데이터베이스 스키마 실행:
database/schema.sql파일의 내용을 전부 복사해서, Supabase의 'SQL Editor'에 붙여넣고 'Run' 버튼을 눌렀습니다.API 키 복사: Supabase 설정에서 'Project URL'과 'anon public KEY'라는 긴 문자열을 복사해두었습니다.
ngrok 설정: 이전에 애먹었던 ngrok도 이번엔 Claude의 안내에 따라 가입하고 인증 토큰을 받아 설정했습니다.
여기까지는 순조로웠습니다.
하지만....
세 번째 좌절: 다 세팅했는데 서버는 왜 안될까...
모든 수동 세팅이 끝나고, 가이드의 마지막 단계인 서버 실행만이 남았습니다.
cd habit-party-mvp/habit-party_server_node npm install npm start
터미널에 이 명령어들을 입력하라고 하더군요.
수동으로 입력해서 실행하는게 이젠 어렵지 않지만 그냥 한번 클로드가 어디까지 할수 있는지가 알고 싶어서 그것도 해볼수 있다면 해보라고 했어요.
그리고, 문제가 터졌습니다.
server.ts-0+1
import 'dotenv/config'; import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
서버는 Error: supabaseUrl is required. 라는 메시지를 뱉어내며 실행을 거부했습니다. 분명히 저는 .env 파일에 Supabase URL을 잘 넣어줬는데 말이죠.
Claude는 잠시 생각하더니, server.ts 파일의 맨 첫 줄에 import 'dotenv/config'; 코드를 추가했습니다. .env 파일의 내용을 코드가 실제로 읽어올 수 있도록 연결해주는 것이었습니다.
이 작은 수정 하나로, 서버는 거짓말처럼 다음 단계로 나아갔습니다.
bash✅ Habit Party MCP Server running on port 8000
느낀점
이 과정을 지켜보며 만약 저 혼자였다면, 저 오류 메시지를 보고 원인이 '연결 주문' 한 줄이 빠졌기 때문이라는 걸 알아 낼수 있었을까? 싶더라고요...
아마 저는 .env 파일만 백 번쯤 다시 확인하다가 결국 포기했을 겁니다.
이건 정말 ai와 함께 하기 때문에 할 수 있는 거구나 싶었어요.
서버 하나 띄우는 데도 이렇게 많은 변수와 지식이 필요하다니. 코딩의 세계는 제가 상상했던 것보다 훨씬 더 깊고 험난한 곳이었습니다.
일단 서버는 떴습니다. 이제 이 서버를 ChatGPT에 연결하는, 더 큰 산이 남아있습니다. 과연 이번에는 순조롭게 진행될 수 있을까요?
(2부에서 계속됩니다.)