Skip to main content
Glama
kimbongjune

tour-crowding-mcp

by kimbongjune
README.md
# tour-crowding-mcp

한국관광공사 관광지 혼잡도(집중률) MCP 서버. Claude Desktop 등 MCP 클라이언트에
붙이면 "이번 주말 경주 붐벼?", "전주에서 한적한 데 추천해줘" 같은 질문에
실데이터로 답할 수 있다.

- LLM 키가 필요 없다. 도구 선택과 답변 작성은 접속한 클라이언트의 모델이 한다.
- 사용자 본인의 공공데이터포털 키 하나로 동작한다.
- 저장소가 없다. 프로세스 메모리 캐시로만 돌고, 지역 코드표(첫 실행 18콜)만
  `~/.cache/tour-mcp/` 에 파일로 남겨 재시작 시 쿼터를 아낀다.

## 준비

[data.go.kr](https://www.data.go.kr) 에서 아래 두 서비스를 활용신청하고
**Decoding 키**를 받는다 (Encoding 키를 넣으면 이중 인코딩으로 인증에 실패한다).

- 한국관광공사 국문 관광정보 서비스 (KorService2)
- 한국관광공사 관광지 집중률 정보 (TatsCnctrRateService)

두 서비스 모두 심사 없는 자동승인이라 신청 즉시 키가 발급된다.
개인 발급 키의 일일 한도는 보통 1,000회다. `usage` 도구로 이번 세션의
호출 수를 확인할 수 있다.

## Claude Desktop 설정

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "tour-crowding": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kimbongjune/tour-crowding-mcp", "tour-crowding-mcp"],
      "env": { "DATA_GO_KR_SERVICE_KEY": "발급받은 Decoding 키" }
    }
  }
}
```

로컬 체크아웃으로 쓰려면 `--from` 에 git 주소 대신 저장소 경로를 넣는다.

## 도구

| 도구 | 하는 일 |
| --- | --- |
| `resolve_area` | 지역명 → 시군구 코드. 동명 지역이면 후보를 되돌려준다 |
| `get_crowding` | 지역 요약 또는 특정 관광지의 일자별 혼잡도(집중률 예측) |
| `recommend_quiet` | 앞으로 며칠간 한적할 것으로 예측되는 곳 추천 |
| `find_attraction` | 이름으로 관광지 검색 |
| `get_attraction_detail` | 개요·운영정보 등 상세 |
| `list_places` | 카테고리별 목록 (자연·역사·문화·체험·레저스포츠·쇼핑·음식·숙박·캠핑·웰니스 등) |
| `list_festivals` | 진행·예정 축제 (기간 포함) |
| `usage` | 이번 세션에서 사용자 키로 나간 호출 수 |

혼잡도 수치는 한국관광공사가 산출한 예측값이며 실측이 아니다. 전주시처럼
데이터가 구 단위로 집계되는 지역은 하위 구를 합쳐서 조회한다.

출처: ⓒ한국관광공사

TDQS

A3.5/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have clearly separate roles—area resolution, attraction lookup, detail, crowding, festivals, and quota usage are easy to tell apart. However, get_crowding and recommend_quiet both deal with crowding-derived information, and find_attraction versus list_places could initially be confused, though the descriptions provide enough guidance.

Naming Consistency4/5

The tool names follow a mostly consistent snake_case verb-first pattern such as find_*, get_*, list_*, and resolve_*. Minor deviations include usage, which is a bare noun, and recommend_quiet, which uses an adjective rather than a noun object.

Tool Count5/5

Eight tools is well within the ideal range and each tool covers a distinct part of the tourism/crowding workflow: area resolution, attraction search and detail, crowding data, quiet recommendations, category place lists, festivals, and quota checking. Nothing feels redundant or unnecessary.

Completeness4/5

The toolset covers the core workflow end-to-end, including resolving areas, finding and inspecting attractions, getting crowding forecasts, listing places and festivals, and monitoring usage. Minor gaps exist—such as no direct combination of category lists with crowding and no explicit date-scoped crowding query—but the descriptions acknowledge these limitations and give agents a workaround.

Maintenance

ActivityMaintained
ResponsivenessNo issues