Skip to main content
Glama
jiskta-mcp
by Jiskta

jiskta-mcp

PyPI License: MIT

MCP server for the Jiskta Climate & Environmental Data API. Gives AI assistants direct access to historical air quality, ERA5 meteorology, water risk, geocoding, and industrial facility data — without writing any code.

What is MCP?

Model Context Protocol is an open standard that lets AI tools (Claude Desktop, Cursor, Cline, Copilot Workspace) call external APIs in conversation. This package runs on your machine, not on any server — it just proxies calls to the Jiskta API using your API key.

Related MCP server: climate-risk-mcp-server

Quickstart

Get an API key: jiskta.com/dashboard — free credits included on signup.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "jiskta": {
      "command": "uvx",
      "args": ["jiskta-mcp"],
      "env": {
        "JISKTA_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

No Python installation needed — uvx downloads and runs the package automatically.

Cursor / Cline / other MCP clients

Use the same config format your tool supports. The command is always uvx jiskta-mcp with JISKTA_API_KEY set.

Manual install

pip install jiskta-mcp
export JISKTA_API_KEY=sk_live_...
jiskta-mcp

Available tools

Tool

Description

query_climate

Historical air quality + ERA5 met data for a bounding box

query_climate_point

Same, for a single lat/lon point

estimate_query_cost

Dry-run — check credit cost before querying

geocode

Address → coordinates (113M housenumbers, global)

reverse_geocode

Coordinates → nearest address

enrich_location

Coordinate → NUTS3 region + WRI water risk + nearest facility

water_risk

WRI Aqueduct 4.0 water risk for a bounding box

find_facilities

Nearest E-PRTR industrial facilities within a radius

get_coverage

Check available data months before querying

spatial_link

Aggregate raster data to NUTS3 regions or countries

Example conversations

Once connected, you can ask things like:

"What was the average NO₂ level in Brussels in 2023?"

"Is there any industrial pollution risk near Industrieweg 1, Antwerp?"

"Compare PM2.5 trends across NUTS3 regions in the Ruhr area from 2018 to 2023."

"What's the water stress level for our distribution centre at 51.5°N, 4.3°E?"

"How many days did PM10 exceed the EU limit in Paris last year?"

Data sources

  • Air quality: Copernicus CAMS EU reanalysis (0.1°, 2013–present) and CAMS Global (0.75°, 2020–present)

  • Meteorology: ECMWF ERA5 reanalysis (0.25°, 2013–present)

  • Water risk: WRI Aqueduct 4.0 (2023), global

  • Industrial facilities: EEA E-PRTR, ~97,000 EU facilities (CC BY 4.0)

  • Geocoding: OpenStreetMap (CC BY-SA)

Pricing

Credits are consumed per tile scanned (geographic area × time period × variable). Use estimate_query_cost before large queries. Top up at jiskta.com/dashboard.

Available Tools

10 tools
enrich_locationA

Get administrative region and water risk context for a coordinate.

Returns the NUTS3 administrative region (for EU locations), WRI Aqueduct 4.0 water risk scores, and the nearest E-PRTR industrial facility within 5 km (if any). Useful for site screening and CSRD/ESRS preliminary assessment.

Args: lat: Latitude in decimal degrees lon: Longitude in decimal degrees

Returns: JSON with: - nuts3_id, nuts3_name, country (EU only) - water_stress: bws (baseline water stress), bwd (water depletion), rfr (riverine flood risk), drr (drought risk) — scored 1–5 where 1=Low, 5=Extremely High - nearest_facility: closest industrial facility within 5 km (if any)

Inputs: lat (required), lon (required). Returns: result

estimate_query_costA

Estimate the credit cost of a climate query before running it.

Use this before large queries (multi-year, large bounding box) to check the cost. Returns the number of credits that would be consumed and an estimated row count, without actually running the query.

Args: lat_min: Southern boundary latitude lat_max: Northern boundary latitude lon_min: Western boundary longitude lon_max: Eastern boundary longitude time_start: Start date, e.g. "2020-01" time_end: End date, e.g. "2024-12" variables: Comma-separated variable names

Returns: Estimated credit cost and row count.

Inputs: lat_min (required), lat_max (required), lon_min (required), lon_max (required), +3 more. Returns: result

find_facilitiesA

Find E-PRTR industrial facilities near a location.

Searches the European Pollutant Release and Transfer Register (E-PRTR) database of ~97,000 verified industrial facilities in the EU. Returns facilities sorted by distance with their sector, annual NOₓ, PM10, PM2.5, and CO₂ emissions.

Useful for CSRD ESRS E2-9 §55 industrial proximity assessment.

Args: lat: Latitude of the site location lon: Longitude of the site location radius_km: Search radius in kilometres (default 10, max 500) max_results: Maximum number of facilities to return (default 20)

Returns: JSON array of facilities with name, sector, distance, and available emission data.

Inputs: lat (required), lon (required), radius_km, max_results. Returns: result

geocodeA

Convert a street address to coordinates (forward geocoding).

Resolves any address worldwide to a latitude/longitude pair using the Jiskta geocoding index (113M housenumbers, global coverage).

Args: address: Free-form address string, e.g. "10 Downing Street, London" or "Eiffel Tower, Paris" or "Potsdamer Platz 1, Berlin, 10785, DE"

Returns: JSON with lat, lon, confidence score (0–1), and matched address components (street, city, postcode, country). confidence=1.0 means exact housenumber match; confidence=0.7 means street centroid; confidence=0.5 means postcode centroid.

Inputs: address (required). Returns: result

get_coverageA

Check which months of climate data are available.

Returns the full data availability index — which months have been downloaded and what quality tier they are (validated reanalysis, interim reanalysis, or NRT). Use this to understand what date ranges are available before running a query.

No API key required, no credits consumed.

Returns: JSON with coverage by pollutant and month, including data type and download timestamp.

Inputs: no named parameters. Returns: result

query_climateA

Query historical climate and air quality data for a geographic region.

Returns Copernicus CAMS reanalysis (NO₂, PM2.5, PM10, O₃) and/or ECMWF ERA5 meteorological data (temperature, precipitation, wind, boundary layer height) for any location on Earth.

Args: lat_min: Southern boundary latitude (decimal degrees, e.g. 48.8) lat_max: Northern boundary latitude (decimal degrees, e.g. 49.0) lon_min: Western boundary longitude (decimal degrees, e.g. 2.2) lon_max: Eastern boundary longitude (decimal degrees, e.g. 2.5) time_start: Start of the period, e.g. "2022-01-01" or "2022-01" time_end: End of the period, e.g. "2023-12-31" or "2023-12" variables: Comma-separated list of variables to query. Air quality: no2, pm2p5, pm10, o3. Meteorology: era5_t2m (2m temperature), era5_tp (precipitation), era5_blh (boundary layer height), era5_u10, era5_v10 (wind). Default: "no2" aggregate: Time aggregation — "hourly", "daily", "monthly", "seasonal", or "trend" (OLS slope per year). Default: "monthly" format: Output format — "csv" (rows of data) or "stats" (summary: min/max/mean). Default: "csv"

Returns: CSV data or stats summary depending on the format argument. Credits used are shown in the response metadata.

Examples: - Air quality in Paris 2022: lat_min=48.8, lat_max=49.0, lon_min=2.2, lon_max=2.5, time_start="2022-01", time_end="2022-12", variables="no2,pm2p5" - 5-year NO₂ trend for London: aggregate="trend", time_start="2020-01", time_end="2024-12"

Inputs: lat_min (required), lat_max (required), lon_min (required), lon_max (required), +5 more. Returns: result

query_climate_pointA

Query climate data for a single point location (snaps to nearest grid cell).

Convenience wrapper around query_climate for point queries. Use this when you have a specific address or coordinate rather than a bounding box region. The coordinate is snapped to the nearest CAMS 0.1° grid cell centre.

Args: lat: Latitude in decimal degrees (e.g. 48.8566 for Paris) lon: Longitude in decimal degrees (e.g. 2.3522 for Paris) time_start: Start date, e.g. "2022-01" or "2022-01-01" time_end: End date, e.g. "2024-12" or "2024-12-31" variables: Comma-separated variable names. Default: "no2,pm2p5,pm10" aggregate: "hourly", "daily", "monthly", "seasonal", or "trend"

Returns: CSV with time series data at the nearest grid cell.

Inputs: lat (required), lon (required), time_start (required), time_end (required), +2 more. Returns: result

reverse_geocodeA

Convert coordinates to a street address (reverse geocoding).

Args: lat: Latitude in decimal degrees lon: Longitude in decimal degrees

Returns: JSON with nearest address: street, housenumber, city, postcode, country.

Inputs: lat (required), lon (required). Returns: result

water_riskA

Get WRI Aqueduct 4.0 water risk scores for a geographic region.

Returns water stress, depletion, flood risk, and drought risk for every 0.1° grid cell in the bounding box. Useful for CSRD ESRS E3-1 §27 (water stress) and E3-3 §38 (flood/drought risk) portfolio screening.

Scores: 1=Low, 2=Low-Medium, 3=Medium-High, 4=High, 5=Extremely High. Source: WRI Aqueduct 4.0 (2023). No credits consumed.

Args: lat_min: Southern boundary latitude lat_max: Northern boundary latitude lon_min: Western boundary longitude lon_max: Eastern boundary longitude Max bounding box: 50°×50°

Returns: JSON array of grid cells with bws, bwd, rfr, drr scores and labels.

Inputs: lat_min (required), lat_max (required), lon_min (required), lon_max (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 10 tools

    Disambiguation4/5

    Tools are largely distinct, but enrich_location overlaps with find_facilities and water_risk in purpose, potentially causing confusion. However, descriptions clarify the differences (point vs. area, limited vs. full search).

    Naming Consistency4/5

    Most tools use verb_noun snake_case (e.g., enrich_location, query_climate), but geocode and reverse_geocode have inconsistent verb placement, and get_coverage uses a different verb prefix. Overall pattern is clear.

    Tool Count5/5

    10 tools is well-scoped for the environmental data domain, covering geocoding, climate queries, water risk, and facility data without being overwhelming or sparse.

    Completeness4/5

    Core workflows (geocode, query climate, water risk, facility lookup) are covered. Minor gaps exist, such as a tool to list all available variables, but the set handles typical use cases well.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      Provides natural language access to environmental data including air quality measurements, greenhouse gas emissions, and facility records. It enables users to perform geographic searches, trend analysis, and proximity-based queries using data from sources like OpenAQ and Climate TRACE.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides AI agents with access to CO2 emissions data, climate projections, and risk assessments for heat, flooding, and drought, supporting ESG analysis and CSRD compliance.
      MIT
    • A
      license
      A
      quality
      A
      maintenance
      Connects AI assistants to Swiss environmental data from BAFU, including air quality, hydrology, natural hazards, and open datasets, with no API keys required.
      21
      26 PyPI
      1
      MIT