피드로 돌아가기
Dev.toBackend
원문 읽기
Transport 계층 다변화 및 Adapter 패턴 도입을 통한 MCP 카탈로그 호환성 확보
Glama clones your repo. Smithery proxies your HTTP. mcp.so wants a markdown line.
AI 요약
Context
Model Context Protocol(MCP) 서버 구축 시 선택한 Transport 방식(Stdio vs HTTP)에 따라 등록 가능한 카탈로그 서비스가 제한되는 파편화 문제 발생. 단일 Transport 구현만으로는 Glama, Smithery, mcp.so 등 서로 다른 검증 메커니즘을 가진 플랫폼 모두에 대응 불가한 구조적 한계 직면.
Technical Solution
- Stdio 전용 환경인 Glama 대응을 위해 HTTP 서버 내부에 @modelcontextprotocol/sdk/server/stdio.js 기반의 Standalone Stdio Entrypoint 추가 구현
- Production 환경의 DB 의존성으로 인한 Build Crash 방지를 위해 DISCOVERY_ONLY 환경 변수를 활용한 조건부 로직 실행 및 Production Plugin 로딩 차단
- Smithery의 Gateway Proxy 통과를 위해 initialize, tools/list 등 Discovery Method에 한해 API Key 검증을 제외하는 Selective Authentication 필터 적용
- Smithery의 Capability Quality 점수 향상을 위해 입력 스키마 외에 outputSchema를 명시적으로 정의하여 구조화된 출력 선언 강화
- Stdio Entrypoint를 단순 구현체가 아닌 HTTP Route와 스키마를 공유하는 Catalog Adapter로 설계하여 코드 중복 최소화 및 일관성 유지
실천 포인트
1. MCP 서버 설계 시 Stdio와 HTTP Transport를 모두 지원하는 듀얼 엔트리포인트 구성 검토
2. Discovery 단계의 API 호출에 대해서는 인증을 제외하여 외부 카탈로그의 스캐닝 허용
3. LLM 최적화를 위해 inputSchema뿐만 아니라 outputSchema를 상세히 정의하여 품질 점수 확보
4. 환경 변수를 통한 Feature Toggle을 구현하여 빌드 및 스캔 전용 경량 모드 지원