Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for openaq-mcp-server

Pod holds 18 of 21 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to openaq-mcp-server.

Most discussed

bug(definitions): id inputs accept non-positive values — raw 422 on locationId, false no-coverage on parametersId

Server version

0.1.7

mcp-ts-core version

0.11.0

Runtime

Bun

Runtime version

Bun 1.3.14

Transport

HTTP (Streamable HTTP)

OS

macOS 26.1

Description

Six numeric id inputs are z.number().int() with no lower bound, and tools/list advertises "minimum": -9007199254740991 on each: locationId and parametersId on openaq_get_measurements and openaq_get_readings, and parametersId on openaq_find_locations and openaq_list_countries.

A non-positive…

Read the thread · 2026-08-13 · closed · 3 comments

feat(outputs): add station provider to get_readings, and provider plus timezone to get_measurements

Use case

Before citing a reading, a practitioner needs to know who operated the monitor, and they need the station timezone to read hourly and daily periods. Today openaq_get_readings returns timezone but no provider, and openaq_get_measurements returns neither, so each call needs a follow-up openaq://location/{id} read. The README's data-use section says openaq_get_readings returns provider, which isn't true yet.

Proposed behavior

Add the station's provider to location…

Read the thread · 2026-08-11 · closed · 3 comments

bug(openaq_get_measurements): date-only ranges clip station-local daily buckets and drop the last hour; missing intervals go unreported

Server version

0.1.7

mcp-ts-core version

0.11.0

Runtime

Bun

Runtime version

Bun 1.3.14

Transport

HTTP (Streamable HTTP)

OS

macOS 26.1

Description

OpenAQ computes daily rollups over each station's local calendar day (docs). openaq_get_measurements expands a date-only range to UTC bounds instead (T00:00:00Z to T23:59:59Z), so any station off UTC gets a partial-day bucket at each edge. That bucket's…

Read the thread · 2026-08-11 · closed · 3 comments

bug(openaq_dataframe_query): a capped result reports the cap as the full count and drops the truncation flag

Server version

0.1.7

mcp-ts-core version

0.11.0

Runtime

Bun 1.3.14

Transport

stdio

OS

macOS 26.1

Description

openaq_dataframe_query bounds its result only at the canvas defaultRowLimit of 10,000 rows, and tells the caller nothing when it hits that bound.

Three defects at one call site. The handler runs instance.query(sql, { signal }) with no rowLimit or preview, so 10,000 rows of an arbitrary projection can land in one response. The DuckDB provider…

Read the thread · 2026-08-11 · closed · 3 comments

bug(format): content and structuredContent expose different row sets

Server version

0.1.7

mcp-ts-core version

0.11.0

Runtime

Bun 1.3.14

Transport

stdio

OS

macOS 26.1

Description

openaq_get_measurements and openaq_dataframe_query put more rows in structuredContent than in content[]. #15 made the measurements text state the split honestly, but a text-only client and a structured-content client still reason over different samples of the same call. The omitted rows are response data, not display metadata.

Related: #15,…

Read the thread · 2026-08-11 · closed · 3 comments

bug(docker): multiarch install crashes in emulated scanner

Server version

0.4.0

mcp-ts-core version

0.13.9

Runtime

Bun

Runtime version

1.4.2

Transport

HTTP (Streamable HTTP)

OS

Docker Buildx on an arm64 host, targeting Linux amd64 and arm64.

Description

The Dockerfile runs the production dependency install on the target platform. For amd64 on an arm64 builder, Bun's Socket scanner subprocess aborts under QEMU, preventing the multiarch image from building. Native compilation succeeds.

Steps…

Read the thread · 2026-09-26 · closed · 2 comments

bug(openaq_get_measurements): canvas inference truncates fractional measurements

Server version

0.3.0

mcp-ts-core version

0.13.9

Runtime

Bun

Runtime version

Bun 1.4.2

Transport

stdio

Description

openaq_get_measurements stages measurements without an explicit schema. Inference from the first 100 rows can truncate later fractions or return numbers as strings, changing SQL results.

Steps to reproduce

  1. Supply 101 OpenAQ-shaped hourly buckets through a stub service: the first 100 have value and summary statistics 0, the last…

Read the thread · 2026-09-26 · closed · 2 comments

bug(outputs): missing coordinates, country, and provider are rendered as 0,0, XX, and Unknown

Server version

0.1.10

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

OS

macOS 27.0

Description

Two output shapers replace missing upstream location data with made-up values:

Read the thread · 2026-09-24 · closed · 1 comment

Most recent

bug(openaq_get_measurements): first matching sensor wins even when it is a dormant duplicate

Server version

0.2.0

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

OS

macOS 27.0

Description

openaq_get_measurements resolves the station's sensor with the first entry whose parameter id matches (location.sensors.find(...) in get-measurements.tool.ts). Some stations carry more than one sensor for the same parameter, and the first can be dormant. The tool then pulls the dormant sensor's series and reports no data…

Read the thread · 2026-09-24 · open · 0 comments

bug(openaq_find_locations): coordinate search pages in id order, so page 1 is not the nearest stations

Server version

0.2.0

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

OS

macOS 27.0

Description

openaq_find_locations with coordinates returns OpenAQ's pages as they come and sorts each page by distance. OpenAQ's /v3/locations can only order by id, so page 1 is the lowest-id matching stations, not the nearest ones. The page description tells callers that "a near-me coordinates search should stay on page 1", which…

Read the thread · 2026-09-24 · open · 0 comments

bug(openaq_find_locations): iso rejects the -99 code openaq_list_countries returns for Dhekelia

Server version

0.1.10

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

OS

macOS 27.0

Description

openaq_list_countries relays every country OpenAQ lists, and its code field tells callers to pass it as iso to openaq_find_locations. OpenAQ lists Dhekelia (country id 7) with the placeholder code -99, which find_locations rejects because iso must be two characters. OpenAQ serves that code as a filter:…

Read the thread · 2026-09-24 · closed · 1 comment

bug(openaq_get_measurements): a limit that does not divide 5000 overshoots the pull ceiling the cap notice states

Server version

0.1.10

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

OS

macOS 27.0

Description

The pager checks allRows.length < MAX_ROWS before each fetch, then appends a whole page. So when limit does not divide 5,000, the pull ends above the ceiling. The staged canvas table and pulledCount report the true count, while the cap notice says Pull capped at 5000 rows, which contradicts them. The default `limit:…

Read the thread · 2026-09-22 · closed · 1 comment

bug(openaq_get_measurements): re-staging the same sensor on a reused canvas silently replaces the earlier table

Server version

0.1.9

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

OS

macOS 27.0

Description

The staged table is named measurements_<sensorId> with no aggregation or range component, and the handler drops that name before registering. Reusing a canvas_id for the same sensor at a different aggregation or window therefore replaces the earlier series, while README and docs/design.md describe reuse as additive…

Read the thread · 2026-09-22 · closed · 1 comment

bug(openaq_get_measurements): a supplied canvas_id is ignored when the result does not spill

Server version

0.1.9

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

stdio

OS

macOS 27.0

Description

openaq_get_measurements accepts a canvas_id to stage a second series onto an existing canvas, but only reads it when the pull is large enough to spill — canvas.acquire sits inside the overflow branch. On a range that fits the inline preview, the id is discarded silently: the call succeeds with no notice, no error, and no…

Read the thread · 2026-09-20 · closed · 1 comment

bug(openaq_get_measurements): a staged canvas returns no runtime pointer to the dataframe tools

Server version

0.1.7

mcp-ts-core version

0.11.0

Runtime

Bun

Runtime version

Bun 1.3.14

Transport

stdio

Description

openaq_get_measurements is the only tool that mints a DataCanvas handle, and the response that mints one names no tool that can read it. An agent holding an opaque canvasId has to already know this server registers openaq_dataframe_describe and openaq_dataframe_query; one that doesn't reports the truncation and stops, or re-calls with a…

Read the thread · 2026-08-13 · closed · 1 comment

feat(openaq_find_locations): expose monitor, mobile, and provider filters

Use case

An air-quality practitioner often needs one station class rather than every sensor in an area: reference monitors for regulatory comparison, fixed stations for a stable series, or one provider's network for consistent methods. openaq_find_locations returns isMonitor, isMobile, and provider but cannot filter on them, and filtering a 100-row page client-side misses matches on later pages.

Proposed behavior

Add three optional filters to openaq_find_locations,…

Read the thread · 2026-08-11 · closed · 1 comment

bug(openaq_list_countries): no limit or page — unfiltered and common-pollutant calls return the whole catalog

Server version

0.1.7

mcp-ts-core version

0.11.0

Runtime

Bun

Runtime version

Bun 1.3.14

Transport

HTTP (Streamable HTTP)

OS

macOS 26.1

Description

openaq_list_countries takes no limit or page. A call without filters returns the whole OpenAQ country catalog on both MCP surfaces, with each country's nested parameter list. parametersId doesn't bound it for common pollutants: parametersId: 2 (PM2.5) matches 156 of 158…

Read the thread · 2026-08-11 · closed · 1 comment

bug(openaq_find_locations): meta.found is a per-page count, so exhausted pages report no coverage and later pages misreport totals

Server version

0.1.7

mcp-ts-core version

0.11.0

Runtime

Bun

Runtime version

Bun 1.3.14

Transport

HTTP (Streamable HTTP)

OS

macOS 26.1

Description

openaq_find_locations reads OpenAQ's meta.found as a total, but on /v3/locations it counts only the page just returned: the row count on a partial page, and ">limit" on any full page, even when nothing follows. So a page past the end throws no_locations_found with coverage recovery, a full last page…

Read the thread · 2026-08-11 · closed · 1 comment

The remaining reports are on the project's issue tracker.