WeatherSafetyOS MCP

WeatherSafetyOS MCP

Provides personalized weather safety alerts and actions based on location, occupation, and age using real-time Korea Meteorological Administration data.

Category
Visit Server

README

WeatherSafetyOS MCP — 카카오 PlayMCP 제출용

위치·직업·연령 기반 개인 기상안전 도우미 MCP 서버. 기상청 실시간 데이터로 "지금 당신에게" 위험한지와 무엇을 해야 하는지를 알려준다.

별도 트랙: 메인 산출물(../sentinel-demo, 기상청 실증 코어)과 분리된 얇은 MCP 인터페이스. 코어는 건드리지 않고 배포된 공개 Worker API만 호출한다. 기상청/재난안전 API 키는 코어 Worker만 보유 — 이 MCP는 키를 갖지 않는다(유출 표면 0, 카카오 규칙 §4 개인정보/인증정보 반려 회피).

규격 준수 (카카오 PlayMCP 규칙 01)

항목 상태
전송 ✅ Streamable HTTP (SDK StreamableHTTPServerTransport), stateless(no session)
버전 ✅ SDK 협상(2025-06-18 등, 허용범위 내)
서버/툴명 kakao 금지 ✅ 빌드 전 네이밍 린트가 강제
툴 개수 3~10 ✅ 5개
annotations 5종 ✅ title·readOnlyHint·destructiveHint·openWorldHint·idempotentHint
description 영문·≤1024·서비스명 ✅ "… Part of WeatherSafetyOS(웨더세이프티OS)."
응답 Markdown·≤24k·TextContent ✅ 선택지 칩 푸터 포함, 24k 가드
p99 3s ✅ 외부호출 2.8s 타임아웃 + 코어 병렬화·KV 캐시
광고·리워드·개인정보 6종 ✅ 없음
LLM 웹검색 불가 고유가치 ✅ 실시간 공식경보·낙뢰관측·쉼터DB·결정론 위험엔진·공식 영향예보

제공 툴 (5)

용도
assess_weather_risk(lat, lon) 지금 이 좌표의 개인 기상위험 판정 + 행동요령 + 최근접 쉼터 (실시간)
simulate_weather_risk(occupation, ageBand, …) "만약 이런 날씨에 이런 사람이라면?" what-if — 같은 기상, 직업·연령별 차등
find_nearest_shelter(lat, lon, kind) 행안부 공식 무더위/한파 쉼터 6만여 곳 중 최근접
official_impact_forecast(lat, lon, sector) 기상청 공식 영향예보(직업 분야별 등급) — "농업 경고 vs 일반인 주의"
resolve_location(lat, lon) GPS → 기상청 4체계 위치 변환

로컬 실행·검증

npm install
npm run build          # 네이밍 린트 + tsc → dist/
npm start              # Express 서버 :8080  (POST /mcp)
npm run smoke          # 5툴 핸들러 직접 호출(라이브 코어)
# 실제 MCP 프로토콜 검증: (서버 켠 상태에서) tsx scripts/client-smoke.ts
npm run inspect        # MCP Inspector (제출 전 필수 점검)
npm run stdio          # 로컬/Claude Desktop용 stdio 전송

PlayMCP in KC 배포 (Kev 액션)

KC는 Git 소스 빌드(루트 Dockerfile) 또는 컨테이너 이미지(linux/amd64)만 받는다. 절차:

  1. 이 폴더(mcp-server/)를 공개 Git repo로 푸시 (루트에 Dockerfile 있음, 브랜치 main).
    • 로컬 도커 확인(선택): docker build --platform linux/amd64 -t weathersafetyos-mcp . && docker run -p 8080:8080 weathersafetyos-mcp
  2. KC(playmcp.kakaocloud.io) → PlayMCP in KC 서버 생성: 서버명 weathersafetyos-mcp, Git URL·브랜치 main·Dockerfile 경로 Dockerfile → 빌드 → ActiveEndpoint URL 복사.
  3. PlayMCP 임시 등록: Endpoint URL 입력 → "정보 불러오기" 성공 확인 → 도구함 추가 → AI채팅 테스트.
  4. 대화 예시 3개 입력(아래) → 심사 요청(≤7/7 권장) → 승인 → 전체 공개 → 상세 URL 확보.
  5. 공모전 비즈폼 "Player 예선 참여"(≤7/14, 1회, 최대 2개 — 슬롯2로 제출).

등록용 대화 예시 3개

  1. "택배 일 하는데 지금 대구 밖에 나가도 될까?"assess_weather_risk(place=대구, occupation=delivery) — 실시간 체감온도·특보 + 심각도별 행동요령 + 법정 근거(산업안전보건규칙 §559 옥외작업 기준) + 최근접 무더위쉼터. 지명만으로 동작(좌표 불필요), 관측 지연 시에도 절대 500 없이 안내.

  2. "폭염경보 속, 밭일 하시는 78세 아버지랑 사무실에 있는 20대는 위험이 얼마나 달라?"(핵심: 동일 재난, 다른 운명)simulate_weather_risk를 프로필만 바꿔 2회 → **같은 체감 38℃**가 78세 농업(야외)엔 🔴 위급(즉시 대피), 20대 사무(실내)엔 🔵 생활 안내로 4단계나 갈린다. 위급 카드엔 법정 기준(§559) + 최근접 쉼터, 그리고 기상청 공식 영향예보도 "농업 경고 vs 일반인 주의"로 직업마다 다름을 나란히 → "구역 등급을 넘어 그 자리의 당신에게".

  3. "광주 지금 위험해? 가까운 쉼터도 알려줘."(편의성·안전 UX) → 지명이 헷갈리면(광주광역시 vs 경기도 광주시) 되물어 확정 → assess_weather_risk 실시간 위험 → find_nearest_shelter로 행안부 공식 6만 곳 중 최근접 쉼터 + 지도 링크. 애매하면 묻고, GPS 좌표를 주면 즉시 정확.

구조

mcp-server/
├─ Dockerfile          ← KC Git-소스 빌드(linux/amd64, node:22, dist/server.js)
├─ src/tools.ts        ← 툴 5종(zod·annotations·영문desc·Markdown+칩), 코어 Worker 호출
├─ src/server.ts       ← Express 5 + SDK StreamableHTTPServerTransport(stateless)
├─ src/stdio.ts        ← stdio 전송(로컬/Claude)
├─ src/naming.ts       ← kakao 네이밍 금지 강제
└─ scripts/            ← lint-naming · smoke · client-smoke

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured