Alexey Sound — sound recordist, Dubai
Find and book a location sound recordist / production sound mixer in Dubai and the UAE.
Description from the maker (original English)
Global weather via Open-Meteo: forecast, historical, marine, air quality, geocoding, elevation.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
MCP_LOG_LEVEL, CANVAS_PROVIDER_TYPE, OPENMETEO_DATAFRAME_DROP_ENABLEDYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://open-meteo.caseyjhand.com/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"open-meteo": {
"command": "npx",
"args": [
"-y",
"@cyanheads/open-meteo-mcp-server"
],
"env": {
"MCP_LOG_LEVEL": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"OPENMETEO_DATAFRAME_DROP_ENABLED": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http open-meteo https://open-meteo.caseyjhand.com/mcpclaude mcp add open-meteo --env MCP_LOG_LEVEL=your-value --env CANVAS_PROVIDER_TYPE=your-value --env OPENMETEO_DATAFRAME_DROP_ENABLED=your-value -- npx -y @cyanheads/open-meteo-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"open-meteo": {
"url": "https://open-meteo.caseyjhand.com/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"open-meteo": {
"command": "npx",
"args": [
"-y",
"@cyanheads/open-meteo-mcp-server"
],
"env": {
"MCP_LOG_LEVEL": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"OPENMETEO_DATAFRAME_DROP_ENABLED": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"open-meteo": {
"type": "http",
"url": "https://open-meteo.caseyjhand.com/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"open-meteo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/open-meteo-mcp-server"
],
"env": {
"MCP_LOG_LEVEL": "your-value",
"CANVAS_PROVIDER_TYPE": "your-value",
"OPENMETEO_DATAFRAME_DROP_ENABLED": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://open-meteo.caseyjhand.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
MCP_LOG_LEVEL envCANVAS_PROVIDER_TYPE envOPENMETEO_DATAFRAME_DROP_ENABLED envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Tool names and descriptions exactly as the server reported them on Nov 7, 2026. The maker wrote them, not us; we show them as plain text.
openmeteo_search_locationsResolve a place name to ranked coordinate matches with country, region, elevation, timezone, and population. Required prerequisite for name-based queries — all weather tools take latitude/longitude, not place names. Search by a bare place name (city, region, or landmark); never f
openmeteo_get_elevationTerrain elevation from the Copernicus Digital Elevation Model (~90m resolution) for one or more coordinate pairs. Accepts up to 1,000 pairs and samples the first 100 in one upstream request; when more were submitted, unprocessed_count says how many remain and next_offset is where
openmeteo_get_forecastWeather forecast for coordinates: hourly and/or daily variables for up to 16 days ahead, with optional past_days (up to 92) for recent history. Use past_days instead of openmeteo_get_historical for dates within the last week, since the archive’s ERA5 components lag by about a wee
openmeteo_get_historicalHistorical weather from the Open-Meteo reanalysis archive (1940–present). Requires start_date and end_date (ISO 8601 date, e.g., "2024-07-01"). With models omitted the archive answers from Best Match, which blends IFS HRES, ERA5, and ERA5-Land seamlessly — so the source varies by
openmeteo_get_marineMarine wave and ocean conditions for a coastal or ocean coordinate: wave height, wave period, wave direction, wind-wave height, swell height, sea-surface temperature. Forecast horizon up to 8 days, with optional past_days (up to 92) for recent history — or start_date and end_date
openmeteo_get_air_qualityModeled CAMS (Copernicus Atmosphere Monitoring Service) air quality: PM2.5, PM10, nitrogen dioxide, sulphur dioxide, ozone, carbon monoxide, dust, pollen, and European/US AQI indices. This is modeled grid data, not measured station readings — for measured data, use openaq-mcp-ser
openmeteo_get_ensembleProbabilistic ensemble weather forecast — up to 64 ensemble members, up to 35 days ahead with optional past_days (0–92). Most models end within 16 days; a model's columns are null past its horizon, and the response notice names where its data ends. Each member's values appear as
openmeteo_get_floodGloFAS (Global Flood Awareness System) daily river discharge (m³/s) from the GloFAS 0.05° grid cell nearest the given coordinates — no river ID needed. The response's latitude and longitude name that cell. It is not reliably on the river intended: a point near a confluence, a pai
openmeteo_get_climateLong-range climate projections from bias-corrected daily CMIP6 models, covering 1950-01-01 to 2050-12-31 at any coordinate. Answers "what will conditions look like through 2050?" — the future-projection counterpart to openmeteo_get_historical (the observed archive, what happened)
openmeteo_dataframe_queryRun a read-only SQL SELECT against tables staged on a DataCanvas by openmeteo_get_forecast, openmeteo_get_historical, openmeteo_get_marine, openmeteo_get_air_quality, openmeteo_get_ensemble, openmeteo_get_flood, or openmeteo_get_climate. Pass the canvas_id returned when any of th
openmeteo_dataframe_describeList the tables and their columns on a DataCanvas staged by openmeteo_get_forecast, openmeteo_get_historical, openmeteo_get_marine, openmeteo_get_air_quality, openmeteo_get_ensemble, openmeteo_get_flood, or openmeteo_get_climate. Call this first to discover table names before que
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 10, 2026
The registry name was verified with the GitHub account cyanheads, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 121 ms (HTTP 200)
No sign-in needed
Read 11 tool descriptions and found no hidden instructions to the AI
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.5.0) reached the registry 13 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Alexey Sound — sound recordist, Dubai, Yelpdata, Pagesdata
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Find and book a location sound recordist / production sound mixer in Dubai and the UAE.
Yelp business data as JSON: search by keyword and location, place details, and the review feed.
Yellow Pages business data as JSON: search by keyword and location, plus full listing details.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@cyanheads/open-meteo-mcp-server Geocode places, fetch global weather forecasts, historical climate, marine conditions, air quality, and terrain elevation via MCP. STDIO or Streamable HTTP. 12 Tools
Public Hosted Server: https://open-meteo.caseyjhand.com/mcp
Global weather from Open-Meteo: forecasts, history back to 1940, marine conditions, air quality, probabilistic ensembles, river discharge, and climate projections. Look up any place by name, pull hourly and daily variables, and run SQL over large results. No API key required.
| Tool | Description |
|---|---|
openmeteo_search_locations | Resolve a place name to ranked coordinates with country, region, timezone, and population |
openmeteo_get_forecast | Current conditions and hourly/daily forecast up to 16 days, with up to 92 past days, from best match or chosen models side by side |
openmeteo_get_historical | Hourly/daily history from the reanalysis archive, 1940 to present |
openmeteo_get_marine | Wave, swell, and sea-surface conditions: current, up to 8 forecast days, or an archive range, in metric or imperial units |
openmeteo_get_air_quality | Modeled CAMS pollutants, pollen, and AQI: current, up to 7 forecast days, or an archive range |
openmeteo_get_elevation | Copernicus DEM terrain elevation: up to 1,000 coordinate pairs, the first 100 sampled per call with the rest reported for resubmission |
openmeteo_get_ensemble | Per-member ensemble forecast (up to 64 members, up to 35 days) for exceedance and uncertainty |
openmeteo_get_flood | GloFAS river discharge: a ~6-month forecast or a date range from 1984, from seamless or chosen v4 models |
openmeteo_get_climate | Bias-corrected daily CMIP6 projections, 1950–2050, across up to 7 models |
openmeteo_dataframe_describe | List the tables and columns staged on a DataCanvas |
openmeteo_dataframe_query | Run a read-only SQL SELECT against staged tables |
openmeteo_dataframe_drop | Remove one staged table or view from a DataCanvas (opt-in) |
The server also publishes an agent skill, open-meteo-guide (skill://open-meteo-guide/SKILL.md, source in skills/open-meteo-guide/): which tool answers which question, plus the gates for exceedance odds, frost, comparisons to a normal, climate shifts, surf spots, river cells, and AQI timing.
openmeteo_search_locations toolname ("Paris", not "Paris, France"), with optional country (ISO 3166-1 alpha-2) and language (default en); count 1–10, default 5timezone, country / country_code, admin1 / admin2, population, and feature_code; no match fails as no_resultsnotice flags a top match with null or sub-100,000 population, which often means a historic exonym ("Bangalore", "Calcutta")en is retried once in the language its script implies; effective_language names it when the retry succeeds (上海 → zh), and results come back localizedopenmeteo_get_forecast toolcurrent_variables, hourly_variables, or daily_variables (up to 50 each); forecast_days 1–16 (default 7), past_days 0–92 (default 0)hourly / daily records with hourly_units / daily_units; current_variables adds a current object from 15-minute data (interval 900) plus current_unitsmodels reads Open-Meteo best_match; models compares deterministic models (e.g. ncep_gfs_seamless, ecmwf_ifs025, dwd_icon_seamless; older spellings like gfs_seamless still resolve). With 2+ models each hourly and daily column carries a model-name suffix, and models is echoed. current_variables takes at most one model (current_multi_model)notice names it, or, when one model is left with unsuffixed columns, says the values cannot be attributed to a model; when every requested model misses, the call fails as coverage_gappast_days over openmeteo_get_historical for the last week, where the archive's ERA5 components lagopenmeteo_get_historical toolstart_date and end_date required (YYYY-MM-DD, from 1940-01-01), plus at least one of hourly_variables / daily_variables, named as on the forecast toolmodels reads Best Match (IFS HRES + ERA5 + ERA5-Land, source varies by date); up to 8 models pin a source. The ERA5 family runs about a week behind, ecmwf_ifs has no delay, and cerra covers Europe onlymodels and the returned date_range; with 2+ models each column carries a model-name suffix. A model with no data at the point (cerra outside Europe) is dropped from a multi-model response; the notice names it, or, when one model is left with unsuffixed columns (era5,cerra), says the values cannot be attributed to a modelopenmeteo_get_marine toolforecast_days 1–8 (upstream default 7) with past_days 0–92, or a start_date / end_date archive range back to at least 2022. Mixing them fails as forecast_window_conflict, a lone date as date_range_incompletecurrent_variables, hourly_variables, or daily_variables (wave height, period, and direction, swell, sea-surface temperature); sheltered water returns near-zero waves, a point well inland returns nulls (named in the notice), a land point near the coast is answered from a nearby sea cell with real values and no notice (check the response's latitude / longitude is the water you meant), and ocean_current_velocity is null off the open oceancurrent_variables takes the hourly names and adds a current object from 15-minute data (interval 900) plus current_units, alongside either window; a daily name there fails as variable_wrong_cadencelength_unit (metric / imperial) sets every height, sea_level_height_msl included, in m or ft; wind_speed_unit (kmh, mph, ms, kn) sets ocean_current_velocity; temperature_unit (celsius / fahrenheit) sets sea_surface_temperature. Open-Meteo converts the values, and the *_units maps label them (mph reads mp/h)openmeteo_get_air_quality toolforecast_days 1–7 (upstream default 5) with past_days 0–92, or a start_date / end_date archive range from August 2022 (us_aqi starts a day later). Same forecast_window_conflict and date_range_incomplete rejections as the marine toolcurrent_variables (a current object, interval 3600) or hourly_variables: PM2.5, PM10, NO2, SO2, O3, CO, dust, pollen, European and US AQI. Pollen is modeled for Europe only, in pollen season; elsewhere it comes back null and the notice names itdata_source: "CAMS" marks every response as modeled grid data, not station measurementsopenmeteo_get_elevation toollatitudes[] / longitudes[] arrays of up to 1,000 pairs; unequal lengths fail as coordinate_count_mismatch, compared on the full arraysunprocessed_count says how many were left and next_offset is where to resume — resubmit latitudes.slice(next_offset) and longitudes.slice(next_offset) until next_offset is null. A call of 100 or fewer returns 0 / null. Each sampled pair counts as one call against Open-Meteo's per-IP limits (600 a minute), so a seventh 100-pair slice inside one minute comes back rate_limitedelevations[] in input order, each { latitude, longitude, elevation_m } from the Copernicus DEM (~90 m); elevation_m is null where the DEM has no value (latitude 90), without failing the rest of the callopenmeteo_get_ensemble toolhourly_variables / daily_variables; forecast_days 1–35 (default 7), past_days 0–92. Most models end within 16 days (ncep_gefs05 runs to about day 34); past that, columns are null and the notice says where data endsmodels takes one ensemble name (e.g. ecmwf_ifs025_ensemble, 51 members; gem_global_ensemble, 21); omitted or blank selects ecmwf_ifs025_ensemble, echoed in modeltemperature_2m_member01, …) across up to 64 members; member_count excludes the control run. A regional model queried outside its coverage fails as a non-retryable input error; switch to a global modelopenmeteo_get_flood tooldaily_variables required (up to 20), all in m³/s: river_discharge plus the statistics river_discharge_mean / _median / _min / _max / _p25 / _p75, which carry ensemble spread on forecast-run days and repeat river_discharge on reanalysis daysforecast_days 1–210 (the current GloFAS run reaches about six months; later days are null), or a start_date / end_date range from 1984-01-01. Mixing them fails as forecast_days_conflict, a lone date as date_range_incompletemodels reads seamless_v4: consolidated_v4 reanalysis before 2023-08-05, forecast_v4 runs from then on. models: ["consolidated_v4"] reads the reanalysis through 2025-05-31 (null after, and on forecast_days); forecast_v4 starts 2023-06-01. Output echoes models; with 2+ models each column carries a model-name suffix, and the notice names null spansOnly the beginning is shown; read the rest in the repo