Skip to main content
Glama
RyanCardin15

noaa-tidesandcurrents-mcp

by RyanCardin15

🌊 NOAA Tides & Currents MCP Server

npm version License: MIT TypeScript MCP

A Model Context Protocol server for NOAA CO-OPS Tides and Currents data

Built by Cardin Labs · Hosted at Perigee

Water levels · tide predictions · currents · marine weather · station metadata · tidal datums · harmonic constituents · sea level trends & projections · high tide flooding · sun & moon calculations


Quick Start

# Run immediately with npx
npx @ryancardin/noaa-tides-currents-mcp-server

# Or the short alias
npx noaa-mcp

Claude Desktop / Claude Code configuration

{
  "mcpServers": {
    "noaa": {
      "command": "npx",
      "args": ["-y", "@ryancardin/noaa-tides-currents-mcp-server"]
    }
  }
}

Claude Code one-liner:

claude mcp add noaa -- npx -y @ryancardin/noaa-tides-currents-mcp-server

HTTP mode (optional)

npx noaa-mcp --http --port 3000   # stateless streamable HTTP at http://localhost:3000/mcp

No API key is required — NOAA's CO-OPS APIs are open.


Related MCP server: LocalTides MCP Server

Tools (25)

Observations & Predictions (Data API)

Tool

What it does

noaa_get_water_levels

Observed water levels: 1-minute, 6-minute, or hourly series, preliminary/verified quality flags decoded

noaa_get_water_level_summaries

high_low (HH/H/L/LL daily extremes), daily_mean (Great Lakes), daily_max_min, monthly_mean datum tables

noaa_get_tide_predictions

Harmonic tide predictions — hilo high/low events (up to 10 years) or interval series

noaa_get_currents

Observed current speed/direction by depth bin (ADCP), optional beam diagnostics

noaa_get_current_predictions

Predicted currents — max_slack flood/ebb/slack events or interval series

noaa_get_meteorological_data

Wind, air/water temperature, pressure, air gap (bridge clearance), conductivity, visibility, humidity, salinity

Station Discovery & Metadata (Metadata API)

Tool

What it does

noaa_search_stations

Search the station directory by capability type, name substring, state — paginated

noaa_find_nearest_stations

Nearest stations to any lat/lon (great-circle, cached directory), filterable by type

noaa_get_station_info

Full station record with expandable sensors, flood levels, benchmarks, bins, deployments...

noaa_get_station_datums

Tidal datum elevations (MLLW, MSL, MHHW, NAVD88...), HAT/LAT, historic extremes, current or superseded epoch

noaa_get_harmonic_constituents

The M2/S2/K1/... constituents behind a station's predictions (water level or current ellipse form)

noaa_get_prediction_offsets

Subordinate-station time/height offsets from their reference stations (tide or current)

Climate & Derived Products (DPAPI)

Tool

What it does

noaa_get_sea_level_trends

Long-term relative sea level trend with error bars and observation period

noaa_get_sea_level_rise_projections

2022 Interagency SLR scenario projections per decade through 2150

noaa_get_extreme_water_levels

Annual exceedance probability levels (e.g. the "100-year" water level)

noaa_get_top_ten_water_levels

Highest water levels ever recorded, with causal events (hurricanes, nor'easters)

noaa_get_high_tide_flooding

HTF flood-day counts (daily/monthly/seasonal/annual), outlooks, decadal projections, likelihoods

Astronomy (computed locally)

Tool

What it does

astro_get_moon_phase

Phase, illumination, age, distance for a date or range (spring/neap tide context)

astro_get_next_moon_phase

Next new/full/quarter moon date(s)

astro_get_sun_times

Sunrise/sunset, twilights, golden hour, day length for any location/date

astro_get_sun_position

Azimuth/altitude (+ approximate declination/RA)

astro_get_next_sun_event

Next occurrence(s) of any sun event

Wind & Marine Forecasts (NWS Weather API)

Tool

What it does

nws_get_wind_forecast

Hourly numeric wind forecast (speed/gust/direction, wave height where gridded) for any US lat/lon, up to ~7 days

nws_get_marine_forecast

Official Coastal Waters Forecast narrative for the marine zone covering a lat/lon, incl. Small Craft Advisories

Reference

Tool

What it does

noaa_get_reference_guide

Curated NOAA reference: products, datums, units, time zones, intervals, station types, data limits, quality flags, date formats, marine forecasts

Every tool supports response_format: "markdown" (readable tables with units spelled out — the default) or "json" (complete structured payload), and attaches structured content for MCP clients that consume it.

Resources

  • noaa://guide/getting-started — workflow recipes and common pitfalls

  • noaa://reference/{topic} — the ten reference topics above as pinnable resources

Prompts

  • tide_report — tide report for a place/station and date

  • boating_conditions — pre-departure briefing: tides, currents, wind, daylight

  • station_flood_risk — flood risk profile: HTF history, extremes, trends, projections

  • station_overview — everything a station offers


The Nuances (handled for you)

These are the things that make NOAA's API tricky — this server encodes them:

  • Datums matter. Heights are meaningless without a vertical reference. MLLW (chart datum) is the default; stations differ in which datums they support (Great Lakes use IGLD/LWD and have no tide predictions). noaa_get_station_datums gives the conversion table.

  • Units are asymmetric. metric means m/s for wind but cm/s for currents; air pressure is millibars and salinity PSU in both systems. Every response labels its units.

  • Per-product request-span limits (4 days for 1-minute data, 31 days for 6-minute, 1 year hourly, 10 years for hilo predictions...) are validated client-side with actionable messages before hitting NOAA.

  • Two station ID schemes. Water-level/met stations are 7-digit numeric (9414290); current stations are alphanumeric (cb0102).

  • Reference vs subordinate stations. Subordinate (S) prediction stations only support hilo predictions, derived by offsets from a reference (R) station.

  • daily_mean requires local standard time and only exists for Great Lakes stations — enforced automatically.

  • Quality flags decoded. Preliminary vs verified data, sigma, flag alphabets (which differ between preliminary and verified!), and HH/H/L/LL tide types are explained inline.

  • Predictions are astronomical — storm surge is not included; compare with observed water levels.

  • Station directory is cached (6 h) so nearest-station searches don't refetch thousands of records.


Usage Examples

"When is high tide in Boston tomorrow?"

  1. noaa_find_nearest_stations (type tidepredictions) → 8443970 BOSTON

  2. noaa_get_tide_predictions (interval hilo) → high/low times & heights above MLLW

"How strong will the current be in the Cape Cod Canal this afternoon?"

  1. noaa_find_nearest_stations (type currentpredictions)

  2. noaa_get_current_predictions (interval max_slack) → max flood/ebb (knots) and slack times

"How often does Providence flood now vs 20 years ago, and what's projected for 2050?"

  1. noaa_get_high_tide_flooding (report annual, range 25)

  2. noaa_get_high_tide_flooding (report projections, decade 2050)

  3. noaa_get_sea_level_trends + noaa_get_sea_level_rise_projections


Development

npm install
npm run build        # tsc → dist/
npm test             # vitest unit tests (validation, formatting, astronomy)
npm run test:live    # end-to-end smoke test against the live NOAA API
npm run inspector    # MCP Inspector against dist/index.js
npm run dev          # tsx src/index.ts

Architecture

src/
├── index.ts            # entry point: stdio (default) or --http streamable HTTP
├── constants.ts        # API base URLs, timeouts, cache TTLs, response limits
├── client/             # shared HTTP layer (retry/backoff, error mapping) + TTL cache
├── validation/         # date normalization + per-product span limit enforcement
├── format/             # unit labeling, flag legends, markdown/json response shaping
├── schemas/            # shared Zod field schemas with nuance-carrying descriptions
├── services/           # Data API, Metadata API, DPAPI, moon & sun services
├── tools/              # 25 tool registrations grouped by domain
├── resources/          # noaa:// reference resources
├── prompts/            # workflow prompt templates
└── reference/          # curated NOAA reference content

Data sources:

  • Data APIapi.tidesandcurrents.noaa.gov/api/prod/datagetter

  • Metadata APIapi.tidesandcurrents.noaa.gov/mdapi/prod/webapi

  • Derived Product APIapi.tidesandcurrents.noaa.gov/dpapi/prod/webapi

  • Astronomysuncalc, computed locally

License

MIT © Cardin LLC (Cardin Labs)

NOAA data is provided by the NOAA Center for Operational Oceanographic Products and Services (CO-OPS). This project is not affiliated with or endorsed by NOAA.

Install Server
A
license - permissive license
B
quality
B
maintenance

Maintenance

Maintainers
<1hResponse time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Tides MCP — NOAA Tides and Currents data

  • Geospatial MCP server for earthquake, tsunami, volcano, disaster, and FX data queries.

  • MCP server for Mireye Earth — federal-source-cited geospatial data for any MCP-aware agent.

View all MCP Connectors

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/RyanCardin15/Perigee-Tides'

If you have feedback or need assistance with the MCP directory API, please join our Discord server