seoul-air-quality-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@seoul-air-quality-mcp오늘 우리 동네 미세먼지 어때?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
서울시 대기환경 정보 MCP (seoul-air-quality-mcp)
서울특별시 기후환경본부 대기정책과에서 관리하는 대기환경 공공데이터를 AI(Claude 등)가 직접 조회할 수 있도록 만든 MCP(Model Context Protocol) 서버입니다.
담당: 대기정책과 차량공해저감팀 청정 (사무관) 목적: 시민이 "오늘 우리 동네 미세먼지 어때?" 같은 질문을 AI에게 바로 물어보고, 정확한 서울시 공식 데이터로 답을 받을 수 있게 하는 것.
왜 만들었나
광진구청 류승인 주무관님이 korean-law-mcp, kordoc 등을 만들면서
개발 과정을 GitHub에 상세히 기록해두신 것을 보고,
"나도 우리 부서 데이터로 이런 걸 만들 수 있지 않을까" 하는 생각에서 시작했습니다.
같은 이유로, 이 저장소도 완성된 코드만 올리는 게 아니라 왜 이렇게 만들었는지, 어떤 시행착오가 있었는지를 함께 남깁니다. 다른 직원분이 비슷한 걸 만들고 싶을 때 이 저장소를 그대로 참고하실 수 있도록 하는 게 목표입니다.
Related MCP server: environment-mcp
사용한 원본 데이터 (서울 열린데이터광장)
데이터셋 | ID | 설명 |
서울시 시간 평균 대기오염도 정보 | OA-2275 | 자치구별 시간별 대기환경지수/미세먼지/오존 등 (최근 7일) |
서울시 실시간 자치구별 대기환경 현황 | OA-1200 | 25개 자치구 실시간 측정값 |
서울시 실시간 대기환경 평균 현황 | OA-1201 | 서울시 전체 평균값 |
서울시 기간별 시간평균 대기환경 정보 | OA-2221 | 최근 2개월 시간평균 (기간 조회 가능) |
서울시 연도별 미세먼지/오존 경보발령 현황 | OA-2228 / OA-2229 | 경보 이력 |
원본시스템: 기후대기환경정보서비스 제공부서: 기후환경본부 대기정책과 (☎ 02-2133-3665) 라이선스: 공공누리 1유형 (출처표시 시 상업적 이용·변경 가능)
개발 일지
1단계 — 데이터 파악 (2026-08-01)
서울 열린데이터광장에서 대기정책과 소관 데이터셋을 확인.
OA-2275(시간평균 대기오염도)를 1차 대상으로 선정.
연관데이터 탭에서 같은 계열 데이터셋 8~9개를 추가로 확인 → 추후 확장 대상으로 기록.
2단계 — API 인증키 발급
data.seoul.go.kr 회원가입 → 마이페이지에서 인증키 발급 (무료, 일일 호출 제한 있음).
주의: 인증키는 절대 코드에 하드코딩하지 않고 환경변수(SEOUL_API_KEY)로만 사용.
3단계 — API URL 패턴 확인
서울시 열린데이터광장 공통 패턴:
http://openapi.seoul.go.kr:8088/{인증키}/{요청타입}/{서비스명}/{시작인덱스}/{종료인덱스}/확인된 서비스명:
RealtimeCityAir(OA-1200, 실시간 자치구별 대기환경)TODO: OA-2275(시간평균)의 정확한 서비스명은 로그인 후 Open API 탭에서 확인 필요. 확인되는 대로
main.py의TODO_SERVICE_NAME부분을 실제 값으로 교체할 것.
4단계 — MCP 서버 설계
기존에 만들어둔 부동산원+빈집 MCP(FastMCP + Fly.io)와 동일한 구조 채택:
main.py: FastMCP 서버, SSE transport도구 1개당 API 엔드포인트 1개 매핑이 기본 원칙 (한 도구가 너무 많은 일을 하지 않게)
5단계 — 확장 전략 확정 (2026-08-01)
13개 데이터셋을 한 번에 개발하지 않기로 결정. 이유:
갱신이 오래전에 멈춘 데이터까지 전수 조사 없이 다 넣으면 신뢰도가 오히려 떨어짐.
한 번에 여러 개를 만들면 중간에 지칠 위험이 큼 — 도구 1개씩 완성하고 실제 동작을 확인한 뒤 다음으로 넘어가는 방식 채택. 아래 "MCP 도구 목록 및 확장 로드맵" 표를 기준으로 순서대로 진행.
6단계 — OA-2275 서비스명 확인 및 도구 완성 (2026-08-01)
data.seoul.go.kr 로그인 후 OA-2275의 Open API 탭에서 샘플 URL 확인.
서비스명:
TimeAverageAirQualityURL 패턴:
.../{인증키}/{타입}/TimeAverageAirQuality/{시작}/{끝}/{YYYYMMDD 또는 YYYYMMDDHH}/{자치구명(선택)}응답 필드:
MSRMT_DT(측정일시),MSRSTN_NM(자치구명),NTDX(NO2),OZON(O3),CBMX(CO),SPDX(SO2),PM(PM10),FPM(PM2.5)get_hourly_air_quality도구 완성.
7단계 — 배포 (예정)
Fly.io Tokyo 리전으로 배포 예정. 배포 전 Fly.io 지출 한도(월 $5 권장)를 반드시 설정할 것 (이전 작업에서 미설정 상태로 남아있었음 — 이번 프로젝트 배포 전 재확인 필요).
MCP 도구 목록 및 확장 로드맵
원칙: FILE 형태로만 제공되거나 2024년 이전에 갱신이 멈춘 데이터는 실시간 조회에 적합하지 않으므로 제외한다. 대상: 2025~2026년까지 갱신되고 OpenAPI가 제공되는, 대기정책과 소관 데이터만 선정한다. 진행 방식: 도구를 한 번에 다 만들지 않고, 하나씩 추가 → 실제 호출 테스트 → 커밋 → 다음 도구. 매 단계가 하나의 "완주"가 되도록 한다.
순서 | 도구명 | 원본 데이터셋 | 최근 갱신 | 상태 |
1 |
| 서울시 실시간 자치구별 대기환경 현황 (OA-1200) | 상시 | ✅ 구현 완료 |
2 |
| 서울시 시간 평균 대기오염도 정보 (OA-2275) | 상시 | ✅ 구현 완료 (서비스명: TimeAverageAirQuality) |
3 |
| 서울시 대기오염물질배출시설설치사업장 인허가 정보 | 2026-08-01 | 📋 다음 순서 후보 |
4 |
| 서울시 환경전문공사업 인허가 정보 | 2026-08-01 | 📋 후보 |
5 |
| 서울시 환경측정대행업 인허가 정보 | 2026-08-01 | 📋 후보 |
6 |
| 서울시 년도별 평균 대기오염도 정보 | 2025-11-04 | 📋 후보 |
7 |
| 서울시 월별 평균 대기오염도 정보 | 2025-11-04 | 📋 후보 |
8 |
| 서울시 연도별 오존 경보발령 현황 | 2025-11-04 | 📋 후보 |
9 |
| 서울시 초미세먼지 연도별 발령정보 | 2024-12-04 | 📋 후보 |
10 |
| 서울시 대기오염전광판 위치정보 | 2024-12-04 | 📋 후보 |
이번 단계에서 제외한 데이터
서울시 광진구 시간별 대기먼지데이터 (2011~2014, FILE만 제공)
서울시 TMS부착사업장 시간단위 대기오염물질 배출농도 (2024-04, FILE만 제공)
서울시 대기오염물질 일별 배출량 2019~2021 (FILE만 제공)
서울시 대기오염 측정소/측정항목 정보 (보건환경연구원 소관, 대기정책과 아님)
서울시 마포구 중앙도서관 공기질(IoT) 측정정보 (정보통신과 소관, 대기정책과 아님)
실행 방법 (로컬 테스트)
python -m venv venv
source venv/bin/activate # Windows는 venv\Scripts\activate
pip install -r requirements.txt
export SEOUL_API_KEY="발급받은_인증키"
python main.py배포 (Fly.io)
fly launch --no-deploy
fly secrets set SEOUL_API_KEY="발급받은_인증키"
fly deploy라이선스 및 출처
원본 데이터: 서울특별시 (공공누리 1유형, 출처표시) 데이터 제공: 서울 열린데이터광장 (data.seoul.go.kr)
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for the Korean National Assembly Open API, enabling querying of bills, members, votes, committees, and more via natural language.Last updated20Apache 2.0
- Flicense-qualityDmaintenanceMCP server that provides tools to access Google Maps Environment APIs for air quality, pollen, and weather data, enabling queries like current conditions, forecasts, and history.Last updated
- Flicense-qualityBmaintenanceA read-only MCP server providing access to various Korean public data such as subway arrivals, weather, fine dust, bike availability, real estate, and more.Last updated
- Alicense-qualityCmaintenanceMCP server for Korean government power/energy statutory plans. Enables AI agents to search and retrieve public power plan documents.Last updatedMIT
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
Hosted MCP server exposing US hospital procedure cost data to AI assistants
This MCP server provides seamless access to Malaysia's government open data, including datasets, w…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hlucent/seoul-air-quality-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server