mcpField
N
NOAA Tides and Currents

NOAA Tides and Currents

Remote
perigeetides.comScience & Education6Updated 4w ago

About NOAA Tides and Currents

NOAA Tides and Currents is an MCP server for accessing NOAA CO-OPS coastal and ocean data, with locally computed sun and moon information. It is aimed at clients handling tide, current, weather, station, and flooding questions, and includes reference data and prompts for common reports.

Key features

  1. 01Retrieve water levels, tide and current observations and predictions
  2. 02Search stations and inspect metadata and tidal datums
  3. 03Access sea-level trends, projections, and flooding data
  4. 04Get wind and marine forecasts for US locations
  5. 05Calculate sun and moon events and positions

Use cases

  1. 01Find tide times and heights for a location
  2. 02Review currents and marine weather before boating
  3. 03Compare local flooding history with sea-level projections

MCP support

Exposes 25 tools, resources, and prompts to MCP clients over stdio or optional streamable HTTP. Tools query NOAA CO-OPS and NWS APIs, while astronomy calculations are performed locally.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://perigeetides.com/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Packages
npm@ryancardin/noaa-tides-currents-mcp-server2.1.0

Tools

26
ParameterTypeRequiredDescription
dateenumNoShortcut window: "today" = midnight to now, "latest" = single most recent reading, "recent" = last 72 hours. Mutually exclusive with begin_date/end_date/range.today | latest | recent
datumenumNoVertical reference datum for heights. MLLW is the standard chart datum for coastal stations. IGLD and LWD apply to Great Lakes stations ONLY; NAVD/CRD exist only at stations where computed. Check a station's supported datums with noaa_get_station_datums.MHHW | MHW | MTL | MSL | MLW | MLLW | NAVD | STND | IGLD | LWD | CRD
rangeintegerNoNumber of hours. With begin_date: hours forward. With end_date: hours back. Alone: hours back from now.
unitsenumNoUnit system. english: feet, °F, knots (wind AND currents), nautical miles. metric: meters, °C, m/s for wind but cm/s for currents, kilometers. Air pressure is millibars and salinity is PSU in BOTH systems.english | metric
stationstringYesStation ID. Water-level/met stations use 7-digit numeric IDs (e.g. "9414290" San Francisco); current stations use alphanumeric IDs (e.g. "cb0102"). Find stations with noaa_search_stations or noaa_find_nearest_stations.
end_datestringNoEnd date/time. Same formats as begin_date.
intervalenumNoObservation interval: "6" = 6-minute (standard, 31-day max), "1" = 1-minute preliminary (4-day max), "hourly" = verified hourly heights (1-year max).1 | 6 | hourly
time_zoneenumNoTime zone for timestamps: gmt = UTC, lst = station local standard time (no DST), lst_ldt = station local time with DST. Note: daily_mean data requires lst.gmt | lst | lst_ldt
begin_datestringNoStart date/time. Formats: yyyyMMdd, "yyyyMMdd HH:mm", MM/dd/yyyy, or ISO yyyy-MM-dd[THH:mm].
response_formatenumNoOutput format: "markdown" for a readable summary table, "json" for the complete structured payload.markdown | json

Details

From the project README

🌊 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.


Tools (25)

Observations & Predictions (Data API)
ToolWhat it does
noaa_get_water_levelsObserved water levels: 1-minute, 6-minute, or hourly series, preliminary/verified quality flags decoded
noaa_get_water_level_summarieshigh_low (HH/H/L/LL daily extremes), daily_mean (Great Lakes), daily_max_min, monthly_mean datum tables
noaa_get_tide_predictionsHarmonic tide predictions — hilo high/low events (up to 10 years) or interval series
noaa_get_currentsObserved current speed/direction by depth bin (ADCP), optional beam diagnostics
noaa_get_current_predictionsPredicted currents — max_slack flood/ebb/slack events or interval series
noaa_get_meteorological_dataWind, air/water temperature, pressure, air gap (bridge clearance), conductivity, visibility, humidity, salinity
Station Discovery & Metadata (Metadata API)
ToolWhat it does
noaa_search_stationsSearch the station directory by capability type, name substring, state — paginated
noaa_find_nearest_stationsNearest stations to any lat/lon (great-circle, cached directory), filterable by type
noaa_get_station_infoFull station record with expandable sensors, flood levels, benchmarks, bins, deployments...
noaa_get_station_datumsTidal datum elevations (MLLW, MSL, MHHW, NAVD88...), HAT/LAT, historic extremes, current or superseded epoch
noaa_get_harmonic_constituentsThe M2/S2/K1/... constituents behind a station's predictions (water level or current ellipse form)
noaa_get_prediction_offsetsSubordinate-station time/height offsets from their reference stations (tide or current)
Climate & Derived Products (DPAPI)
ToolWhat it does
noaa_get_sea_level_trendsLong-term relative sea level trend with error bars and observation period
noaa_get_sea_level_rise_projections2022 Interagency SLR scenario projections per decade through 2150
noaa_get_extreme_water_levelsAnnual exceedance probability levels (e.g. the "100-year" water level)
noaa_get_top_ten_water_levelsHighest water levels ever recorded, with causal events (hurricanes, nor'easters)
noaa_get_high_tide_floodingHTF flood-day counts (daily/monthly/seasonal/annual), outlooks, decadal projections, likelihoods
Astronomy (computed locally)
ToolWhat it does
astro_get_moon_phasePhase, illumination, age, distance for a date or range (spring/neap tide context)
astro_get_next_moon_phaseNext new/full/quarter moon date(s)
astro_get_sun_timesSunrise/sunset, twilights, golden hour, day length for any location/date
astro_get_sun_positionAzimuth/altitude (+ approximate declination/RA)
astro_get_next_sun_eventNext occurrence(s) of any sun event
Wind & Marine Forecasts (NWS Weather API)
ToolWhat it does
nws_get_wind_forecastHourly numeric wind forecast (speed/gust/direction, wave height where gridded) for any US lat/lon, up to ~7 days
nws_get_marine_forecastOfficial Coastal Waters Forecast narrative for the marine zone covering a lat/lon, incl. Small Craft Advisories
Reference
ToolWhat it does
noaa_get_reference_guideCurated 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 API — api.tidesandcurrents.noaa.gov/api/prod/datagetter
  • Metadata API — api.tidesandcurrents.noaa.gov/mdapi/prod/webapi
  • Derived Product API — api.tidesandcurrents.noaa.gov/dpapi/prod/webapi
  • Astronomy — suncalc, 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.

2.1.0 tool delivery contract

Every raw tool advertises an output schema. Successful provider payloads retain their fields and add _response: { contractVersion: "2026-09-29.1", status: "complete" }. Reference guides have a separate typed topic/guide result. Both text and structured payloads are bounded: an oversized result returns an explicit response_too_large error with narrowing guidance instead of truncated text alongside an unbounded structured response. Error metadata states whether retry may help. Chained provider reads share a 45-second cancellation deadline and each request has an 18-second total retry budget. No fishing, navigation or catch probability is inferred from raw data.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.