COLDSURFCOLDSURF
COLDSURFB-SIDE

// Entry · Engineering

공연 정보를 말로 물어보는 도구를 오픈소스로 풀었어요

무대 조명 보케를 배경으로 클로즈업된 보컬 마이크.
Photo: Unsplash

한국 공연 정보는 KOPIS에 다 있는데, 코드로 꺼내 쓰려면 XML을 파싱하고 파라미터를 문서에서 찾아가며 맞춰야 해서 손이 많이 가요. 그 번거로움을 한 겹 걷어낸 도구를 만들어 npm에 공개했어요 — `@coldsurf/tickets`(MIT). 쓰는 법은 세 가지예요. 터미널에서 `npx`로 바로, 코드에서 타입 안전한 SDK로, 그리고 이번에 새로 붙인 MCP로 Claude 같은 AI한테 '오늘 예스24라이브홀 공연 알려줘'처럼 말로. 세 방법의 실제 셋업과 예시를 정리했어요.

By @coldsurf2026.07.14Engineering@coldsurfAI가 작성한 글

한국에서 열리는 공연 정보는 사실 한곳에 모여 있어요. KOPIS(공연예술통합전산망)라는 공공 데이터베이스요. 문제는 이걸 코드로 꺼내 쓰려면 XML 응답을 파싱하고, 파라미터 이름을 문서에서 찾아가며 맞춰야 한다는 거예요. 한 번 해보면 알아요. 되긴 되는데, 손이 많이 가요.

그래서 그 번거로움을 한 겹 걷어낸 도구를 만들었어요. @coldsurf/tickets. npm에 공개돼 있고 MIT 라이선스예요. 쓰는 방법은 세 가지 — 터미널에서, 코드에서, 그리고 AI한테 말로.

먼저 준비물 하나. KOPIS OpenAPI 키가 필요해요. kopis.or.kr에서 무료로 발급받아, 환경변수로 넣어두면 돼요.

export KOPIS_KEY="발급받은_키"

이제 세 가지를 차례로 볼게요.

1. 터미널에서 — 설치도 필요 없어요

가장 빠른 건 CLI예요. 설치할 것도 없이 npx로 바로 돌려요.

npx @coldsurf/tickets find --startDate 20260714 --venue "예스24 라이브홀"

그러면 결과가 표로 딱 떨어져요. 공연명, 기간, 공연장, 상태까지요. --format json을 붙이면 JSON으로 나오고요. 목록만이 아니라 공연 상세, 공연장 검색, 기획사, 수상작, 축제까지 조회할 수 있어요.

npx @coldsurf/tickets venue --name "예스24"     # 공연장 검색
npx @coldsurf/tickets detail PF123456           # 공연 상세
npx @coldsurf/tickets find --startDate 20260714 --category GGGA --area 11   # 서울 뮤지컬만

빠르게 뭐 하나 확인하고 싶을 때 제일 편해요.

2. 코드에서 — 타입 안전한 SDK로

프로젝트 안에서 쓸 거면 SDK로 import해요. 응답이 이미 깔끔한 타입으로 정리돼 있어서, XML을 만질 일이 없어요.

import { createKopisClient } from '@coldsurf/tickets'

const client = createKopisClient(process.env.KOPIS_KEY!)

const shows = await client.getPerformanceList({
  startDate: '20260714',
  venue: '예스24 라이브홀',
})
// shows: { title, startDate, endDate, venue, genre, state, ... }[]

getPerformanceList 말고도 getVenueList, getPerformanceDetail, getFestivalList 같은 메서드가 8개 있어요. 전부 타입이 붙어 있어서, 에디터가 필드를 다 알려줘요. 파라미터 이름을 외울 필요가 없죠.

3. AI한테 — 말로 물어봐요 (MCP)

이번에 새로 붙인 게 이거예요. MCP(Model Context Protocol) 서버요. Claude 같은 AI 호스트에 등록해두면, 플래그도 메서드도 필요 없이 그냥 말로 물어봐요.

설정은 호스트의 mcpServers에 이 한 조각을 넣으면 끝이에요.

{
  "mcpServers": {
    "tickets": {
      "command": "npx",
      "args": ["-y", "-p", "@coldsurf/tickets", "tickets-mcp"],
      "env": { "KOPIS_KEY": "발급받은_키" }
    }
  }
}

Claude Code를 쓴다면 한 줄로도 돼요.

claude mcp add tickets --env KOPIS_KEY=발급받은_키 -- npx -y -p @coldsurf/tickets tickets-mcp

이제 그냥 이렇게 물어요.

"오늘 예스24라이브홀 공연 알려줘"

그러면 AI가 알아서 도구를 골라 KOPIS를 조회하고 답을 줘요. "오늘"은 오늘 날짜로, "예스24라이브홀"은 공연장 자리로 — 문장을 인자로 바꾸는 건 AI가 다 해줘요. 실제로 물어보면 이렇게 와요.

이번 달 "예스24" 공연 5건
  - 승리의 여신: 니케, 밴드라이브 콘서트 | 07.18~19 | 예스24 라이브홀
  - V$ X V PRiNCE & LUCAVEROS          | 08.01     | 예스24 라이브홀
  …

목록만이 아니라 "이 공연 러닝타임 얼마야?", "홍대 근처 이번 주 공연 뭐 있어?" 같은 것도 이어서 물어볼 수 있고요.

왜 만들었냐면

COLDSURF가 하려는 일은 결국 흩어진 공연 정보를 발견하기 쉽게 만드는 거예요. 그 출발점이 데이터를 손쉽게 꺼내 쓰는 거고요. 이 도구는 그 바닥 레이어예요 — 나중에 뭘 만들든 공연 데이터를 꺼내는 부분은 이거 하나로 끝나게, 재사용할 수 있게 떼어둔 조각이에요.

오픈소스라 누구나 써도 돼요. 공연 정보를 다루는 사이드 프로젝트가 있다면, 아니면 그냥 "오늘 무슨 공연 있지?"가 궁금하다면 한 번 써보세요.

npx @coldsurf/tickets find --startDate 20260714

이 한 줄이면 시작이에요.

Comments

텍스트만 입력해 주세요. 제3자 저작권을 침해하는 인용·이미지·가사 전문은 *내려질 수 있습니다*. 권리자 또는 독자의 요청은 imcoldsurf@gmail.com 으로 보내 주세요.

댓글을 남기려면 로그인하세요.

// More entries