Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

Openaq MCP Server

de cyanheadsversión 0.4.1i★ –iComputadora o nube
Nombre en el registroio.github.cyanheads/openaq-mcp-server

Instalar

Resumen

Descripción del creador (original en inglés)

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

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Computadora o nube
  • Transporte: stdio, Streamable HTTP
  • Categoría: Derecho y datos públicos
  • Debes completar: OPENAQ_API_KEY

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

  • Revisiones básicas: 1 de 2 superadas No superada
  • Se ejecuta en el servidor del creador: lo que le pidas pasa por su servidor.
  • Debes completar tú: OPENAQ_API_KEY, OPENAQ_API_BASE_URL, CANVAS_PROVIDER_TYPE, OPENAQ_ENABLE_CANVAS_DROP, MCP_LOG_LEVEL

Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.

Necesitas

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Funciona en Claude para web, escritorio y móvil:

  1. Abre Settings → Connectors
  2. Presiona Add custom connector
  3. Pega la dirección de abajo y presiona Add
  4. Si te pide iniciar sesión, inicia sesión en el servicio del creador
SettingsConnectors1+ Add2https://…3
https://openaq.caseyjhand.com/mcp

O ejecútalo en tu computadora

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "openaq": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openaq-mcp-server",
        "run",
        "start:stdio"
      ],
      "env": {
        "OPENAQ_API_KEY": "your-value",
        "OPENAQ_API_BASE_URL": "your-value",
        "CANVAS_PROVIDER_TYPE": "your-value",
        "OPENAQ_ENABLE_CANVAS_DROP": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add --transport http openaq https://openaq.caseyjhand.com/mcp

O ejecútalo en tu computadora

claude mcp add openaq --env OPENAQ_API_KEY=your-value --env OPENAQ_API_BASE_URL=your-value --env CANVAS_PROVIDER_TYPE=your-value --env OPENAQ_ENABLE_CANVAS_DROP=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/openaq-mcp-server run start:stdio

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "openaq": {
      "url": "https://openaq.caseyjhand.com/mcp"
    }
  }
}

O ejecútalo en tu computadora

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "openaq": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openaq-mcp-server",
        "run",
        "start:stdio"
      ],
      "env": {
        "OPENAQ_API_KEY": "your-value",
        "OPENAQ_API_BASE_URL": "your-value",
        "CANVAS_PROVIDER_TYPE": "your-value",
        "OPENAQ_ENABLE_CANVAS_DROP": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "openaq": {
      "type": "http",
      "url": "https://openaq.caseyjhand.com/mcp"
    }
  }
}

O ejecútalo en tu computadora

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "openaq": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/openaq-mcp-server",
        "run",
        "start:stdio"
      ],
      "env": {
        "OPENAQ_API_KEY": "your-value",
        "OPENAQ_API_BASE_URL": "your-value",
        "CANVAS_PROVIDER_TYPE": "your-value",
        "OPENAQ_ENABLE_CANVAS_DROP": "your-value",
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

ChatGPT solo se conecta a servidores en internet:

  1. Abre ChatGPT en la web → Settings → Connectors (Apps)
  2. Presiona Create o Add (en algunos planes primero hay que activar Developer mode en Advanced)
  3. Pega la dirección de abajo, ponle un nombre y guarda
  4. Si te pide iniciar sesión, inicia sesión en el servicio del creador
SettingsConnectors1+ Create2https://…3
https://openaq.caseyjhand.com/mcp

Los nombres de los menús pueden variar un poco según el plan y con el tiempo.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

  • OPENAQ_API_KEY secreto obligatorio env
    OpenAQ v3 API key, sent as the X-API-Key header. Free from openaq.org.
  • OPENAQ_API_BASE_URL env
    OpenAQ v3 API base URL override (testing / proxy).
  • CANVAS_PROVIDER_TYPE env
    Set to 'duckdb' to enable DataCanvas SQL over large measurement series.
  • OPENAQ_ENABLE_CANVAS_DROP env
    Enable deletion of complete staged canvases; requires CANVAS_PROVIDER_TYPE=duckdb.
  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

El servidor no respondió la última vez que lo revisamos, así que no pudimos leer sus herramientas.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 9 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub cyanheads, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • ✕ No superada

    El endpoint responde

    No respondió en 6 segundos cuando lo revisamos

  • – No aplica

    Inicio de sesión con OAuth

    No respondió en 6 segundos cuando lo revisamos

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Aún sin revisar; leemos la lista de herramientas cuando revisamos el endpoint

Comparado con otros en Derecho y datos públicosi

  • Más estrellas que el 0% de los otros 1768 servidores de esta categoría
  • Publicado en el registro más recientemente que el 43% de los otros 1768 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 17% de los otros 1768 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Openaq MCP Server?

Superó 1 de 2 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

Debes completar: OPENAQ_API_KEY

¿Se ejecuta en mi computadora o en la nube?

Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.4.1) llegó al registro hace 44 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.

¿Qué puedo usar en su lugar?

En la misma categoría: Voydar, Contract Compass, Ckan MCP Server

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Voydar

Maritime intelligence: vessels, tracks, port calls, company fleets and sanctions screening, sourced.

de voydar.comInicialActualizado hoy

Se ejecuta en la nube✓ voydar.com

Contract Compass

Korean public procurement law: rule-engine rulings, statutes search, live court precedents

de sallim-appInicialActualizado hoy

Se ejecuta en la nube✓ sallim.app

Ckan MCP Server

MCP server for interacting with CKAN open data portals

de ondataEn crecimiento↓ 2,5 mil/semActualizado hoy

Se ejecuta en tu computadora

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

@cyanheads/openaq-mcp-server Find air-quality monitoring stations, read latest sensor values, and pull historical pollutant series via MCP. STDIO or Streamable HTTP. 8 Tools (7 enabled by default) • 2 Resources

Public Hosted Server: https://openaq.caseyjhand.com/mcp


Overview

Measured air quality from the OpenAQ v3 API: physical-sensor observations from government reference monitors and research-grade sensors worldwide. Find monitoring stations, read current values, and pull historical pollutant series from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.

Tools
ToolDescription
openaq_find_locationsFind monitoring stations near a point, in a bounding box, or by country; the location ids the other tools take
openaq_get_readingsLatest value for every sensor at a station, labeled with its pollutant and unit
openaq_get_measurementsHistorical series for one pollutant at one station, raw or rolled up hourly/daily
openaq_list_parametersPollutant catalog with canonical units; maps a pollutant and unit to its parameter id
openaq_list_countriesCountry coverage: data span and the parameters measured in each
openaq_dataframe_describeList the tables and columns staged on a DataCanvas
openaq_dataframe_queryRun a read-only SQL SELECT over staged measurement series
openaq_dataframe_dropDelete a complete staged canvas; opt-in with OPENAQ_ENABLE_CANVAS_DROP=true
Resources
ResourceDescription
openaq://location/{locationId}Metadata for one station: coordinates, provider, sensors with units, data span
openaq://parametersFull pollutant and unit catalog

Both resources mirror tool output, so tool-only clients lose nothing.

Capability reference

openaq_find_locations tool
  • Scope by coordinates with radius (metres, 1–25000, default 12000), bbox, and/or iso (a code from openaq_list_countries); at least one is required, and coordinates and bbox exclude each other. parametersId, monitor, mobile, and providersId narrow further; up to 100 stations per page (limit, default 20), 1-based page
  • Each station carries id, distanceMeters (coordinate search only), provider/providerId, isMonitor/isMobile, its parameters with units, and the datetimeFirst/datetimeLast span; coordinates, country, and provider are null when OpenAQ lists none
  • totalCount counts stations through the current page and is a floor when totalCountIsLowerBound is set; no match fails as no_locations_found, a page past the end as page_exhausted

openaq_get_readings tool
  • A locationId, or coordinates plus parametersId to resolve the nearest station within 25 km that measures it (compared across up to 1,000 matching stations; a full 1,000 adds a notice); with locationId, parametersId optionally filters to one parameter
  • One reading per sensor with value, unit, sensorId, and datetimeUtc/datetimeLocal, plus the station's provider, providerId, timezone, and datetimeLast
  • Misses are typed: location_not_found, parameter_not_at_location (with the station's available ids), no_station_near_coordinates, no_recent_values

openaq_get_measurements tool
  • Requires locationId and parametersId; datetimeFrom/datetimeTo accept UTC timestamps or station-local YYYY-MM-DD dates (UTC days when the station has no timezone). aggregation is raw (default), hourly, or daily; up to 5,000 rows per call
  • Returns series, sensorId, pulledCount, pullComplete, effectiveRange, and station provider, providerId, and timezone. totalCount is a floor when totalCountIsLowerBound is set; rollups add summary statistics, gapCount, the first 20 missing intervals as gaps, and a notice when edge buckets are clipped
  • Past 100 rows, series is a preview (truncated) and the pulled rows stage on a DataCanvas as measurements_ (canvasId, tableName) when CANVAS_PROVIDER_TYPE=duckdb; a supplied canvas_id stages onto that canvas at any size. One table per sensor: a second sensor adds a table to join against, and re-staging the same sensor overwrites its earlier series

openaq_list_parameters tool
  • Optional case-insensitive query over code, display name, and description; pollutantsOnly drops meteorological and particle-count channels
  • Rows carry id, name, displayName, unit, and description; one pollutant can appear under several ids by unit (CO is 4 in µg/m³, 8 in ppm, 102 in ppb)

openaq_list_countries tool
  • Optional query (a two-letter value matches an ISO 3166-1 alpha-2 code first; otherwise code or name substrings match) and parametersId; up to 100 per page (limit, default 20), 1-based page
  • Rows carry code (the iso value for openaq_find_locations), name, the datetimeFirst/datetimeLast span, and the parameters measured anywhere in the country; totalCount is the full filtered count

openaq_dataframe_describe tool
  • Takes a canvas_id from openaq_get_measurements and returns each staged table's name, rowCount, and columns. Call it before openaq_dataframe_query: the staged table is flat (min, sd) while the inline series nests those under summary
  • Fails as canvas_unavailable unless CANVAS_PROVIDER_TYPE=duckdb, or canvas_not_found for an unknown or expired id

openaq_dataframe_query tool
  • A canvas_id and one read-only SELECT; writes, DDL, and file/network table functions are rejected
  • At most 200 rows per response, with truncated set when the cap cut the result; page with ORDER BY plus LIMIT/OFFSET
  • Fails as canvas_unavailable, canvas_not_found, or missing_table

openaq_dataframe_drop tool
  • Registered only with OPENAQ_ENABLE_CANVAS_DROP=true; calls fail as canvas_unavailable unless CANVAS_PROVIDER_TYPE=duckdb. When disabled, the HTTP landing page shows the enable hint and tools/list omits the tool
  • Takes a canvas_id and deletes that whole canvas, including all staged tables. Other agents sharing the id lose access; OpenAQ's source data is unaffected
  • Returns the requested canvasId and dropped: true when deleted, false when no reachable canvas exists. With authentication off, callers share a tenant: anyone holding an id can delete its canvas when enabled

openaq://location/{locationId} resource
  • application/json: name, locality, timezone, country, provider, isMonitor/isMobile, coordinates, sensors (each with parameterId and unit), and the datetimeFirst/datetimeLast span
  • locationId comes from openaq_find_locations; cached 5 minutes

openaq://parameters resource
  • application/json catalog, the same rows as an unfiltered openaq_list_parameters
  • Cached 1 hour

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

OpenAQ-specific:

  • One typed client over the OpenAQ v3 REST API: X-API-Key auth, retry with backoff, and typed upstream failures (invalid_api_key, rate_limited, upstream_timeout, upstream_error) on every OpenAQ call
  • Hides the v3 location → sensor → measurement hierarchy: readings join the latest feed to the station's sensor map, and measurements resolve a station plus parameter to its sensor
  • Coordinates and bbox corners are range-checked and contradictory search scopes rejected before any request reaches OpenAQ
  • Large measurement series stage on a DataCanvas for read-only DuckDB SQL, one table per sensor, so two series on one canvas_id can be joined

Agent-friendly output:

  • Measured, not modeled: a search with no station fails as no_locations_found or no_station_near_coordinates, stated as no coverage rather than clean air
  • Units travel with every value and are never converted; parametersId selects pollutant and unit together
  • Freshness and truncation are explicit: per-value timestamps and datetimeLast, and totalCount / truncated / notice on capped results

Getting started

Public Hosted Instance

A public instance is available at https://openaq.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:

{

"mcpServers": { "openaq-mcp-server": { "type": "streamable-http", "url": "https://openaq.caseyjhand.com/mcp" } } }

Self-Hosted / Local

Add the following to your MCP client configuration file.

{

"mcpServers": { "openaq-mcp-server": { "type": "stdio", "command": "bunx", "args": ["@cyanheads/openaq-mcp-server@latest"], "env": { "MCP_TRANSPORT_TYPE": "stdio", "OPENAQ_API_KEY": "your-api-key" } } } }

Or with npx (no Bun required):

{

"mcpServers": { "openaq-mcp-server": { "type": "stdio", "command": "npx", "args": ["-y", "@cyanheads/openaq-mcp-server@latest"], "env": { "MCP_TRANSPORT_TYPE": "stdio", "OPENAQ_API_KEY": "your-api-key" } } } }

Or with Docker:

{

"mcpServers": { "openaq-mcp-server": { "type": "stdio", "command": "docker", "args": [ "run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "-e", "OPENAQ_API_KEY=your-api-key", "ghcr.io/cyanheads/openaq-mcp-server:latest" ] } } }

Add `"CANVAS_PROVIDER_TYPE": "du

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx