Skip to main content
Glama
io.github.aybeeare/water-conditions

io.github.aybeeare/water-conditions

by aybeeare

Get real-time water temperature and tide prediction data for any lake, river, ocean, bay, or beach by name or latitude/longitude coordinates. Data sourced live from NOAA CO-OPS, USGS, and seatemperature.info, with automatic nearest-station matching for coordinate inputs. Coverage includes 8,000+ named locations across North America and major international bodies, with string to coordinate geocoding for fallback.

mcp-name: io.github.aybeeare/water-conditions

Roadmap: national sensor network expansion

Today's accuracy hierarchy is USGS/NOAA (real government sensors, ground-truth for the exact station) > seatemperature.info (best-guess aggregator, no known dedicated sensor network, used for everywhere else via geocoding). The plan is to extend the first tier — real sensor networks, wired in the same way as USGS/NOAA — country by country, rather than leaning on the aggregator fallback long-term. Goal: a genuine "super API" blending national sensor networks the way this project already blends USGS + NOAA.

Confirmed and ready to integrate (free, open, no API key required):

  • UK Environment Agency — best next candidate. Hydrology API (river flows/levels/groundwater, ~8,000 stations, 15-min resolution) + Flood Monitoring API (river/tide levels) — same openness and simplicity as USGS/NOAA, Open Government Licence.

  • France SHOM/REFMAR — ~100 real-time tide gauges, Licence Etalab 2.0.

Investigated, more complex integration:

  • Copernicus Marine Service (EU/global sea surface temperature, satellite + in-situ) — free and authoritative, but the bulk data products are scientific-grade (NetCDF via a Python toolbox) rather than simple per-station JSON. Has a REST "In Situ Dashboard" worth a closer look.

Investigated, unclear near-term path:

  • East Asia (Japan JMA/JODC, Korea KMA) — both have relevant agencies, but access looked more fragmented/licensed than the UK case in an initial search (Japan's tide data appears to route through an authorized distributor, not a clean open endpoint). Needs real investigation before committing — not a near-term target.

North America (USGS/NOAA) + Europe (UK EA, France SHOM) covers the current priority footprint well. Everything else stays on the geocoding + seatemperature.info fallback until/unless a specific region's sensor network turns out to be worth the integration effort.

Related MCP server: mcp-usgs-water-data

Query log (owner only)

Every /fishing-guide request is logged with its channel (alexa, mcp-http, mcp-stdio or rest), the MCP client name when known, what was asked, what it resolved to, the outcome and the latency. The log is a separate SQLite file (api/query_log.py), not fishing.db, because fishing.db is rebuilt from git on every deploy.

1. One-time setup on Railway

  • Attach a volume to the service (any mount path, e.g. /data). The log goes to $RAILWAY_VOLUME_MOUNT_PATH/query_log.db automatically. Without a volume the log is wiped on every deploy and the server logs a warning at startup.

  • ACTIVITY_API_KEY is already set. Note the value somewhere safe.

2. Read it — open a terminal in this project folder:

$env:ACTIVITY_API_KEY="your-secret-here"
python scripts/activity.py                          # last 7 days: counts + last 50 calls
python scripts/activity.py --days 30 --channel alexa
python scripts/activity.py --days 3650 --csv query_log.csv   # download every row

The $env: line only needs to be run once per terminal session.

Available Tools

1 tool
get_water_conditionsWater ConditionsA
Read-onlyIdempotent

Get real-time water temperature and tide prediction data for any lake, river, ocean, bay, or beach by name or latitude/longitude coordinates. Data sourced live from NOAA CO-OPS, USGS, and seatemperature.info — not from training data — with automatic nearest-station matching for coordinate inputs. Coverage includes 8,000+ named locations across North America and major international bodies, with string to coordinate geocoding for fallback. Use this whenever a user asks about current water temperature, beach or swimming conditions, boating, surfing, fishing, tide times, or any question requiring real-time water data. If the name is ambiguous the result has needs_clarification=true and a list of options: ask the user, then call again with the chosen option as location.

NameRequiredDescriptionDefault
latitudeNoLatitude in decimal degrees, for nearest-station lookup when no location name is available. Requires longitude.
locationNoWater body name as natural language. Examples: 'Lake Michigan', 'Revere Beach', 'Chesapeake Bay', 'Cape Cod', 'Galveston Island', 'Puget Sound', 'Florida Keys', 'Potomac River', 'Waikiki Beach'. Provide this OR latitude+longitude.
longitudeNoLongitude in decimal degrees, for nearest-station lookup when no location name is available. Requires latitude.

Output Schema

NameRequiredDescription
noteNoWhy there is no temperature, when temp_f is absent
tidesNoToday's high/low tide predictions; empty for non-tidal water
sourceNoWhere the temperature came from
temp_cNoWater temperature, °C
temp_fNoWater temperature, °F. Absent when no current reading exists (see note)
messageNoWhat to do next when needs_clarification is true
optionsNoPlace names to choose from; call again with one as location
locationNoName of the station or place the reading is for
temp_f_maxNoHigh end of today's range across the water body, °F
temp_f_minNoLow end of today's range across the water body, °F
distance_kmNoDistance from the requested coordinates to the station
observed_atNoISO-8601 UTC time the reading was taken
coverage_noteNoPresent when temp_f_min/temp_f_max describe a whole water body
data_freshnessNoISO-8601 UTC time the reading was fetched
needs_clarificationNoTrue when the name matched several places; see options

Tool Schema Changelog

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

  1. 1 tool updatev1.3.0
    • First observedget_water_conditions

TDQS

A4.6/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no possibility of misselection between tools. The single tool's purpose — fetching real-time water temperature and tide data by name or coordinates — is stated unambiguously in its description.

Naming Consistency5/5

The name get_water_conditions follows a clear verb_noun snake_case convention. With a single tool there is no inconsistency, and the name is readable and predictive of behavior.

Tool Count3/5

A single tool is thin for a server, though this one is a rich, well-described data endpoint rather than a trivial wrapper. The narrow domain (one live-data lookup) makes one tool defensible, but it sits at the borderline of the 1-2 tool range.

Completeness4/5

The tool covers the core domain: current water temperature plus tide predictions for arbitrary locations, with geocoding and nearest-station fallback handled internally, so agents won't hit dead ends for the primary use case. Minor gaps remain — no multi-day forecast, water quality, or explicit station-listing operation — but these are workarounds or out of stated scope.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables querying USGS water data including real-time and historical streamflow, gage height, and water temperature from USGS gauges across the United States.
    3
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides NOAA tide predictions and observed water levels, allowing AI agents to query tide stations and current water level data.
    7 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides lake conditions, fish-stocking records, fishing-favorability scoring, and live weather for outdoor recreation AI agents, powering trip-planning and fishing apps with 72,000+ US lakes and 293,000+ stocking events.
    MIT