목적: Ray-Ban Meta 스마트 글래스(Gen2 Headliner)와 Poke AI를 연동하는 MCP(Model Context Protocol) 서버. 사용자가 안경으로 사진을 찍거나 음성 명령을 내리면, Poke가 이 MCP 서버를 호출하여 Claude AI + 실시간 웹검색으로 처리 후 iMessage로 응답한다.
실제 사용 시나리오:
인프라:
~/projects/pokebot/Runtime: Node.js 22 + TypeScript (strict mode)
MCP SDK: @modelcontextprotocol/sdk (최신 버전)
AI: @anthropic-ai/sdk (claude-sonnet-4-6 모델)
Search: Brave Search API (무료 2,000회/월)
Web: Express.js (SSE transport용)
Validation: zod
Process: dotenv
DevTools: tsx (dev), eslint + prettier
Deploy: Docker + docker-compose + nginx
CI/CD: GitHub Actions
~/pokebot/
├── .github/
│ └── workflows/
│ ├── deploy.yml # main 브랜치 push 시 Oracle 자동 배포
│ └── ci.yml # PR 시 lint + build 검증
├── src/
│ ├── index.ts # Express 서버 + MCP SSE 엔드포인트
│ ├── server.ts # MCP Server 인스턴스 + 도구 등록
│ ├── tools/
│ │ ├── index.ts # 모든 tool export
│ │ ├── search.ts # 웹검색 (Brave API)
│ │ ├── vision.ts # 이미지 분석 (Claude Vision)
│ │ ├── events.ts # 행사/이벤트 검색
│ │ ├── translate.ts # 번역 (Claude)
│ │ └── navigate.ts # 길안내 정보
│ ├── utils/
│ │ ├── claude.ts # Anthropic SDK 래퍼
│ │ ├── logger.ts # 구조화된 로깅
│ │ └── errors.ts # 커스텀 에러 클래스
│ └── types/
│ └── index.ts # 공유 타입 정의
├── scripts/
│ ├── setup.sh # Oracle 초기 환경 설정 스크립트
│ └── health-check.sh # 헬스체크 + 알림 스크립트
├── nginx/
│ └── pokebot.conf # nginx 리버스 프록시 설정 (SSL 포함)
├── .env.example # 모든 환경변수 명세 (주석 포함)
├── .gitignore
├── .eslintrc.json
├── .prettierrc
├── docker-compose.yml
├── docker-compose.prod.yml # 프로덕션용 (resource limits 포함)
├── Dockerfile
├── package.json
├── tsconfig.json
└── README.md