MeteoSwiss Open Data

Use when the user asks about Swiss weather, MeteoSwiss data, or Swiss weather forecasts and no MCP server is available. Covers current weather, forecasts, po...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 29 · 0 current installs · 0 all-time installs
byMax Albrecht@eins78
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the requested assets and code: all scripts and instructions only access MeteoSwiss/Open Government Data endpoints (data.geo.admin.ch, STAC API) and local REFERENCE/README files. Required tools (curl, jq, awk, iconv) are proportionate to the stated purpose.
Instruction Scope
SKILL.md and bundled scripts only run HTTP GETs against public MeteoSwiss endpoints, parse CSVs, and output key=value pairs. There are no instructions to read unrelated local files, system credentials, or to POST data to third-party endpoints. The skill references ${CLAUDE_SKILL_DIR} to locate its scripts (expected runtime variable).
Install Mechanism
There is no install spec (instruction-only plus included scripts). No external installers or archive downloads are used. The code is present as plain shell scripts — nothing in the manifest indicates arbitrary remote code execution beyond the expected HTTP fetches to official data hosts.
Credentials
The skill does not require environment variables, credentials, or special config paths. Only runtime tool availability is required (curl, jq, awk, iconv). No secrets (API keys, tokens) are requested or used.
Persistence & Privilege
always:false and user-invocable:true (normal). The skill does not request permanent presence, does not modify other skills or system-wide settings, and does not store credentials.
Assessment
This skill appears to be what it claims: a set of small shell scripts and instructions to fetch and parse MeteoSwiss Open Data from public endpoints. Before installing, verify you are comfortable with the agent executing shell scripts that make outbound HTTP requests (they go only to data.geo.admin.ch and related MeteoSwiss hosts). If you need extra assurance, inspect the included scripts locally (they are plain shell with no obfuscated code), run them in a sandbox, and confirm your environment provides the required CLI tools (curl, jq, awk, iconv). No credentials or secrets are needed.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0-rc.1
Download zip
curlvk97f6maq8khb3agbhk304j5smn83v5jflatestvk97f6maq8khb3agbhk304j5smn83v5jfmeteoswissvk97f6maq8khb3agbhk304j5smn83v5jfopen-datavk97f6maq8khb3agbhk304j5smn83v5jfswitzerlandvk97f6maq8khb3agbhk304j5smn83v5jfweathervk97f6maq8khb3agbhk304j5smn83v5jf

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

MeteoSwiss Open Data

Access Swiss weather data from MeteoSwiss Open Government Data. Free, no API key. All data from data.geo.admin.ch. CSVs use semicolon (;) delimiters. Metadata CSVs are Latin1 — pipe through iconv -f latin1 -t utf-8.

Quick Reference

DataURL / MethodUpdates
Current weatherhttps://data.geo.admin.ch/ch.meteoschweiz.messwerte-aktuell/VQHA80.csv10 min
Station metadataSTAC ch.meteoschweiz.ogd-smn → asset ogd-smn_meta_stations.csv (Latin1)Daily
Forecast metadataSTAC ch.meteoschweiz.ogd-local-forecasting → asset containing meta_point.csv (Latin1)Daily
Forecast dataSTAC items in ch.meteoschweiz.ogd-local-forecasting → parameter CSVsHourly
Pollen datahttps://data.geo.admin.ch/ch.meteoschweiz.ogd-pollen/{abbr}/ogd-pollen_{abbr}_d_now.csv (Latin1)Daily

STAC API base: https://data.geo.admin.ch/api/stac/v1

1. Get Current Weather

# Get weather for Zurich (station SMA) — key columns: tre200s0 (temp °C),
# ure200s0 (humidity %), rre150z0 (precip mm), fu3010z0 (wind km/h)
curl -s 'https://data.geo.admin.ch/ch.meteoschweiz.messwerte-aktuell/VQHA80.csv' \
  | awk -F';' 'NR==1 || $1=="SMA"'

Full parameter list in ${CLAUDE_SKILL_DIR}/REFERENCE.md. Missing values appear as empty fields or -. Timestamps are YYYYMMDDHHmm in UTC.

2. Find Stations

# Search weather stations by name (Latin1 encoded)
curl -s 'https://data.geo.admin.ch/ch.meteoschweiz.ogd-smn/ogd-smn_meta_stations.csv' \
  | iconv -f latin1 -t utf-8 \
  | awk -F';' 'NR==1 || tolower($0) ~ /zurich/'

Columns: station_abbr, station_name, station_canton, station_height_masl, station_coordinates_wgs84_lat, station_coordinates_wgs84_lon.

# Search forecast locations (~6000 points: stations, postal codes, mountains)
# NOTE: Asset key has a known typo "forcasting" — always get URL from STAC
META_URL=$(curl -s 'https://data.geo.admin.ch/api/stac/v1/collections/ch.meteoschweiz.ogd-local-forecasting' \
  | jq -r '[.assets | to_entries[] | select(.key | contains("meta_point")) | .value.href] | first')
curl -s "$META_URL" | iconv -f latin1 -t utf-8 \
  | awk -F';' 'NR==1 || $3 ~ /8001/'  # search by postal code

Point columns: point_id, point_type_id (1=station, 2=postal_code, 3=mountain), postal_code, station_abbr, point_name.

3. Get Forecasts

Two steps: get the latest STAC item, then download parameter CSVs.

# Step 1: Get latest forecast item
ITEM=$(curl -s 'https://data.geo.admin.ch/api/stac/v1/collections/ch.meteoschweiz.ogd-local-forecasting/items?limit=10' \
  | jq -r '[.features[].id] | sort | reverse | .[0]')

# Step 2: Get a parameter CSV (e.g., daily max temperature for Zurich station, point_id=48)
ASSET_URL=$(curl -s "https://data.geo.admin.ch/api/stac/v1/collections/ch.meteoschweiz.ogd-local-forecasting/items/$ITEM" \
  | jq -r '[.assets | to_entries[] | select(.key | contains("tre200dx"))] | sort_by(.key) | last | .value.href')
curl -s "$ASSET_URL" | awk -F';' 'NR==1 || $1=="48"'

Station forecasts (point_type_id=1) have daily params: tre200dx (max temp), tre200dn (min temp), rka150d0 (precip), jp2000d0 (weather icon). Postal codes/mountains (type 2,3) have hourly params: tre200h0, rre150h0, jww003i0 — aggregate to daily by grouping on first 8 timestamp chars. Common point_ids: Zurich=48, Bern=29, Geneva=53.

4. Get Pollen Data

# Stations: BAS, BER, BUC, DAV, GEN, LAU, LOG, LUG, LUZ, MUN, NEU, VIS, ZUE
# Use lowercase in URLs
curl -s 'https://data.geo.admin.ch/ch.meteoschweiz.ogd-pollen/zue/ogd-pollen_zue_d_now.csv' \
  | iconv -f latin1 -t utf-8 \
  | awk -F';' 'NR==1{print} {last=$0} END{print last}'

Columns: station_abbr, Date, then pollen types (BIR=birch, GRA=grass, etc.) in particles/m³.

Error Handling

  • Station not found: Check metadata CSV (Section 2) for valid abbreviations
  • Empty data: Station may be offline — try a nearby station
  • 403/404 on pollen: Verify abbreviation is lowercase and is a pollen station (~13 total)
  • Garbled text: You're reading Latin1 as UTF-8 — add iconv -f latin1 -t utf-8

Bundled Scripts

Token-efficient CLI tools that output structured key=value pairs. Use these instead of raw curl when available — they handle encoding, error checking, and output parsing.

${CLAUDE_SKILL_DIR}/scripts/current-weather.sh SMA          # current weather for Zurich
${CLAUDE_SKILL_DIR}/scripts/search-stations.sh zurich        # find weather stations
${CLAUDE_SKILL_DIR}/scripts/search-forecast-points.sh 8001   # find forecast point_id by postal code
${CLAUDE_SKILL_DIR}/scripts/forecast.sh 48                   # forecast for Zurich (point_id=48)
${CLAUDE_SKILL_DIR}/scripts/pollen.sh ZUE                    # pollen data for Zurich

All scripts accept --help for usage details. Requires: curl, awk, iconv. Forecast also needs jq.

MCP Server Alternative

For complex queries (fuzzy search, geocoding, structured JSON), use the MCP server: claude mcp add meteoswiss https://meteoswiss-mcp.ars.is/mcp

Full Reference

See ${CLAUDE_SKILL_DIR}/REFERENCE.md for all parameters, weather icon codes, and STAC collections.

Files

8 total
Select a file
Select a file to preview.

Comments

Loading comments…