noaa-tidesandcurrents-mcp
This MCP server gives an AI assistant read-only access to NOAA CO-OPS marine, tidal, and astronomical data for US coastal locations.
Water levels — observed 1/6-minute or hourly water levels for a station, with datum, units, and time zone options.
Tide predictions — harmonic high/low (
hilo) or interval tide predictions for a station and date range.Currents — observed current speed/direction by depth bin, plus predicted flood/ebb/slack events.
Meteorological data — wind, air/water temperature, pressure, and other sensor products per station.
Station discovery — list stations by type, and fetch full details/sensors for a specific station.
Sea level & extremes — long-term sea level trends with error margins, extreme water level exceedance probabilities, and top-ten highest/lowest water levels.
High tide flooding — daily, monthly, seasonal, annual counts, decadal sea-level-rise projections, and daily likelihoods by flood threshold.
Astronomy (computed locally) — moon phase for a date or range, next moon phases, sunrise/sunset/twilight/golden-hour times and ranges, sun azimuth/altitude position, and next sun events.
Reference help — lookup of valid parameter values (time zones, datums, units, intervals, velocity types, products, station types, date/output formats).
Output control — most tools let you pick units (english/metric), datum, time zone, and response format (json/xml/csv, or json/text for astronomy).
The server supports retrieving data from NOAA API in XML format, as specified in various tool parameters
Click on "Deploy 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., "@noaa-tidesandcurrents-mcp what are the tide predictions for Seattle tomorrow?"
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.
🌊 NOAA Tides & Currents MCP Server
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-mcpClaude 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-serverHTTP mode (optional)
npx noaa-mcp --http --port 3000 # stateless streamable HTTP at http://localhost:3000/mcpNo API key is required — NOAA's CO-OPS APIs are open.
Related MCP server: mcp-noaa-tides
Tools (25)
Observations & Predictions (Data API)
Tool | What it does |
| Observed water levels: 1-minute, 6-minute, or hourly series, preliminary/verified quality flags decoded |
| high_low (HH/H/L/LL daily extremes), daily_mean (Great Lakes), daily_max_min, monthly_mean datum tables |
| Harmonic tide predictions — |
| Observed current speed/direction by depth bin (ADCP), optional beam diagnostics |
| Predicted currents — |
| Wind, air/water temperature, pressure, air gap (bridge clearance), conductivity, visibility, humidity, salinity |
Station Discovery & Metadata (Metadata API)
Tool | What it does |
| Search the station directory by capability type, name substring, state — paginated |
| Nearest stations to any lat/lon (great-circle, cached directory), filterable by type |
| Full station record with expandable sensors, flood levels, benchmarks, bins, deployments... |
| Tidal datum elevations (MLLW, MSL, MHHW, NAVD88...), HAT/LAT, historic extremes, current or superseded epoch |
| The M2/S2/K1/... constituents behind a station's predictions (water level or current ellipse form) |
| Subordinate-station time/height offsets from their reference stations (tide or current) |
Climate & Derived Products (DPAPI)
Tool | What it does |
| Long-term relative sea level trend with error bars and observation period |
| 2022 Interagency SLR scenario projections per decade through 2150 |
| Annual exceedance probability levels (e.g. the "100-year" water level) |
| Highest water levels ever recorded, with causal events (hurricanes, nor'easters) |
| HTF flood-day counts (daily/monthly/seasonal/annual), outlooks, decadal projections, likelihoods |
Astronomy (computed locally)
Tool | What it does |
| Phase, illumination, age, distance for a date or range (spring/neap tide context) |
| Next new/full/quarter moon date(s) |
| Sunrise/sunset, twilights, golden hour, day length for any location/date |
| Azimuth/altitude (+ approximate declination/RA) |
| Next occurrence(s) of any sun event |
Wind & Marine Forecasts (NWS Weather API)
Tool | What it does |
| Hourly numeric wind forecast (speed/gust/direction, wave height where gridded) for any US lat/lon, up to ~7 days |
| Official Coastal Waters Forecast narrative for the marine zone covering a lat/lon, incl. Small Craft Advisories |
Reference
Tool | What it does |
| 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 pitfallsnoaa://reference/{topic}— the ten reference topics above as pinnable resources
Prompts
tide_report— tide report for a place/station and dateboating_conditions— pre-departure briefing: tides, currents, wind, daylightstation_flood_risk— flood risk profile: HTF history, extremes, trends, projectionsstation_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_datumsgives the conversion table.Units are asymmetric.
metricmeans 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
hilopredictions, derived by offsets from a reference (R) station.daily_meanrequires 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?"
noaa_find_nearest_stations(typetidepredictions) →8443970 BOSTONnoaa_get_tide_predictions(intervalhilo) → high/low times & heights above MLLW
"How strong will the current be in the Cape Cod Canal this afternoon?"
noaa_find_nearest_stations(typecurrentpredictions)noaa_get_current_predictions(intervalmax_slack) → max flood/ebb (knots) and slack times
"How often does Providence flood now vs 20 years ago, and what's projected for 2050?"
noaa_get_high_tide_flooding(reportannual, range 25)noaa_get_high_tide_flooding(reportprojections, decade 2050)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.tsArchitecture
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 contentData sources:
Data API —
api.tidesandcurrents.noaa.gov/api/prod/datagetterMetadata API —
api.tidesandcurrents.noaa.gov/mdapi/prod/webapiDerived Product API —
api.tidesandcurrents.noaa.gov/dpapi/prod/webapiAstronomy — 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.
Available Tools
25 toolsastro_get_moon_phaseGet Moon PhaseARead-onlyIdempotent
Get the moon phase for a date (or each day of a date range if end_date is given): phase name (New Moon, Waxing Crescent, ...), illuminated fraction, age in days within the 29.53-day cycle, distance (km), apparent diameter (degrees), and waxing/waning.
Tide context: spring tides (largest range) occur just after new and full moons; neap tides after quarter moons. Computed locally — no NOAA data involved.
Inputs: date, end_date, latitude, longitude, +1 more. Returns: _response
astro_get_next_moon_phaseGet Next Moon Phase OccurrenceARead-onlyIdempotent
Find the date(s) of the next occurrence(s) of a principal moon phase (New Moon, First Quarter, Full Moon, Last Quarter) from a starting date.
Use for: "when is the next full moon?", planning around spring tides (which follow new/full moons by 1–2 days).
Inputs: phase (required), date, count, response_format. Returns: _response
astro_get_next_sun_eventGet Next Sun EventARead-onlyIdempotent
Find the next occurrence(s) of a sun event (sunrise, sunset, dawn, dusk, solarNoon, night, nightEnd, goldenHourStart, goldenHourEnd, nauticalDawn, nauticalDusk, astronomicalDawn, astronomicalDusk) at a location from a starting date.
Use for: "when is sunset today?", planning golden-hour photography or dawn fishing around tide windows.
Inputs: event (required), latitude (required), longitude (required), date, +3 more. Returns: _response
astro_get_sun_positionGet Sun PositionARead-onlyIdempotent
Get the sun's position for a date, time, and location: azimuth (degrees clockwise from north as rendered here), altitude above the horizon (degrees), plus approximate declination and right ascension.
Use for: shadow/lighting analysis, solar exposure. Computed locally with suncalc; declination/RA are approximate.
Inputs: latitude (required), longitude (required), date, time, +1 more. Returns: _response
astro_get_sun_timesGet Sun TimesARead-onlyIdempotent
Get sunrise, sunset, solar noon, dawn/dusk (civil), nautical dawn/dusk, astronomical dawn/dusk, golden hour, and day length for a location and date (or each day of a range if end_date is given).
Times are ISO UTC unless an IANA timezone is provided. At high latitudes some events may be null (e.g. no astronomical night in summer). Computed locally.
Inputs: latitude (required), longitude (required), date, end_date, +2 more. Returns: _response
noaa_find_nearest_stationsFind Nearest NOAA StationsARead-onlyIdempotent
Find the NOAA stations closest to a latitude/longitude point, sorted by distance.
Use this to answer "what's the tide station near ?" — geocode the place to coordinates first, then call this. Filter by type to match the data you need (e.g. type "tidepredictions" before calling noaa_get_tide_predictions, "currents" before noaa_get_currents — current stations have different IDs than water-level stations).
Distance is computed great-circle (Haversine) and reported in both km and miles. (NOAA's API has no native coordinate search; this tool maintains a cached station directory.)
Inputs: latitude (required), longitude (required), type, limit, +2 more. Returns: _response
noaa_get_current_predictionsGet Current PredictionsARead-onlyIdempotent
Get predicted tidal currents for a NOAA current prediction station.
interval="max_slack" (recommended for navigation) returns the tidal-current events — maximum flood, maximum ebb, and slack water times — up to 1 year per request. Other intervals (h, 1, 6, 10, 30, 60 minutes) return a velocity time series — up to 31 days.
UNITS WARNING: english = knots; metric = cm/s.
vel_type="speed_dir" returns Speed/Direction pairs; "default" returns velocities projected on the flood/ebb axis (Velocity_Major: positive = flood direction, negative = ebb) with meanFloodDir/meanEbbDir. Subordinate (type "S") prediction stations derive from a reference station — see noaa_get_prediction_offsets.
Inputs: station (required), bin, date, range, +7 more. Returns: _response
noaa_get_currentsGet Observed CurrentsARead-onlyIdempotent
Get observed current speed and direction from a NOAA current meter station.
Current stations use alphanumeric IDs (e.g. "cb0102" Chesapeake, "bh0101" Boston Harbor) — NOT the 7-digit water-level station IDs. Find them with noaa_search_stations (type "currents") or noaa_find_nearest_stations.
UNITS WARNING: english = knots, but metric = cm/s (centimeters/second, not m/s).
Returns per record: t (time), s (speed), d (direction, degrees true), b (bin number). Max 7 days per request. Set expand_detailed=true to include per-beam echo intensity and correlation diagnostics.
Inputs: station (required), bin, date, range, +6 more. Returns: _response
noaa_get_extreme_water_levelsGet Extreme Water LevelsARead-onlyIdempotent
Get NOAA's extreme water level exceedance statistics for a station: the annual exceedance probability levels (e.g. the 1%-annual-chance "100-year" level) and historical extreme events, computed from the station's verified record.
Use for flood risk questions ("what water level has a 1% chance per year at X?"). Levels are relative to the station's datums for the 1983–2001 epoch. Only long-record stations have this product.
Inputs: station (required), units, levelType, extremeType, +1 more. Returns: _response
noaa_get_harmonic_constituentsGet Harmonic ConstituentsARead-onlyIdempotent
Get the harmonic constituents NOAA uses to compute tide or current predictions at a station — the amplitude, phase, and angular speed of each tidal constituent (M2, S2, N2, K1, O1, ...).
For water-level stations: amplitude (feet/meters), phase_GMT and phase_local (degrees), speed (degrees/hour). For current stations (alphanumeric IDs) constituents are current ellipses (major/minor amplitudes and phases per depth bin — pass bin to filter).
Use for: building custom tide computations, checking a station's dominant constituents (M2 amplitude indicates semidiurnal range), verifying whether a station is harmonically predicted at all. Only reference (R) stations have constituents — subordinate stations use offsets (noaa_get_prediction_offsets).
Inputs: station (required), bin, units, response_format. Returns: _response
noaa_get_high_tide_floodingGet High Tide Flooding DataARead-onlyIdempotent
Get NOAA high tide flooding (HTF, "nuisance"/"sunny day" flooding) statistics for a station. Reports:
daily: flood occurrence per day (REQUIRES start_date and end_date, YYYYMMDD)
monthly / seasonal / annual: counts of minor/moderate/major flood days per period (filter with year/month/season_months, or range = last N periods)
met_year_annual: counts by meteorological year (May–April)
annual_outlook: NOAA's projected flood-day outlook for the coming met year
projections: decadal flood-day projections through 2100 (filter by decade, flood_threshold)
record_days: record flood-day counts
likely_scenarios: likely decadal flooding scenarios
daily_likelihoods: day-by-day flood likelihood forecasts
Use for: "how often does X flood?", trends in nuisance flooding, future flooding projections. Not all stations have HTF products — check the HTFhistorical flag via noaa_get_station_info.
Inputs: station (required), year, month, range, +8 more. Returns: _response
noaa_get_meteorological_dataGet Meteorological & Sensor DataARead-onlyIdempotent
Get observed meteorological/oceanographic sensor data from a NOAA station.
Products: air_temperature, water_temperature, wind (speed/gust/direction), air_pressure, air_gap (bridge clearance to water surface), conductivity, visibility, humidity, salinity.
Units by system: temps °F/°C; wind knots (english) or m/s (metric); air_gap feet/meters; visibility nautical miles/kilometers; air_pressure always millibars; salinity always PSU. Max span ~31 days per request; interval "6" (6-minute, default) or "h" (hourly).
Not every station has every sensor — check with noaa_get_station_info (expand ["sensors"]). Water-level data is served by noaa_get_water_levels, not this tool.
Inputs: product (required), station (required), date, range, +6 more. Returns: _response
noaa_get_prediction_offsetsGet Prediction Offsets (Subordinate Stations)ARead-onlyIdempotent
Get the offsets a subordinate (type "S") prediction station applies to its reference station's predictions.
kind "tide": returns refStationId, time offsets for high/low tide (minutes), height offsets for high/low tide, and whether the height adjustment is a ratio (multiplied) or fixed value — this is how NOAA derives subordinate-station tide times from the reference harmonic station.
kind "current": returns refStationId/bin, mean flood/ebb directions, and time adjustments (minutes) for max flood, slack-before-ebb, max ebb, slack-before-flood plus amplitude ratios. Note: current prediction offsets are indexed per bin — pass the station_bin_suffix ID form (e.g. "ACT0091_1") if the plain ID returns nothing.
Reference (R) stations return empty/null offsets — they don't need any.
Inputs: station (required), kind, response_format. Returns: _response
noaa_get_reference_guideGet NOAA API Reference GuideARead-onlyIdempotent
Get curated reference documentation for NOAA CO-OPS concepts and parameters. Topics:
products: Every NOAA CO-OPS data product and which tool serves it
datums: Vertical datums (MLLW, MSL, IGLD...) and station applicability
units: What english vs metric means per measurement (incl. cm/s currents)
time_zones: gmt / lst / lst_ldt semantics and restrictions
intervals: Valid interval values per product family
station_types: Station type filters and station ID formats
data_limits: Maximum date-range span per product
quality_flags: Data quality fields (v/s/f/q), flag letters, HH/H/L/LL
date_formats: Accepted date formats and parameter combinations
marine_forecast: NWS wind & marine forecast tools vs CO-OPS observations
Consult this before constructing unusual requests — especially "datums" (which vertical reference to use and station applicability), "units" (english/metric asymmetries like cm/s current speeds), and "data_limits" (maximum date spans per product).
Inputs: topic (required). Returns: guide, topic
noaa_get_sea_level_rise_projectionsGet Sea Level Rise ProjectionsARead-onlyIdempotent
Get NOAA's Interagency Sea Level Rise Scenario projections for a station (from the 2022 technical report): projected relative sea level (meters or feet, see units field) per decade through 2150 under the chosen scenario.
Scenarios: low, intermediate-low, intermediate, intermediate-high, high, extreme, or all. Use for coastal planning questions ("how much sea level rise is projected at X by 2050?"). Pair with noaa_get_sea_level_trends (observed) and noaa_get_high_tide_flooding (flooding impact).
Inputs: units, station, scenario, projection_year, +1 more. Returns: _response
noaa_get_sea_level_trendsGet Relative Sea Level TrendsARead-onlyIdempotent
Get the long-term relative sea level trend at a NOAA station: trend and error (reported by NOAA in mm/yr or inches/decade — the payload's trendUnits field says which), the observation period (startDate/endDate), and seasonal amplitude.
Relative sea level combines ocean rise AND local land movement (subsidence/uplift), so trends vary widely by station (e.g. strongly positive on the Gulf Coast, negative in Alaska). Requires a station with a long water-level record; omit station to list all (affil "US" or "Global" filters the network).
Inputs: affil, station, response_format. Returns: _response
noaa_get_station_datumsGet Station DatumsARead-onlyIdempotent
Get the accepted tidal datum values for a station: the elevations of MHHW, MHW, MTL, MSL, DTL, MLW, MLLW, STND, NAVD88 (where computed), plus GT (great diurnal range), MN (mean range), LAT/HAT (lowest/highest astronomical tide), and the station's historical extreme min/max water levels with dates.
epoch "current" returns the present National Tidal Datum Epoch (1983–2001) values; "superseded" returns the prior epoch's values (useful for historical comparisons — not all stations have one).
All values share one reference zero (the station datum), so datum-to-datum conversion is subtraction: height_above_MLLW = height_above_MSL + (MSL − MLLW). Use this tool to (1) check which datums a station supports before requesting data, and (2) convert heights between datums.
Inputs: station (required), epoch, units, response_format. Returns: _response
noaa_get_station_infoGet Station InfoARead-onlyIdempotent
Get a NOAA station's full metadata record: location, state, time zone, tide type, Great Lakes flag, capability flags, and links to available sub-resources.
Optionally expand sub-resources inline via the "expand" list:
details (established/removed dates), sensors (installed instruments + elevations), floodlevels (NOS/NWS minor/moderate/major flood thresholds), benchmarks, products (available data page links), notices, disclaimers — for water-level stations
bins (ADCP depth bins), deployments — for current stations (alphanumeric IDs)
Use this before requesting data to confirm what the station actually collects. For datum values use noaa_get_station_datums; for harmonic constituents use noaa_get_harmonic_constituents.
Inputs: station (required), units, expand, response_format. Returns: _response
noaa_get_tide_predictionsGet Tide PredictionsARead-onlyIdempotent
Get NOAA harmonic tide predictions (future or past) for a station.
interval="hilo" (recommended for "when is high/low tide") returns the daily tide events with type H/L — up to 10 years per request. Other intervals (h, 1, 5, 6, 10, 15, 30, 60 minutes) return a height time series — up to 1 year per request.
Heights are relative to the requested datum (MLLW default). Notes:
Great Lakes stations have NO tide predictions (lake levels are not tidal).
Subordinate stations (type "S") only support interval=hilo; use the station's reference (R) station for interval series.
Predictions are astronomical only — they exclude weather effects (storm surge, wind setup). Compare with noaa_get_water_levels for actual conditions.
Inputs: station (required), date, datum, range, +6 more. Returns: _response
noaa_get_top_ten_water_levelsGet Top Ten / Peak Water LevelsARead-onlyIdempotent
Get a station's highest recorded water levels: analysis "toptenwaterlevels" returns the ten highest events on record (with date, height, causal event name like "Great New England Hurricane", and category); "peakwaterlevels" returns peak event records (optionally filtered by year).
Heights are relative to the requested datum (MHHW is typical for flood comparisons). Use for "what's the worst flooding ever recorded at X?".
Inputs: station (required), year, datum, units, +2 more. Returns: _response
noaa_get_water_levelsGet Observed Water LevelsARead-onlyIdempotent
Get observed water levels from a NOAA tide station as a time series.
Choose the interval: "6" = standard 6-minute observations (preliminary or verified, max 31 days per request), "1" = 1-minute preliminary data (max 4 days), "hourly" = verified hourly heights (max 1 year). Heights are relative to the requested datum (MLLW by default — the US nautical chart zero).
Returns per record: t (timestamp in requested time zone), v (height), s (sigma), f (quality flags, decoded in output), q (p=preliminary, v=verified). Recent data is preliminary; verification takes days to weeks.
Use for: "what is the water level right now" (date=latest), storm surge analysis, comparing observed vs predicted tide. Do NOT use for future tides — use noaa_get_tide_predictions.
Inputs: station (required), date, datum, range, +6 more. Returns: _response
noaa_get_water_level_summariesGet Water Level Summaries (High/Low, Daily, Monthly)ARead-onlyIdempotent
Get verified summary water-level products from a NOAA station:
high_low: each day's observed highs/lows with ty = HH (higher high), H, L, LL (lower low). Max 1 year per request.
daily_mean: daily mean levels — GREAT LAKES STATIONS ONLY; NOAA requires local standard time, which this tool applies automatically. Max 10 years.
daily_max_min: daily maxima/minima from hourly and 6-minute data with completeness percentages. Max 10 years.
monthly_mean: monthly tidal datum means (columns MHHW, MHW, MSL, MTL, MLW, MLLW, DTL, GT, MN, DHQ, DLQ, HWI, LWI, highest, lowest). Max 200 years — ideal for long-term climatology.
Use for: historical extremes, mixed-tide analysis (HH vs H), long-term averages. For raw time series use noaa_get_water_levels; for future tides use noaa_get_tide_predictions.
Inputs: product (required), station (required), date, datum, +6 more. Returns: _response
noaa_search_stationsSearch NOAA StationsARead-onlyIdempotent
Search the NOAA CO-OPS station directory by capability type, name, and/or state.
Filter with:
type: what the station does (waterlevels, tidepredictions, currents, currentpredictions, met, ...) — pick the type matching the data you plan to request.
name: case-insensitive substring ("San Francisco", "Boston").
state: two-letter code ("CA", "MA").
Returns id, name, location, tide type, Great Lakes flag, and for prediction stations whether they are reference (R, harmonic) or subordinate (S, offset-based — hilo predictions only). Results are paginated (limit/offset). For proximity search by coordinates use noaa_find_nearest_stations instead.
Inputs: name, type, limit, state, +2 more. Returns: _response
nws_get_marine_forecastGet Marine Text Forecast (NWS)ARead-onlyIdempotent
Get the official NWS Coastal Waters Forecast (CWF) narrative for the marine zone covering a latitude/longitude — day-part wind/seas text ("SE winds 10 to 15 kt... Bay waters choppy"), including Small Craft Advisories.
The point must lie in (or very near) US coastal waters; CWF zones extend roughly 20-60 NM offshore. Returns the zone's segment from the latest bulletin plus the office-wide synopsis.
For numeric hourly wind values use nws_get_wind_forecast; for observed wind at a NOAA station use noaa_get_meteorological_data (product "wind").
Inputs: latitude (required), longitude (required), response_format. Returns: _response
nws_get_wind_forecastGet Wind Forecast (NWS)ARead-onlyIdempotent
Get the NWS hourly wind FORECAST (speed, gust, direction — plus wave height where the grid carries it) for a latitude/longitude.
Data comes from the NWS forecast grid (api.weather.gov gridpoints — numeric NDFD values, not display strings). Horizon is up to ~7 days (156 hours), starting at the current hour. US and territories only. Wave height appears for marine/nearshore gridpoints; swell/period fields are typically only populated for open-ocean points.
Units: english = knots and feet (default), metric = m/s and meters. Direction is degrees true, the direction the wind blows FROM.
This is FORECAST data. For observed (measured) wind at a NOAA station right now, use noaa_get_meteorological_data (product "wind"). For the official marine text forecast (Coastal Waters Forecast narrative with small-craft advisories), use nws_get_marine_forecast.
Inputs: latitude (required), longitude (required), hours, units, +1 more. Returns: _response
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 25 tools
Most tools target distinct resources and actions, but several flood/water-level tools overlap conceptually (e.g. water levels vs summaries, high tide flooding vs extreme water levels vs top ten water levels). Observed vs predicted distinctions also require reading descriptions. The descriptions help substantially, so boundaries are mostly clear rather than perfect.
All tool names use snake_case and follow a prefix_verb_noun pattern with coherent noaa_, astro_, and nws_ namespaces. Variations like search_stations, find_nearest_stations, and get_* remain predictable and consistent.
25 tools is on the high side for a single server, but the breadth spans NOAA observations, predictions, summaries, station metadata, astronomy, and NWS forecasts. Each tool appears to serve a distinct product rather than duplicating functionality, making the count slightly heavy but reasonable.
The surface covers station discovery, metadata, datums, harmonic constituents, prediction offsets, observations, predictions, summaries, sea level trends/projections, flooding/extremes, plus astronomy and forecast companions. No obvious lifecycle gap is apparent for the stated tides-and-currents domain.
Maintenance
Related MCP Connectors
NOAA Tides & Currents MCP.
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
Tides MCP — NOAA Tides and Currents data
NOAA and ECMWF weather forecast MCP for discovery, validation, and GribStream OAuth queries.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides tools to fetch weather alerts for US states and forecasts based on latitude/longitude coordinates using the US National Weather Service API.2102 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that provides access to NOAA Tides & Currents data including tide predictions, water levels, currents, and meteorological observations.313 npmMIT
- FlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that provides US weather forecasts and active alerts using the National Weather Service API.2-
- FlicenseNot gradedqualityDmaintenanceMinimal MCP server exposing tools for kitesurfing forecasts (wind and waves via Open-Meteo) and tide predictions (via NOAA CO-OPS).-