Tiny Air: An MCP Server for Air Quality
During wildfire season here in Colorado the air quality can swing fast. Some days it's fine. Other days the AQI jumps fast and I don't notice until my throat is on fire. This helps me get ahead of it.
I run an AI agent (Hermes) that already handles my morning briefings, smart home routines, and weather alerts so lets see how I can get my agent to check the AQI and tell me when to turn on the air purifier before it gets bad enough to matter.
So I am presenting Tiny Air.
What It Is
Tiny Air is a stateless MCP (Model Context Protocol) server that serves live US air quality data from AirNow.gov. No API key, no install, no database. Point your agent at a URL and it gets four tools:
get_air_quality— current AQI and category for a zip, city, or lat/loncheck_air_quality_threshold— returns a boolean: is AQI above a given number right now?find_nearby_stations— lists nearby AirNow reporting stationslist_aqi_categories— the AQI scale so the agent knows what the numbers mean
How to Connect
Drop this into your agent's MCP config or just tell your agent to do it:
mcp_servers:
tinyair:
url: "https://air.drkpxl.com/mcp"
tools:
include: [get_air_quality, check_air_quality_threshold, find_nearby_stations, list_aqi_categories]
Works with Hermes, Claude (Code/Desktop), and OpenClaw. Anything that speaks MCP.
How I Use It
Two cron jobs in Hermes:
Morning briefing: every day at 7am, my agent checks the air quality for my zip and includes it alongside weather, sunset, and the rest of my daily summary. If it's bad, I know before I head outside.
Wildfire season alert: every 20 minutes, the agent calls check_air_quality_threshold with max_aqi 60. If it returns exceeded: true, I get a message on Telegram with the current AQI and category. The agent suppresses further alerts until the AQI drops back below 50, and resets overnight. That way I'm not getting spammed, I'm getting told once when it crosses a threshold and once when it's safe again.
When the alert fires, I have a Home Assistant automation turn on the air purifier.
Why Stateless
I could have built a notification service: sign up, store your zip, send SMS when AQI gets bad. But that's a database with PII, a privacy policy, backup schedules, and maintenance. Your agent already knows your location, your schedule, and your preferred delivery channel. Duplicating that state into a second service is just a liability and not my goal for a limited use tool
Tiny Air holds nothing. It answers one question: "what's the air like right now?" and the agent decides what to do about it. The threshold logic, the hysteresis, the delivery, the scheduling all of that lives in the agent where it belongs.
The check_air_quality_threshold tool is the key design piece. It returns a boolean, purpose-built for polling. Your agent's scheduler fires it on whatever cadence makes sense, checks the result, and acts. No webhook subscriptions, no callback URLs, no stored preferences.
What's on the Site
The landing page at air.drkpxl.com has the connection config, example alert recipes for Hermes, OpenClaw, and Claude, and screenshots of it working in Telegram, Discord, and Claude. The source and config files are on GitHub.
Limitations
- US coverage only: AirNow.gov is a US government service
- Current conditions only: no historical data or forecasting
- Read-only: Tiny Air tells you the AQI, your agent decides what to do about it