jiskta-mcp
OfficialProvides geocoding (address to coordinates) and reverse geocoding (coordinates to nearest address) using OpenStreetMap data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jiskta-mcp What was the average NO2 level in Brussels in 2023?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jiskta-mcp
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-mcpAvailable tools
Tool | Description |
| Historical air quality + ERA5 met data for a bounding box |
| Same, for a single lat/lon point |
| Dry-run — check credit cost before querying |
| Address → coordinates (113M housenumbers, global) |
| Coordinates → nearest address |
| Coordinate → NUTS3 region + WRI water risk + nearest facility |
| WRI Aqueduct 4.0 water risk for a bounding box |
| Nearest E-PRTR industrial facilities within a radius |
| Check available data months before querying |
| 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.
Links
API documentation: jiskta.com/docs
Python SDK: github.com/jiskta/jiskta-python
Examples: github.com/jiskta/jiskta-examples
Available Tools
10 toolsenrich_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
spatial_linkA
Aggregate raster climate data to administrative regions (NUTS3 or country).
Performs a spatial join — takes one or more raster datasets and computes the mean value for each NUTS3 region or country that overlaps the bounding box. Returns a table of regions with mean values per dataset.
Useful for regional comparison, portfolio screening, or joining climate data with official statistics by administrative area.
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. "2022-01-01" time_end: End date, e.g. "2022-12-31" datasets: List of dataset source names to aggregate. Options: "cams_no2", "cams_pm2p5", "cams_pm10", "cams_o3", "era5_t2m", "era5_tp", "era5_blh", "era5_u10", "era5_v10", "viirs_radiance", "odiac_co2", "ghsl_pop", "ghsl_built", "aqueduct_bws", "aqueduct_bwd", "aqueduct_rfr", "aqueduct_drr" resolution: "nuts3" (EU administrative regions) or "country" (global)
Returns: JSON with a list of regions, each containing the mean value of each requested dataset. Also includes region name, country, and cell count.
Inputs: lat_min (required), lat_max (required), lon_min (required), lon_max (required), +4 more. 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
Scored across 10 tools
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).
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.
10 tools is well-scoped for the environmental data domain, covering geocoding, climate queries, water risk, and facility data without being overwhelming or sparse.
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
Related MCP Connectors
Real-world data for agents: air quality, geocoding, quakes, holidays, web search
The official Model Context Protocol server for Ambee. It gives any MCP-compatible AI assistant — Claude, ChatGPT, Cursor, VS Code, Ollama, and more direct access to live air quality, pollen, and weather data. To get started, including information on signing up and obtaining your Ambee key, check out the Ambee documentation on https://docs.ambeedata.com
Access Pollinations models and API capabilities through agent tools.
Real-time data API for AI Agents: stocks, weather, forex, logistics, search, scrape, news, IP.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceProvides 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
- AlicenseNot gradedqualityDmaintenanceProvides 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
- FlicenseNot gradedqualityDmaintenanceProvides real-time weather, forecasts, historical data, and air quality for AI assistants via the Model Context Protocol.-
- AlicenseAqualityAmaintenanceConnects AI assistants to Swiss environmental data from BAFU, including air quality, hydrology, natural hazards, and open datasets, with no API keys required.2126 PyPI1MIT