Skip to main content
Glama

šŸ–ļø Beach Safety MCP

Get comprehensive beach and surf conditions for any beach in the world — just say the name. No API keys needed for most data.

"How's the surf at Waikiki?" → instant full report

⭐ If you find this useful, please star the repo — it helps others discover it.

What You Get

  • 🌊 Waves — height, period, direction

  • šŸŒ«ļø Swell — swell height, period, direction

  • šŸ’Ø Wind — speed and direction

  • šŸŒ”ļø Temperature — air and water

  • ā˜€ļø UV Index — current UV + daily max, day/night aware (free, no API key)

  • āš ļø Rip Current Risk — Low / Moderate / High

  • šŸ›”ļø Safety Score — 1-10 with recommendations

Related MCP server: Surf Forecast MCP

Data Sources (all free — no API keys)

Source

Data

OpenStreetMap / Photons

Beach name → coordinates

Open-Meteo Marine

Wave height, swell, ocean currents

Open-Meteo Weather

Air temp, wind, precipitation, UV index

NOAA NWS

Rip current risk, surf zone forecast

UV index data comes from Open-Meteo at no cost — no API key needed.

Installation

1. Clone / copy the project

git clone <repo-url>
cd beach-safety-mcp

Or just copy the src/server.py file to wherever you want it.

2. Add to mcporter

mcporter config add beach-safety \
  --command python3 \
  --args "path/to/beach-safety-mcp/src/server.py" \
  --cwd "path/to/beach-safety-mcp/config"

Add to mcporter manually

Or manually add to ~/.openclaw/workspace/config/mcporter.json:

{
  "beach-safety": {
    "command": "python3",
    "args": ["/full/path/to/beach-safety-mcp/src/server.py"]
  }
}

3. Test it

mcporter call beach-safety.get_beach_json beach_name="Waikiki"

Usage

From any AI assistant (via mcporter)

get_beach_report(beach_name="Waikiki")
get_beach_report(beach_name="Bondi Beach, Sydney")
get_beach_report(beach_name="Cocoa Beach, FL")

Just say the beach name — coordinates are auto-resolved.

From the CLI

python3 beach_lookup.py "Waikiki"
python3 beach_lookup.py "Praia da Rocha, Portugal"
python3 beach_lookup.py "Bondi Beach, Sydney"

Surf forecast only

mcporter call beach-safety.get_surf_forecast lat=21.27 lon=-157.82

Example Output

🌊 Bondi Beach, Sydney Beach Conditions
   Lat/Lon: -33.8907, 151.2724
   Updated: 2026-03-23T10:30:00Z UTC

šŸ›”ļø SAFETY (Score: 8/10)
   Rip Current Risk: Moderate
   Safety: Moderate rip current risk

🌊 WAVES
   Wave Height: 2.8 ft (0.84m)
   Wave Period: 6.7 sec
   Swell: 2.4 ft @ 4.8 sec from E

šŸ’Ø WIND
   Speed: 4.0 mph from NE

šŸŒ”ļø TEMPERATURE
   Air: 68°F | Water: 75°F

ā˜€ļø UV INDEX: current=6 (daily max=9) (Very High) — sunscreen recommended
   *(at night shows current=0 with daily max, UV risk based on max)*

šŸ“‹ RECOMMENDATIONS:
   āš ļø Swim near a lifeguard. Be aware of rip currents.

Safety Score Guide

Score

Meaning

Action

9-10

Generally safe

Enjoy with normal precautions

7-8

Minor concerns

Caution advised

4-6

Caution

Swim near lifeguard

1-3

Dangerous

Stay out of the water

Notes

  • Works for any beach worldwide — just name it

  • NOAA surf zone data is most detailed for US coasts

  • Open-Meteo marine data covers global oceans

  • Some less-famous beaches may not resolve — try adding country/state (e.g., "Kuta Beach, Bali, Indonesia")

  • Beach name → coordinates powered by OpenStreetMap + Photons (free)

Project Structure

beach-safety-mcp/
ā”œā”€ā”€ src/
│   └── server.py          # MCP server (Python, stdio)
ā”œā”€ā”€ beach_lookup.py        # CLI tool
ā”œā”€ā”€ LICENSE                # MIT License
└── README.md

Available Tools

4 tools
get_beach_jsonA

Get beach conditions as structured JSON for programmatic use. Same as get_beach_report but in JSON format. Auto-geocodes any beach name.

Inputs: beach_name (required), latitude, longitude.

get_beach_reportA

Get comprehensive beach safety conditions including rip current risk, waves, swell, wind, temperature, UV, and safety score for any beach location. Automatically geocodes any beach name worldwide — just say 'Waikiki' or 'Bondi Beach'.

Inputs: beach_name (required), latitude, longitude.

get_surf_forecastA

Get a focused surf forecast for any beach: wave height, wave period and direction, swell height/period/direction, rip current risk, and safety score. Accepts a beach name (auto-geocoded worldwide — just say 'Waikiki' or 'Bondi Beach') or raw coordinates. Use this when only surf conditions are needed; use get_beach_report for the full safety report including wind, temperature, and UV.

Inputs: latitude, longitude, beach_name.

get_uv_forecastA

Get the UV index forecast for any beach: current and max UV index, risk level, and sun-protection recommendations. Accepts a beach name (auto-geocoded worldwide — just say 'Waikiki' or 'Bondi Beach') or raw coordinates. Use this when only sun-exposure info is needed; use get_beach_report for the full safety report.

Inputs: latitude, longitude, beach_name.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 4 tools

    Disambiguation3/5

    get_beach_json is explicitly 'the same as get_beach_report but in JSON format,' a pure output-format variant that creates real selection ambiguity, and get_surf_forecast/get_uv_forecast are just filtered slices of get_beach_report. The descriptions do explain when to prefer each one, which keeps it readable but the boundaries are functional rather than distinct.

    Naming Consistency4/5

    All four tools follow the same get_<subject> snake_case pattern with no style mixing. The only inconsistency is in the subject convention: two use '<condition>_forecast' while the other two use 'beach_<format/output>'.

    Tool Count4/5

    Four tools is a reasonable, well-scoped size for a beach-conditions service and nothing feels like filler. It is slightly thin, however, since the surf and UV tools mostly duplicate subsets of the comprehensive report.

    Completeness4/5

    The surface covers the core beach-safety read concerns: waves, swell, rip current risk, wind, temperature, UV, and an aggregate safety score, with geocoding handled. Minor gaps remain, such as tide times and water-quality or hazard alerts, which matter for beach safety but are not strictly required.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides weather forecasts and active alerts for US locations using the National Weather Service API. It supports both local stdio and remote HTTP/SSE transport modes for flexible integration with MCP clients.
      95 npm
      GPL 3.0
    • F
      license
      Not graded
      quality
      D
      maintenance
      Provides surf forecast data including swell height, period, direction, and wind conditions for any location worldwide using the Open-Meteo Marine API. It also includes tools to find the best day to surf and integrates with MCP clients via a Python server.
      21
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for real-time surf conditions at 5,000+ beaches worldwide. Enables checking surf conditions, finding nearest spots, and listing spots via natural language.
      53 npm
      1
      MIT