MCP Store Greeting 서버
업체 환영 인사 + 날씨 정보를 제공하는 MCP 서버 및 관리자 웹
프로젝트 구조
.
├── mcp-server/ # MCP 서버 (Fastify)
├── admin-web/ # 관리자 웹 (React + Vite)
├── supabase/ # DB 스키마
└── README.md
설정
1. Supabase 설정
- Supabase 프로젝트 생성
- 테이블 생성 (중요!):
- Supabase 대시보드 → SQL Editor 메뉴
- New Query 클릭
supabase/schema.sql파일의 내용을 복사하여 붙여넣기- Run 버튼 클릭하여 실행
- 성공 메시지 확인
- Table Editor에서
stores테이블이 생성되었는지 확인
- 이메일 확인 비활성화 (개발 환경 권장):
- Supabase 대시보드 → Authentication → Settings
- "Enable email confirmations" 체크 해제
- 또는 "Confirm email"을 "Off"로 설정
- 환경 변수 설정:
mcp-server/.env:SUPABASE_URL,SUPABASE_SERVICE_KEYadmin-web/.env:VITE_SUPABASE_URL,VITE_SUPABASE_ANON_KEY
자세한 설정 방법은 SUPABASE_SETUP.md 파일 참조
2. 날씨 API 키
- OpenWeather API 키 발급: https://openweathermap.org/api
mcp-server/.env에WEATHER_API_KEY설정
3. 카카오 지도 API 키
- 카카오 개발자 콘솔에서 앱 키 발급
admin-web/index.html의YOUR_KAKAO_APP_KEY교체
배포 (Render.com)
1. Render.com에 배포하기
사전 준비
- Render.com 계정 생성
- GitHub 저장소에 프로젝트 푸시 (또는 Render.com에서 직접 연결)
배포 단계
방법 1: render.yaml 사용 (권장)
- GitHub 저장소에
render.yaml파일이 이미 포함되어 있음 - Render.com 대시보드 → New + → Blueprint
- GitHub 저장소 선택
- Render가 자동으로
render.yaml설정을 읽어옴 - 환경 변수 설정:
SUPABASE_URL: Supabase 프로젝트 URLSUPABASE_SERVICE_KEY: Supabase Service Role KeyWEATHER_API_KEY: OpenWeather API 키
- Apply 클릭하여 배포 시작
방법 2: 수동 설정
- Render.com 대시보드 → New + → Web Service
- GitHub 저장소 연결
- 설정:
- Name:
mcp-server - Environment:
Node - Build Command:
cd mcp-server && npm install - Start Command:
cd mcp-server && npm start - Plan: Free (또는 원하는 플랜)
- Name:
- 환경 변수 추가:
NODE_ENV:productionPORT:10000(Render.com이 자동 설정하지만 명시적으로 설정 가능)SUPABASE_URL: Supabase 프로젝트 URLSUPABASE_SERVICE_KEY: Supabase Service Role KeyWEATHER_API_KEY: OpenWeather API 키
- Create Web Service 클릭
배포 후 확인
- 배포 완료 후 Render.com이 자동으로 HTTPS URL 제공 (예:
https://mcp-server.onrender.com) - Health Check:
https://your-app.onrender.com/health
로컬 개발 환경 실행
의존성 설치
npm run install:all
MCP 서버 실행
npm run dev:mcp
# 또는
cd mcp-server && npm run dev
관리자 웹 실행
npm run dev:admin
# 또는
cd admin-web && npm run dev
MCP Tool 사용
엔드포인트
POST /rpc/greet_store
요청
{
"store_name": "A업체"
}
응답
{
"greeting": "반갑습니다, 고객님! A업체입니다.",
"weather_summary": "A업체(서울시 강남구)는 지금 현재 구름 많음, 23°C"
}
테스트 방법
Render.com 배포 서버 테스트
배포된 서버 URL을 사용하여 테스트 (예: https://mcp-server.onrender.com)
1. Health Check (서버 상태 확인)
curl https://your-app.onrender.com/health
2. greet_store 엔드포인트 테스트
방법 1: curl 사용
curl -X POST https://your-app.onrender.com/rpc/greet_store \
-H "Content-Type: application/json" \
-d '{"store_name": "테스트업체"}'
방법 2: 테스트 스크립트 사용
# Node.js 버전
node test-mcp-server.js https://your-app.onrender.com 테스트업체
# Bash 버전 (Linux/Mac/Git Bash)
bash test-mcp-server.sh https://your-app.onrender.com 테스트업체
방법 3: 브라우저에서 Health Check
브라우저에서 https://your-app.onrender.com/health 접속하여 {"status":"ok"} 응답 확인
방법 4: Postman/Insomnia 사용
- Method: POST
- URL:
https://your-app.onrender.com/rpc/greet_store - Headers:
Content-Type: application/json - Body (JSON):
{
"store_name": "등록한업체명"
}
로컬 개발 서버 테스트
로컬에서 실행 중인 경우 http://localhost:3000 사용
3. 예상 응답 예시
{
"greeting": "반갑습니다, 고객님! 테스트업체입니다.",
"weather_summary": "테스트업체(서울시 강남구)는 지금 현재 맑음, 25°C"
}
관리자 웹
- 로컬: http://localhost:5173
- Supabase Auth로 로그인
- 업체 등록 시 주소 자동완성 및 지도에서 위치 선택
- 저장 시 lat/lng 자동 계산 및 저장