Worldwide tide times and heights, marine weather, sea temperature, sun and moon for 13,000+ ports.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
TidesAtlas API key (free at https://tidesatlas.com/en/api/register)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Get sun and moon data: sunrise, sunset, dawn, dusk, day length, moon phase, illumination, moonrise, moonset.
Latitude.
Longitude.
Start date YYYY-MM-DD (default: today).
Number of days, 1-7 (default: 1).
Station slug.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http tides https://tidesatlas.com/mcp \ --header 'X-API-Key: YOUR_X_API_KEY'
Headers
X-API-Key (required): TidesAtlas API key (free at https://tidesatlas.com/en/api/register)Get sun and moon data: sunrise, sunset, dawn, dusk, day length, moon phase, illumination, moonrise, moonset.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude. |
| lon | number | Longitude. |
| date | string | Start date YYYY-MM-DD (default: today). |
| days | integer | Number of days, 1-7 (default: 1). |
| port | string | Station slug. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude."
},
"lon": {
"type": "number",
"description": "Longitude."
},
"date": {
"type": "string",
"description": "Start date YYYY-MM-DD (default: today)."
},
"days": {
"type": "integer",
"maximum": 7,
"minimum": 1,
"description": "Number of days, 1-7 (default: 1)."
},
"port": {
"type": "string",
"description": "Station slug."
}
}
}Get unified weather + marine + astronomy data in one call. More efficient than calling each separately.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude. |
| lon | number | Longitude. |
| days | integer | Forecast days, 1-7 (default: 3). |
| port | string | Station slug. |
| include | string | Comma-separated list: weather,marine,astronomy (default: all three). |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude."
},
"lon": {
"type": "number",
"description": "Longitude."
},
"days": {
"type": "integer",
"maximum": 7,
"minimum": 1,
"description": "Forecast days, 1-7 (default: 3)."
},
"port": {
"type": "string",
"description": "Station slug."
},
"include": {
"type": "string",
"description": "Comma-separated list: weather,marine,astronomy (default: all three)."
}
}
}Get historical tide predictions and weather data for past dates. Tides up to 365 days, weather up to 90 days.
| Argument | Type | Description |
|---|---|---|
| date* | string | Start date in the past, YYYY-MM-DD (required). |
| days | integer | Number of days, 1-365 (default: 7). |
| port* | string | Station slug (required). |
| include | string | Comma-separated: tides,weather (default: tides). |
{
"type": "object",
"required": [
"port",
"date"
],
"properties": {
"date": {
"type": "string",
"description": "Start date in the past, YYYY-MM-DD (required)."
},
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Number of days, 1-365 (default: 7)."
},
"port": {
"type": "string",
"description": "Station slug (required)."
},
"include": {
"type": "string",
"description": "Comma-separated: tides,weather (default: tides)."
}
}
}Get ocean and wave forecast (wave height, swell, sea state on Douglas scale). Returns hourly and daily data.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude. |
| lon | number | Longitude. |
| days | integer | Forecast days, 1-7 (default: 3). |
| port | string | Station slug. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude."
},
"lon": {
"type": "number",
"description": "Longitude."
},
"days": {
"type": "integer",
"maximum": 7,
"minimum": 1,
"description": "Forecast days, 1-7 (default: 3)."
},
"port": {
"type": "string",
"description": "Station slug."
}
}
}Get real-time sea level observations from REFMAR/SHOM tide gauges (French stations only). Returns 10-minute interval readings.
| Argument | Type | Description |
|---|---|---|
| date | string | Start date YYYY-MM-DD (default: today). |
| days | integer | Number of days, 1-7 (default: 1). |
| port* | string | Station slug (must be a French REFMAR station). |
{
"type": "object",
"required": [
"port"
],
"properties": {
"date": {
"type": "string",
"description": "Start date YYYY-MM-DD (default: today)."
},
"days": {
"type": "integer",
"maximum": 7,
"minimum": 1,
"description": "Number of days, 1-7 (default: 1)."
},
"port": {
"type": "string",
"description": "Station slug (must be a French REFMAR station)."
}
}
}Get rain radar tile URLs for a location. Returns past frames and short-term nowcast frames for map overlays.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude. |
| lon | number | Longitude. |
| port | string | Station slug. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude."
},
"lon": {
"type": "number",
"description": "Longitude."
},
"port": {
"type": "string",
"description": "Station slug."
}
}
}Get tide predictions (high/low water times and heights) for a port or coordinates. Returns extremes with datetime, height in meters, and type (high/low). Supports 18,400+ stations worldwide.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude (-90 to 90). Alternative to port — finds the nearest station. |
| lon | number | Longitude (-180 to 180). Must be used with lat. |
| date | string | Start date in YYYY-MM-DD format (default: today). |
| days | integer | Number of days, 1-14 (default: 1). |
| port | string | Station slug, e.g. "aberdeen" or "san-francisco". Use search_ports to find slugs. |
| datum | string | Vertical datum: LAT, MSL, MLLW, MHW, MLW, MHHW, MTL, HAT (default: native datum of station). |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude (-90 to 90). Alternative to port — finds the nearest station."
},
"lon": {
"type": "number",
"description": "Longitude (-180 to 180). Must be used with lat."
},
"date": {
"type": "string",
"description": "Start date in YYYY-MM-DD format (default: today)."
},
"days": {
"type": "integer",
"maximum": 14,
"minimum": 1,
"description": "Number of days, 1-14 (default: 1)."
},
"port": {
"type": "string",
"description": "Station slug, e.g. \"aberdeen\" or \"san-francisco\". Use search_ports to find slugs."
},
"datum": {
"enum": [
"LAT",
"MSL",
"MLLW",
"MHW",
"MLW",
"MHHW",
"MTL",
"HAT"
],
"type": "string",
"description": "Vertical datum: LAT, MSL, MLLW, MHW, MLW, MHHW, MTL, HAT (default: native datum of station)."
}
}
}Get weather forecast (temperature, wind, precipitation, UV, conditions) for a port or coordinates. Returns hourly and daily data.
| Argument | Type | Description |
|---|---|---|
| lat | number | Latitude. |
| lon | number | Longitude. |
| days | integer | Forecast days, 1-7 (default: 3). |
| port | string | Station slug. |
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"description": "Latitude."
},
"lon": {
"type": "number",
"description": "Longitude."
},
"days": {
"type": "integer",
"maximum": 7,
"minimum": 1,
"description": "Forecast days, 1-7 (default: 3)."
},
"port": {
"type": "string",
"description": "Station slug."
}
}
}List all 188 countries that have tide stations, with their station counts and ISO codes.
No arguments.
{
"type": "object",
"properties": {}
}Search for tide stations by name or country. Returns port name, slug, coordinates, timezone, country.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results, 1-500 (default: 50). |
| search | string | Search by station name (partial match). |
| country | string | Filter by country slug, e.g. "united-kingdom" or "france". |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Max results, 1-500 (default: 50)."
},
"search": {
"type": "string",
"description": "Search by station name (partial match)."
},
"country": {
"type": "string",
"description": "Filter by country slug, e.g. \"united-kingdom\" or \"france\"."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 3, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.