mcpbeat Sign in

Openaq MCP Server

answering

Openaq MCP Server is answering right now. Last checked 5 min ago. 71 installs a week from npm. It exposes 7 tools. Last commit 25 Aug 2026.

Find air-quality stations and read pollutant observations from government monitors via OpenAQ v3.

Installs per day peak 157 · avg 15 · +74% w/w
a month agotoday
Uptime history 47 days of history · worst day 0%
47 days agonow
100.0%
Uptime 24h
92 of 92 checks
7
Tools
read from the server
350 ms
Response time
average over 24h
71
Installs / week
npm and PyPI

What changed 8

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 25 August 2026. No other catalogue keeps this.

25 Aug 7 tools changed the parameters they ask for openaq_dataframe_describe, openaq_dataframe_query, openaq_find_locations and 4 more
25 Aug a tool changed version

Nothing serious here today

Today is the operative word: we check Openaq MCP Server every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 5 min ago.

run in your terminal
claude mcp add openaq-mcp-server --transport http https://openaq.caseyjhand.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "openaq-mcp-server": {
      "url": "https://openaq.caseyjhand.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.openaq-mcp-server]
url = "https://openaq.caseyjhand.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "openaq-mcp-server": {
      "url": "https://openaq.caseyjhand.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "openaq-mcp-server": {
      "url": "https://openaq.caseyjhand.com/mcp"
    }
  }
}

This one needs environment variables set before it will start: OPENAQ_API_KEY (OpenAQ v3 API key, sent as the X-API-Key header. Free from openaq.org.), OPENAQ_API_BASE_URL (OpenAQ v3 API base URL override (testing / proxy).), CANVAS_PROVIDER_TYPE (Set to 'duckdb' to enable DataCanvas SQL over large measurement series.), MCP_HTTP_HOST (The hostname for the HTTP server.), MCP_HTTP_PORT (The port to run the HTTP server on.), MCP_HTTP_ENDPOINT_PATH (The endpoint path for the MCP server.), MCP_AUTH_MODE (Authentication mode to use: 'none', 'jwt', or 'oauth'.), MCP_LOG_LEVEL (Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').). The author declared them in the registry entry; get the values from the project itself.

Available tools 7

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

openaq
openaq_dataframe_describe
List the tables and columns staged on a DataCanvas so you can write valid SQL for openaq_dataframe_query without guessing column names. Returns each measurement table (measurements_<sensorId>) with its row count and column names. Requires DataCanvas to be enabled.
openaq_dataframe_query
Run a read-only SQL SELECT against the measurement tables openaq_get_measurements staged on a DataCanvas. Reference tables by the name the measurements call returned (measurements_<sensorId>). For aggregation (monthly means, exceedance counts) and cross-sensor comparison over series too large to inline. Only SELECT is allowed — writes, DDL, and file/network table functions are rejected.
openaq_find_locations
Find air-quality monitoring stations (measured by physical sensors, not modeled) near a point, within a bounding box, or by country. Returns each station's id, name, coordinates, distance from the query point (when searching by coordinates), country, provider, the parameters its sensors measure, and the timestamp of its most recent data (datetimeLast). Required first step: openaq_get_readings and openaq_get_measurements key on the location id this returns. Coverage is uneven and real — a station only reports the parameters it measures, and the absence of a nearby station means no monitoring there, not clean air. For dense modeled coverage anywhere on Earth, use open-meteo-mcp-server's air-quality tool instead.
openaq_get_measurements
Historical measurement series for one pollutant at one station over a date range — for trend analysis and "was last week worse than the monthly average?". Pass a locationId and a parametersId and work in stations — you get the series for that pollutant at that station. Choose aggregation: raw (every reported value), hourly, or daily — daily and hourly add a per-bucket statistical summary (min, median, max, mean, sd). Large ranges produce thousands of rows and spill to a DataCanvas: the response returns a preview plus a canvasId and table name you query with openaq_dataframe_query. Values carry their unit; the server never converts between µg/m³, ppm, and ppb.
openaq_get_readings
Latest measured value for every sensor at a monitoring station — the current-conditions tool. Returns one record per parameter, each with the value, its unit, the UTC and local timestamp, and the sensor id, joined so every value carries its pollutant and unit (the raw latest feed is keyed only by sensor id). Pass a locationId from openaq_find_locations, or pass coordinates to auto-resolve to the nearest station that measures the requested parametersId. Data recency varies by station reporting cadence — read each value's timestamp to know whether "latest" is minutes or hours old. These are measured observations with coverage gaps, not a modeled grid.
openaq_list_countries
Catalog of country-level coverage: id, ISO code, name, the date span of available station data (datetimeFirst/datetimeLast), and which parameters are measured anywhere in that country. The availability check before a regional sweep — answers "which countries have NO2 monitoring?" and tells you whether a country has recent data before you call openaq_find_locations. Coverage is uneven worldwide; this surfaces where measured data exists.
openaq_list_parameters
Catalog of every measurable pollutant and its canonical unit: id, code, display name, unit, and a one-line description (pm25, pm10, o3, no2, so2, co, bc, and ~38 more). This is the unit-disambiguation reference — the same pollutant exists under several ids with different units (CO is id 4 in µg/m³, id 8 in ppm, id 102 in ppb), so use this to pick the exact parametersId for openaq_find_locations / openaq_get_readings / openaq_get_measurements and to interpret a reading's unit. A small bounded catalog fetched live from OpenAQ.

Endpoints

URLTransportStateLatencyChecked
https://openaq.caseyjhand.com/mcp streamable-http answering 405 ms 5 min ago

Alternatives to Openaq MCP Server

same job, measured the same way
UK Air Quality MCP Server from MCPBundles
by mcpbundles

Access UK air quality data, monitoring sites, and hourly pollutant measurements across regions

answering
I
Foam Observability
by foam-ai

Query application logs, traces, and metrics from your AI coding assistant via Foam's MCP server.

answering
Semantica AI — AI Search Visibility
by ai-semantica

Monitor brand visibility, citations, competitors, sentiment, and GEO performance in AI search.

answering
Spanly
by spanly

MCP observability. Query live traffic, errors, duration, and alerts from your AI agent.

answering
MC-Data Monitor
by evozim

SQL pipeline observability and DBT integration monitor.

answering
whatmount — TV and monitor mount facts
by whatmount

VESA pattern, dimensions and weight per TV or monitor model, from the makers' manuals. Read-only.

3 tools answering
Vivere
by vivere

Know when cron jobs and AI agents stop running: create monitors and check in from your agent.

7 tools answering
mttrly
by mttrly

AI-powered incident management and server monitoring via MCP.

answering

Openaq MCP Server — questions

Answers built from our own checks of this server.

What can Openaq MCP Server do?
It exposes 7 tools, read directly from the server on our last check. Among them: openaq_dataframe_describe, openaq_dataframe_query, openaq_find_locations, openaq_get_measurements, openaq_get_readings, openaq_list_countries and 1 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Openaq MCP Server working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 350 ms. The bar chart above shows every period we have measured.
How do I connect Openaq MCP Server?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Openaq MCP Server need an API key?
No. Openaq MCP Server completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 7 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Openaq MCP Server?
It answers our handshake in 350 ms on average, which is faster than 44% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Openaq MCP Server?
The npm package @cyanheads/openaq-mcp-server was installed 71 times in the last week. Week over week that is +74%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Openaq MCP Server open source?
Yes — it is published under the Apache-2.0 licence, written in TypeScript, 2 stars on GitHub and 12 open issues. The source link is on this page, so you can read exactly what it does with your data before you connect it.