왜 Python을 TypeScript로 교체했고 OAuth를 생존한 MCP 서버 개발 경험
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발, 인공지능, DevOps
대상자
AI 에이전트 및 MCP 서버 개발자, 보안 및 타입 안전성에 관심 있는 중급 이상 개발자
핵심 요약
- OAuth 2.0을 사용한 권한 관리 구현은 복잡하지만 보안성과 확장성을 확보하는 필수 조건
- TypeScript로의 전환은
async/await
, 타입 안전성, MCP SDK 호환성 개선으로 생산성 향상 - Zod를 활용한 데이터 검증은
tool payload
및LLM 출력
의 타입 안전성과 오류 메시지 명확성 제공 authInfo
와 Proxy 기반 OAuth 인증 서버 연동이 MCP 아키텍처의 핵심 요소
섹션별 세부 요약
1. **OAuth 2.0을 통한 권한 관리 구현**
- OAuth 2.0은 다중 테넌트, 세부 권한 범위, 감사 기능 지원
- MCP Specification에 명시된 표준 프로토콜
- 토큰 인스펙션, 흐름 설계, 권한 로직 구현 시 다량의 디버깅 필요
authInfo
속성은 MCP SDK 미들웨어를 통해 요청에 주입되어 멀티 테넌트 지원 가능
2. **Python에서 TypeScript/Node.js로의 전환**
- Python의 타입 안전성 부족으로 리팩토링 지연 및 런타임 버그 발생
- TypeScript의 강력한 타입 시스템,
async/await
지원, MCP TypeScript SDK 호환성 확보 - MCP SDK는
authInfo
및 Proxy 기능을 통해 OAuth 인증 서버와 MCP 리소스 서버 분리 가능 - 재작성 비용은 있지만 장기적인 개발 속도 향상에 유리
3. **Zod를 활용한 데이터 검증**
- 타입스크립트 기반의 선언형 스키마, 자동 타입 추론, 사용자 친화적 오류 메시지 제공
- MCP TypeScript SDK 내부적으로 Zod 통합 지원
- 예제:
AgentEvent
타입의z.object
정의를 통해payload
검증 가능 - API 엔드포인트, 툴 통합, LLM 출력 등 모든 영역에서 Zod 적용 권장
결론
- OAuth 2.0 구현 시 토큰 인스펙션, 흐름 설계, 권한 로직을 철저히 검증
- TypeScript로의 전환은
async/await
및 타입 안전성으로 생산성 향상 - Zod를 모든 데이터 검증 영역에 적용하여 오류 예방 및 디버깅 효율성 증대
- MCP TypeScript SDK의
authInfo
및 Proxy 기능을 활용한 OAuth 서버 분리 구현이 핵심 - GitHub 저장소와 Portal One 블로그에서 전체 코드 및 아키텍처 분석 참고