Skip to main content
Glama

windext

Multi-model wind forecasts for wind sports (kitesurf, windsurf, wingfoil, sailing), served to Claude over the Model Context Protocol.

One call reads AROME, ICON, ECMWF, GFS, UKMO (plus KNMI and DMI in Europe) for a spot and compiles them into a compact hourly table with model consensus, spread, agreement, gust factor and onshore/offshore relation, followed by a plain-language diagnosis of why the wind is gusty or steady.

Free for everyone: data from Open-Meteo (no key, CC BY 4.0), hosted on Cloudflare Workers free tier.

Use it

Claude Desktop / claude.ai / mobile: Settings → Connectors → Add custom connector → https://wind.oooooooo.dev/mcp

Claude Code:

claude mcp add --transport http windext https://wind.oooooooo.dev/mcp

Local (no server at all):

claude mcp add windext npx windext-mcp

Then just talk about wind: "Should I go to Ouistreham tomorrow? The beach faces north."

Related MCP server: OhMyWind

Tools

Tool

What it does

find_spot

Place name → coordinates

spot_forecast

Hourly multi-model table + gust diagnosis. Give facing_deg (direction the beach faces) for onshore/offshore safety

ride_windows

Contiguous daytime windows inside your knot range, offshore excluded by default

list_models

Which models are read at a location and why

Prompt session_check asks the full "should I go?" question the way an experienced rider would.

iOS app

ios/ holds the SwiftUI app and its widget (XcodeGen project). One question at onboarding (sport, weight, gear, level, stored on the phone only), then for each followed spot: a windext score out of 10 and a plain-language verdict for today and tomorrow. The small widget shows the score; the medium one the verdict and the window. An evening notification after a "go" day asks how it was, in one tap, which feeds the model scoring.

cd ios && xcodegen generate
xcodebuild -scheme Windext -destination 'platform=iOS Simulator,name=iPhone 17 Pro' build

The app talks to GET /v1/verdict, GET /v1/spots and POST /v1/report. Verdict sentences are pre-written in 7 languages (src/core/verdict-i18n.ts) and computed by rules (src/core/verdict.ts); no language model runs on the server.

Develop

npm install
npm test                        # unit tests (vitest)
npx tsx scripts/sweep.ts        # worldwide health sweep, 40 spots
npx tsx scripts/verdict-sweep.ts # ~2,900 real verdicts in 7 languages
npx tsx bench/run.ts r2         # blind A/B bench, Claude with vs without windext
npm run dev:worker  # local Worker on :8787
npm run deploy      # Cloudflare Workers, route wind.oooooooo.dev

Licences

  • Code: MIT (see LICENSE).

  • Spot database (/spots.json, community cards): CC BY-SA 4.0. Credit windext and share improvements under the same licence.

  • Seed spots: © OpenStreetMap contributors, ODbL.

  • Weather data: © Open-Meteo, CC BY 4.0.

Privacy

No accounts, no cookies, no personal data. Full policy: https://wind.oooooooo.dev/privacy

Available Tools

7 tools
find_spotFind a spotA
Read-onlyIdempotent

Look a spot up by name in the windext spot database (community-built, with beach orientation and wind-direction knowledge), then fall back to geocoding. Always call this first.

Inputs: query (required).

list_modelsList weather modelsB
Read-onlyIdempotent

Which weather models windext reads by default at a location, and their resolution/coverage notes.

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

ride_windowsRideable windowsB
Read-onlyIdempotent

Contiguous daytime windows where the model-consensus wind sits inside the rider's range, excluding offshore wind and the spot's forbidden sectors unless allowed.

Inputs: lat, lon, days, max_kn, +4 more.

spot_forecastMulti-model wind forecast for a spotB
Read-onlyIdempotent

Hourly wind forecast from several weather models at once (AROME, ICON, ECMWF, GFS, UKMO, plus KNMI/DMI in Europe), compiled into one compact table with model consensus, spread, agreement, gust factor and shore relation, followed by a diagnosis of why the wind is gusty or steady. Pass spot_id when known.

Inputs: lat, lon, days, sport, +6 more.

spot_infoSpot cardC
Read-onlyIdempotent

Full card of a known spot, or the spots known within a radius of a point.

Inputs: lat, lon, spot_id, radius_km.

submit_spotSubmit or correct a spot cardA
Idempotent

Add a spot to the open windext database, or correct an existing one. Only call after the user has confirmed the facts. Cards are stored with status "community" until a moderator verifies them; a correction to a verified spot is queued for review. Licence CC BY-SA, no personal data.

Inputs: lat (required), lon (required), name (required), kind, +14 more.

tidesTide timesA
Read-onlyIdempotent

High and low water times and heights (vs mean sea level) for a coastal spot, from the Open-Meteo marine model. Approximate (+/- 20 min), free, worldwide; not for navigation. Empty for lakes.

Inputs: lat, lon, days, spot_id, +1 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 7 tools

    Disambiguation4/5

    Each tool targets a distinct capability (search, spot details, submission, forecast, riding windows, tides, model metadata), and the descriptions give clear sequencing cues like 'always call this first.' The main soft spot is find_spot vs spot_info, which both surface spot data, but the descriptions adequately separate search-by-name from a full card/radius lookup.

    Naming Consistency3/5

    Names are readable snake_case but mix conventions: verb_noun forms (find_spot, submit_spot, list_models) sit alongside noun-noun forms (spot_info, spot_forecast) and bare nouns (tides, ride_windows). A single consistent pattern like get_spot, get_forecast would be cleaner, though the domain theme keeps it understandable.

    Tool Count5/5

    Seven tools is well-scoped for a wind-forecast/spot database server. Each tool covers a distinct piece of the domain (discovery, detail, contribution, forecast, derived windows, tides, model info) with no filler.

    Completeness4/5

    The core lifecycle is covered: find spots, view details, submit/correct spots, get forecasts, derive ride windows, check tides, and inspect models. Minor gaps exist (no saved/favorite spots, user preferences for rider range, or alerts), but agents can work around these.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      MCP server for wind forecasts, live measurements, wave forecasts, and tides, enabling kite and surf spot checks via AI assistants.
      5
      7 npm
      MIT
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables any MCP-compatible assistant to plan sailing passages using wind and sea forecasts, with boat-specific polars, per-leg ETAs, complexity scores, and deep links to interactive plans. Works globally, with higher-resolution models over France, and supports multi-day departure window comparisons.
      11
      AGPL 3.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables querying and comparing operational numerical weather models, including global and regional, deterministic and ensemble, physics-based and AI forecasts, with a unified API.
      66 npm
      MIT