MCP 서버 구축 가이드: UI 라이브러리용 모델 컨텍스트 프로토콜
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
UI 라이브러리 유지보수자, 디자인 시스템 개발자 (중간~고급 수준)
핵심 요약
- MCP 서버는 AI가 UI 라이브러리의 구성 요소를 이해하고 활용하도록 지원하는 표준화된 프로토콜 서버로,
@modelcontextprotocol/sdk
와zod
를 핵심 라이브러리로 사용 - shadcn/ui registry 형식을 기반으로 구성되어 JSON 기반의 구성 요소 정의와 카테고리별 분류 구조를 활용
- API 레이어에서
fetchUIComponents
와fetchComponentDetails
함수로 레지스트리 데이터를 검증하고 처리 - ComponentSchema와 ComponentDetailSchema를 통해 레지스트리 데이터의 형식을 강제하고,
formatComponentName
함수로 명명 규칙을 통일
섹션별 세부 요약
1. MCP 서버 개요
- MCP는 AI가 외부 도구와 데이터 소스와 상호작용할 수 있도록 설계된 AI 전용 API
- UI 라이브러리에서 해결해야 할 주요 문제: 구성 요소 검색, 구현 지침, 맥락에 따른 추천, 코드 생성
- shadcn/ui registry 형식을 활용한 JSON 기반 구성 요소 정의, 타입 정보, 버전 관리, CLI 통합 지원
2. 서버 아키텍처
mcp-server/
디렉토리 구조:server.ts
: MCP 프로토콜 통신config.ts
: 프로젝트별 설정 관리api.ts
: 레지스트리 데이터 가져오기 및 처리schemas.ts
: 데이터 검증formatters.ts
: 데이터 변환- 의존성:
@modelcontextprotocol/sdk
(프로토콜 통신 핵심 SDK)zod
(런타임 타입 검증)@modelcontextprotocol/inspector
(디버깅 도구)
3. 레지스트리 구성
- URL 구조:
/registry.json
: 전체 구성 요소 목록/r/{component-name}.json
: 개별 구성 요소 구현- ComponentSchema:
```typescript
export const ComponentSchema = z.object({
name: z.string(),
type: z.string(),
description: z.string().optional(),
});
```
- ComponentDetailSchema: 파일 내용, 예제 등 상세 정보 포함
4. API 레이어 구현
fetchUIComponents()
: 레지스트리에서 구성 요소 목록 가져오기fetchComponentDetails(componentName: string)
: 특정 구성 요소의 상세 정보 가져오기- 에러 처리: HTTP 상태 코드 검증 및
zod
를 이용한 데이터 검증
5. 구성 요소 카테고리화
- componentCategories 정의 예시:
```typescript
export const componentCategories = {
Buttons: ["button-primary", "button-secondary"],
Forms: ["input-text", "textarea"],
};
```
- AI 모델의 도구 수 제한을 고려한 분류, 사용자 친화적인 그룹핑
6. 데이터 포맷팅
formatComponentName()
함수로 구성 요소 이름을 PascalCase로 변환generateIn
(예시 생략)을 통해 사용 예제 생성
결론
- MCP 서버 구현 시 shadcn/ui registry 형식과 zod 타입 검증을 기반으로 설계하고, 카테고리별 구성 요소 분류 및 API 레이어 확장성을 고려해야 함.