tideline
Generates ICS calendar files with tide predictions that can be imported into Google Calendar for event scheduling and alerts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tidelinewhat are today's tides near Seattle?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Moon & Tides — Tideline
Tidal calendar for the US coast. Generates ICS calendar files with high/low tides, king tide alerts, tidepooling windows, and Perigean spring tides. Includes a FastAPI web server, a CLI, and an MCP server that lets Claude answer tide questions directly.
Data source: NOAA CO-OPS API (free, no key required, US coastal stations only).
Requirements
Python 3.11 or later
Windows, macOS, or Linux
Related MCP server: LocalTides MCP Server
Installation
# 1. Clone the repo and enter the directory
git clone <repo-url>
cd Moon_and_Tides
# 2. Install dependencies
pip install -r requirements.txt
# 3. Install the tideline command
pip install -e .After step 3 you can type tideline directly in any terminal. If you skip it, prefix every command with python -m app.cli instead — they are otherwise identical.
Quick start
# What are today's tides near me?
tideline preview "Edmonds WA"
# Download a full-year ICS calendar file
tideline ics "Edmonds WA" --year 2026 --out my_tides.icsImport my_tides.ics into Google Calendar, Apple Calendar, or Outlook.
CLI reference
tideline preview — Today's tides
tideline preview "Edmonds WA"
tideline preview "San Francisco, CA"
tideline preview --station 9447130
tideline preview --lat 47.81 --lon -122.38Output:
Today's tides at 9447130:
02:06 (2:06 AM) H 10.32 ft
09:32 (9:32 AM) L -0.87 ft
17:41 (5:41 PM) H 10.69 ft
22:34 (10:34 PM) L 7.91 fttideline tides — Browse tide predictions
# Current year, first 20 events
tideline tides "Edmonds WA"
# Specific year (shows first 20 events)
tideline tides "Edmonds WA" --year 2026
# Single date
tideline tides "Edmonds WA" --date 2026-06-21
# By station ID
tideline tides --station 9447130 --date 2026-06-21
# By coordinates
tideline tides --lat 47.81 --lon -122.38 --date 2026-06-21
# Show more rows
tideline tides "Edmonds WA" --year 2026 --count 100Times are shown in both 24-hour and 12-hour AM/PM format.
tideline ics — Download a calendar file
# Full year ICS (saves to tides_STATIONID_YEAR.ics in current folder)
tideline ics "Edmonds WA" --year 2026
# Specify output filename
tideline ics "Edmonds WA" --year 2026 --out my_tides_2026.ics
# King tide / extreme event alerts only (all-day events, good for overlaying)
tideline ics "Edmonds WA" --year 2026 --alerts-only --out alerts_2026.ics
# By station ID
tideline ics --station 9447130 --year 2026 --out seattle_2026.ics
# By coordinates
tideline ics --lat 47.81 --lon -122.38 --year 2026 --out tides.icsThe ICS file contains one event per high/low tide with the height, datum, station name, and next tide in the description. Import it into any calendar app that accepts .ics files.
tideline stations — Find nearby NOAA stations
# Stations within 50 miles (default)
tideline stations "Edmonds WA"
# Custom radius
tideline stations "Edmonds WA" --radius 100
# Limit number of results
tideline stations "Edmonds WA" --radius 50 --count 3Output:
Location: Edmonds, Snohomish County, Washington, United States
ID Name Miles Harmonic
------------------------------------------------------------
9447130 Seattle 14.5 yes
9445958 Bremerton 20.6 yes
9444900 Port Townsend 27.3 yes"Harmonic" means the station has full tidal harmonic data (required for slack water and tidepooling features).
tideline extremes — Highest and lowest tides of the year
tideline extremes "Edmonds WA" --year 2026
tideline extremes --station 9447130 --year 2026Output:
Top 10 Highest Tides:
2026-01-05 07:07 (7:07 AM) 13.01 ft
...
Top 10 Lowest Tides:
2026-06-15 11:33 (11:33 AM) -4.30 ft
...Web API
Start the server:
python -m uvicorn app.main:app --reloadThen open http://localhost:8000/docs for the interactive API explorer.
Key endpoints:
Endpoint | Description |
| Convert address to lat/lon |
| Nearest NOAA stations |
| Stations within radius |
| Station metadata + tidal range |
| Tides for one day |
| Tides for a date range |
| Monthly means + extremes |
| Download ICS via URL |
| Alerts-only ICS via URL |
MCP server (for Claude Desktop)
The MCP server lets Claude answer tide questions using live NOAA data.
Add this to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"tideline": {
"command": "python",
"args": ["C:\\full\\path\\to\\Moon_and_Tides\\mcp_server.py"]
}
}
}Then in Claude you can ask things like:
"When is high tide in Seattle tomorrow?"
"Find the lowest tide within 50 miles of San Francisco in July 2026"
"What are the best tidepooling days near Bodega Bay this summer?"
"Generate a calendar link for tides near Edmonds WA for 2026"
Available MCP tools: geocode, find_stations, get_tides_day, get_tides_range, get_station_info, get_tidal_type, get_extreme_tides, find_extreme_in_radius, check_flood_risk, get_slack_water, get_tidepooling_windows, get_perigean_spring_tides, generate_ics_url.
Caching
All NOAA data is cached locally in cache/tides.db (SQLite):
Tide predictions: 30-day cache lifetime per station/year
Station list: 7-day cache lifetime
Tidal ranges and Perigean events: cached indefinitely until recomputed
The cache means repeat commands are instant and tests never hit the network. Delete cache/tides.db to force a fresh fetch.
Running tests
# All fast tests (no network)
python -m pytest tests/ -m "not live and not slow" -v
# Tests that hit the real NOAA API
python -m pytest tests/ -m "live" -vImported events into the wrong Google Calendar?
If you accidentally import the .ics file into the wrong Google Calendar, use the included cleanup script to delete all tide events without having to remove them one by one.
The script: scripts/delete_tide_events.gs
Steps:
Go to script.google.com and click New project
Delete any existing code and paste the entire contents of
scripts/delete_tide_events.gsSet
CALENDAR_NAMEto the exact name of the calendar you imported into (find it in the left sidebar of Google Calendar)Leave
DRY_RUN = truefor nowClick Save, then Run — select
deleteTideEventsin the dropdownOn first run, approve the permissions Google asks for
Check the Execution log at the bottom — it will list all tide events it would delete
If the list looks right, change
DRY_RUN = falseand run again to actually deleteIf you hit Google's rate limits, just run again — the script tracks progress and picks up where it left off
The script deletes events matching these title patterns:
🌊 High Tide —🏖 Low Tide —⚠️ King Tide —⚠️ Extreme Low —
It will not touch any other events in the calendar.
Project structure
app/
tide_data.py — NOAA fetch + SQLite cache
station_finder.py — Station search, haversine distance
ics_builder.py — RFC-5545 ICS generation
alert_engine.py — King tide / flood risk detection
special_events.py — Slack water, tidepooling, Perigean tides
geocode.py — Nominatim address lookup
cli.py — tideline command
main.py — FastAPI web server
mcp_server.py — MCP server for Claude Desktop
scripts/
delete_tide_events.gs — Google Apps Script to remove imported tide events
tests/ — 44 tests, all passing
cache/ — SQLite cache (gitignored)Notes
Coverage is US coastal stations only (NOAA CO-OPS network).
Tidal heights are relative to MLLW (Mean Lower Low Water) by default.
Times are shown in local standard/daylight time for the station's location.
The
tidelinecommand is available afterpip install -e .. Without it, usepython -m app.clias a drop-in replacement for every example above.No NOAA station exists at every address — the app always uses the nearest available station and tells you the distance. For Edmonds WA, that's Seattle (#9447130, ~14 miles).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Earththing/Moon_and_Tides'
If you have feedback or need assistance with the MCP directory API, please join our Discord server