Skip to main content
Glama
wjd0ha

rain-avoid-map

by wjd0ha
README.md
# 비 오면 피해 MAP MCP

비 오는 날 피해야 할 침수 위험 장소와 주차 위치를 시민 제보, 제보 확인, 신뢰도 기반으로 안내하는 생활안전 MCP입니다.

## 핵심 기능

- 침수 위험 장소 제보
- 주소/지역 기반 침수 위험 조회
- 폭우 시 주차 위험 조회
- 반지하, 주차, 운전, 저지대 상가 상황별 행동 가이드
- 다른 사용자의 제보 확인
- 현장사진 제보, 최근 촬영시각 표시, 현재 위치 주변 사진 조회
- 사용자가 직접 설정한 관심 지역의 새 제보 브라우저 알림과 현장 소식 공유
- 제보자 신뢰도와 `우리동네 기상캐스터` 역할 부여
- 기상청 APIHub 초단기예보 기반 강수 참고정보
- 공식 안전정보와 지도 검색 링크 제공

## MCP 정보

- MCP server name: `rain-avoid-map`
- 표시 서비스명: `비 오면 피해 MAP`
- 제출용 endpoint: `/mcp`
- 로컬 데모: `/`
- 상태 확인: `/health`
- tool 수: 9개

## 도구 목록

- `report_rain_damage_spot`: 침수 위험 장소 제보
- `check_rain_damage_risk`: 주소/지역 기반 침수 위험 조회
- `check_parking_risk_when_rain`: 폭우 시 주차 위험 조회
- `get_rain_day_avoidance_guide`: 상황별 행동 가이드
- `confirm_rain_damage_report`: 다른 사용자의 침수 제보 확인
- `get_local_weather_watchers`: 신뢰도 높은 동네 제보자 조회
- `get_kma_rain_context`: 기상청 초단기예보 강수 참고정보 조회
- `get_recent_area_updates`: 특정 지역의 최근 시민제보와 확인 소식 조회
- `get_official_weather_and_flood_links`: 공식 안전정보 링크 제공

## 로컬 실행

```powershell
npm install
npm run build
npm start
```

브라우저 데모:

```text
http://127.0.0.1:3000/
```

MCP endpoint:

```text
http://127.0.0.1:3000/mcp
```

상태 확인:

```powershell
Invoke-RestMethod http://127.0.0.1:3000/health
```

## 테스트

```powershell
npm test
```

## 등록용 설명

비 오면 피해 MAP은 이상기후와 국지성 집중호우로 인한 생활 침수 피해를 줄이기 위한 시민참여형 생활안전 MCP입니다. 사용자는 침수된 도로, 주차장, 지하차도, 반지하 주변, 저지대 상가 앞 정보를 주소와 일시 단위로 제보할 수 있고, 다른 사용자는 해당 제보를 확인해 제보자의 신뢰도를 높일 수 있습니다. 반복적으로 확인받은 제보자는 `우리동네 기상캐스터` 역할을 부여받아 동네 단위 위험 신호를 더 믿고 참고할 수 있게 돕습니다.

본 서비스는 공식 재난문자나 지자체 대피명령을 대체하지 않으며, 비 오는 날 더 빠르게 피하고 대비하기 위한 참고용 생활안전 도구입니다.

## 기상청 API 키 설정

키는 코드나 채팅에 적지 말고 `.env` 또는 배포 환경변수에만 설정합니다.

```text
KMA_API_KEY=발급받은_인증키
KMA_API_PROVIDER=apihub
KMA_TIMEOUT_MS=10000
```

GPS 위치 동의를 받은 사진 제보에 좌표 대신 상세 주소 표기를 함께 쓰려면 선택 환경변수를 설정합니다. 키가 없어도 좌표와 정확도 범위로 제보할 수 있습니다.

```text
KAKAO_REST_API_KEY=발급받은_REST_API_키
```

지도 화면을 카카오맵으로 표시하려면 JavaScript 키를 별도로 설정합니다. REST API 키가 아니라 JavaScript 키를 사용하며, 배포 주소를 JavaScript SDK 도메인으로 등록해야 합니다.

```text
KAKAO_MAP_APP_KEY=발급받은_JavaScript_키
MAP_PROVIDER=kakao
```

기본값은 `openstreetmap`입니다. 카카오맵 SDK 도메인 등록이 완료된 뒤에만 `MAP_PROVIDER=kakao`로 전환합니다.

사진 제보는 위치정보 저장 동의와 브라우저 위치 권한을 모두 받은 경우에만 정밀 위치를 요청합니다. 위치정보가 없거나 정확도가 낮으면 제보 위치를 넓은 범위로 표시합니다.

배포 후 MCP 응답에서 현장사진을 공개 URL로 제공하려면 다음 값을 배포 주소로 설정합니다.

```text
PUBLIC_BASE_URL=https://발급받은_배포주소
```

현장사진은 브라우저에서 압축하면서 EXIF 메타데이터를 제거하며, 서버는 JPEG·PNG·WebP 형식과 크기를 다시 검사합니다. 현재 파일 저장소는 MVP용 로컬 디스크이므로 컨테이너 재시작 후 영구 보존은 보장하지 않습니다.