Real-time water temperature and tides for 8,000+ locations, by name or lat/long coordinates.
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx water-conditions-mcp
MCP client config
{
"mcpServers": {
"water-conditions": {
"command": "uvx",
"args": [
"water-conditions-mcp"
]
}
}
}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
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):
Investigated, more complex integration:
Investigated, unclear near-term path:
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.
Every call to the get_water_conditions tool is logged in the database. To pull a summary from the live server:
1. One-time setup — set ACTIVITY_API_KEY in Railway (already done). Note the value somewhere safe.
2. Run the activity script — open a terminal in this project folder and run these two commands:
$env:ACTIVITY_API_KEY="your-secret-here"
python scripts/activity.py
This prints total calls, unique locations queried, success rate, and the last 50 individual calls with timestamps and temperatures.
The $env: line only needs to be run once per terminal session. After that you can re-run python scripts/activity.py as many times as you like.