서버를 작성하지 않고 내부 REST API를 MCP로 노출하는 방법
언제 쓸까: 회사 REST API가 있고 맞춤형 MCP를 구축하지 않고 Claude/Cursor가 사용하도록 하고 싶을 때
사전 조건
- Docker — docker.com/get-started
- API용 OpenAPI/Swagger 사양(선택 사항이지만 도움이 됨) — 대부분의 내부 API는 이미 이 사양을 가지고 있습니다
흐름
-
Unla 배포docker run -d --name unla -p 8080:80 -p 5234:5234 -p 5235:5235 ghcr.io/amoylab/unla/allinone:latest✓ 복사됨→ :8080의 웹 UI
-
YAML 서버 정의 추가UI에서 'internal-api' 서버를 만들고 엔드포인트 /users(GET), /orders(GET, POST)를 https://api.internal/v1에 매핑합니다.✓ 복사됨→ 도구 표시: get_users, get_orders, create_order
-
클라이언트가 이를 가리키도록 설정Claude Desktop에 https://gateway.internal/mcp/internal-api를 추가합니다.✓ 복사됨→ 클라이언트에 새 도구가 나타남
결과: 1시간 이내에 모든 MCP 클라이언트에서 내부 API를 사용할 수 있습니다.
함정
- 제한 없이 민감한 헤더를 매핑하면 인증이 누출됨 — Unla의 OAuth 사전 인증을 사용하여 사용자별로 제어하세요. YAML에 관리자 토큰을 하드코딩하면 안 됩니다
- 쓰기 엔드포인트가 파괴적인 호출을 노출함 — POST/DELETE 엔드포인트를 'confirm'으로 표시하여 명시적 사용자 승인을 요청하세요