cyanheads avatar

Noaa Marine Mcp Server

cyanheads/noaa-marine-mcp-server

Connects Claude to NOAA's CO-OPS and NDBC APIs for real-time marine data across 3,450+ tide stations, 4,430+ current stations, and 1,354+ offshore buoys. You get five tools: station discovery by location or name, tide predictions with eight datum options (MLLW, MHHW, MSL, etc.), observed water levels paired with predictions for storm surge calculation, tidal current forecasts in max/slack or 6-minute intervals, and live buoy conditions including wave height, wind, and sea-surface temperature. Useful for passage planning, weather analysis, or any workflow that needs authoritative US coastal and offshore observations. Built on the mcp-ts-core framework with in-memory station caching and support for both stdio and streamable HTTP transports.

GitHub stars
3
tools
8
transport
STDIO, HTTP
env vars
8
last updated
Oct 29, 2026

Install

From registry metadata
$ npx add-mcp https://noaa-marine.caseyjhand.com/mcp --name noaa-marine

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http noaa-marine https://noaa-marine.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 8 tools

Verified live against the running server on Nov 6, 2026.

noaa_marine_find_stationsFind CO-OPS tide, water-level and current stations and NDBC buoys near a location, by name, or by station ID, returning a unified list with source, data capabilities, coordinates, and — for NDBC — the physical platform class. This is the required first step for resolving a coo...9 params

Find CO-OPS tide, water-level and current stations and NDBC buoys near a location, by name, or by station ID, returning a unified list with source, data capabilities, coordinates, and — for NDBC — the physical platform class. This is the required first step for resolving a coo...

Parameters* required
latitudenumber
Center latitude in decimal degrees for proximity search. Required together with longitude — supplying only one is rejected rather than silently ignored. Optionally pair with radius_km.
limitnumber
Stations to return on this page. Default 20; a larger value returns at most 200 and says so.default: 20
longitudenumber
Center longitude in decimal degrees for proximity search. Required together with latitude — supplying only one is rejected rather than silently ignored. Optionally pair with radius_km.
offsetnumber
Index of the first match to return, for reading a result larger than one page. 0 (default) starts at the first match; pass the next_offset from a previous call to continue. An offset past the last...default: 0
querystring
Station name or station ID substring to match, case-insensitive, on both sources. E.g. "seattle", "puget sound", "9447130", "46041". A station whose ID matches exactly is returned ahead of name mat...
radius_kmnumber
Search radius in kilometers when latitude/longitude are provided. Defaults to 100 km.default: 100
sourcestring
Data source to search: coops (tide/water-level/current stations), ndbc (buoys), or all (default).one of coops · ndbc · alldefault: all
statestring
Filter by 2-letter US state or territory code. Applies to CO-OPS stations only — providing it restricts results to CO-OPS and excludes NDBC buoys (which carry no state). A station matches on its ow...one of AL · AK · AZ · AR · CA · CO
typesarray
Filter by data capability or NDBC platform class. Every returned station matches at least one requested value — a capability value against its capabilities list, or buoy against its platform class....
noaa_marine_get_tide_predictionsHigh and low tide predictions for a CO-OPS tide station over a date range. The default hilo interval returns the time, height, and tide type (H for high, L for low) of each event, while the 6-minute interval returns the detailed tide curve. Most tide stations are subordinate —...9 params

High and low tide predictions for a CO-OPS tide station over a date range. The default hilo interval returns the time, height, and tide type (H for high, L for low) of each event, while the 6-minute interval returns the detailed tide curve. Most tide stations are subordinate —...

Parameters* required
begin_date*string
Start date, YYYYMMDD or YYYY-MM-DD, e.g. "20240601" or "2024-06-01".
datumstring
Datum the predicted heights are referenced to. MLLW (default) is the US nautical chart datum, and MHHW (mean higher high water) is the flooding reference; MHW, MTL, MSL, MLW, and DTL (diurnal tide...one of MLLW · MHHW · MHW · MTL · MSL · MLWdefault: MLLW
end_date*string
End date (inclusive), YYYYMMDD or YYYY-MM-DD, e.g. "20240607" or "2024-06-07".
intervalstring
Prediction interval: hilo (default) returns only high and low tide events; 6min returns a continuous prediction curve at 6-minute intervals, and is served only by a reference station — a subordinat...one of hilo · 6mindefault: hilo
limitnumber
Prediction rows to return on this page. Default 50; a larger value returns at most 1,000 and says so.default: 50
offsetnumber
Row offset into the matched prediction series, for reading a range longer than one page. 0 (default) starts at the first row; pass the next_offset from a previous call to continue. An offset past t...default: 0
station_id*string
CO-OPS tide station ID (numeric, e.g. "9447130" for Seattle). Obtain from noaa_marine_find_stations with types=["tide"].
time_zonestring
Time zone for returned timestamps. lst_ldt = local standard/daylight time (default); gmt = UTC; lst = local standard time year-round.one of lst_ldt · gmt · lstdefault: lst_ldt
unitsstring
Unit system for heights: english = feet; metric = meters.one of english · metricdefault: english
noaa_marine_get_water_levelObserved water level, real-time or historical, for a CO-OPS water-level station, paired with tide predictions for the same period so the residual (observed − predicted) shows storm surge when positive and anomalous drawdown when negative. The interval selects the cadence: 6min...9 params

Observed water level, real-time or historical, for a CO-OPS water-level station, paired with tide predictions for the same period so the residual (observed − predicted) shows storm surge when positive and anomalous drawdown when negative. The interval selects the cadence: 6min...

Parameters* required
begin_date*string
Start date, YYYYMMDD or YYYY-MM-DD, e.g. "20240601" or "2024-06-01".
datumstring
Datum the observed heights are referenced to. MLLW (default) is the US nautical chart datum, and MHHW (mean higher high water) is the flooding reference; MHW, MTL, MSL, and MLW are the other tidal...one of MLLW · MHHW · MHW · MTL · MSL · MLWdefault: MLLW
end_date*string
End date (inclusive), YYYYMMDD or YYYY-MM-DD, e.g. "20240601" or "2024-06-01".
intervalstring
Observed cadence. 6min (default) is the full curve, 31 days per request, the only one carrying a quality flag. hourly is hourly heights, 365 days per request, and reports a residual against the hou...one of 6min · hourly · high_low · daily_meandefault: 6min
limitnumber
Observation rows to return on this page; predictions cover the same time span. Default 50; a larger value returns at most 1,000 and says so.default: 50
offsetnumber
Row offset into the matched observation series, for reading a range longer than one page. 0 (default) starts at the first row; pass the next_offset from a previous call to continue. An offset past...default: 0
station_id*string
CO-OPS water-level station ID (numeric, e.g. "9447130" for Seattle). Obtain from noaa_marine_find_stations with types=["water_level"].
time_zonestring
Time zone for returned timestamps. lst_ldt = local standard/daylight time (default); gmt = UTC; lst = local standard time year-round. Overridden to lst on interval="daily_mean", which CO-OPS serves...one of lst_ldt · gmt · lstdefault: lst_ldt
unitsstring
Unit system: english = feet; metric = meters.one of english · metricdefault: english
noaa_marine_get_monthly_meansVerified monthly means for a CO-OPS water-level station, one row per station-month: the month's highest and lowest water, its tidal datums (MHHW, MHW, MSL, MTL, MLW, MLLW, DTL), tidal ranges (GT, MN, DHQ, DLQ), and lunitidal intervals (HWI, LWI) — the record a sea-level or tid...7 params

Verified monthly means for a CO-OPS water-level station, one row per station-month: the month's highest and lowest water, its tidal datums (MHHW, MHW, MSL, MTL, MLW, MLLW, DTL), tidal ranges (GT, MN, DHQ, DLQ), and lunitidal intervals (HWI, LWI) — the record a sea-level or tid...

Parameters* required
begin_date*string
Start date, YYYYMMDD or YYYY-MM-DD, e.g. "19750101" or "1975-01-01". The month it falls in is the first month returned.
datumstring
Datum the monthly heights are referenced to. MLLW (default) is the US nautical chart datum; MHHW, MHW, MTL, MSL, and MLW are the other tidal planes. NAVD is NAVD88 and reads only where the station...one of MLLW · MHHW · MHW · MTL · MSL · MLWdefault: MLLW
end_date*string
End date (inclusive), YYYYMMDD or YYYY-MM-DD, e.g. "20251231" or "2025-12-31". The month it falls in is the last month returned.
limitnumber
Months to return on this page. Default 24; a larger value returns at most 1,000 and says so.default: 24
offsetnumber
Month offset into the matched series, for reading a range longer than one page. 0 (default) starts at the first month; pass the next_offset from a previous call to continue. An offset past the last...default: 0
station_id*string
CO-OPS water-level station ID (numeric, e.g. "9447130" for Seattle). Obtain from noaa_marine_find_stations with types=["water_level"].
unitsstring
Unit system for the heights: english = feet; metric = meters. The lunitidal intervals are hours either way.one of english · metricdefault: english
noaa_marine_get_currentsTidal current predictions for a CO-OPS current station: max flood and ebb speeds, slack times, and the station's mean flood and ebb bearings. These are forecast predictions from CO-OPS, distinct from noaa_marine_get_current_profile, which returns NDBC observed ocean-current me...9 params

Tidal current predictions for a CO-OPS current station: max flood and ebb speeds, slack times, and the station's mean flood and ebb bearings. These are forecast predictions from CO-OPS, distinct from noaa_marine_get_current_profile, which returns NDBC observed ocean-current me...

Parameters* required
begin_date*string
Start date, YYYYMMDD or YYYY-MM-DD, e.g. "20240601" or "2024-06-01".
bininteger
Depth bin to predict for, taken from the bins[] array on a noaa_marine_find_stations current row (e.g. 15, 10 or 1 at PUG1515). Omit to take the CO-OPS default, which is the shallowest bin. A bin t...
end_date*string
End date (inclusive), YYYYMMDD or YYYY-MM-DD, e.g. "20240607" or "2024-06-07".
intervalstring
Prediction interval: MAX_SLACK (default) returns max flood, max ebb, and slack water events — ideal for passage planning. 6min returns a continuous current curve.one of MAX_SLACK · 6mindefault: MAX_SLACK
limitnumber
Prediction rows to return on this page — max/slack events or 6-minute rows, whichever the interval selects. Default 50; a larger value returns at most 1,000 and says so.default: 50
offsetnumber
Row offset into the matched prediction series — the max/slack events on the MAX_SLACK interval, the 6-minute curve on 6min — for reading a range longer than one page. 0 (default) starts at the firs...default: 0
station_id*string
CO-OPS current station ID (alphanumeric, e.g. "ACT4176"). Obtain from noaa_marine_find_stations with types=["current"].
time_zonestring
Time zone for returned timestamps. lst_ldt = local standard/daylight time (default); gmt = UTC; lst = local standard time year-round.one of lst_ldt · gmt · lstdefault: lst_ldt
unitsstring
Unit system: english = knots for speed and feet for the echoed depth; metric = cm/s for speed (not m/s) and meters for the echoed depth.one of english · metricdefault: english
noaa_marine_get_conditionsLive marine conditions from an NDBC buoy: wave height, period and direction, wind speed, gust and direction, sea-surface temperature, air temperature, barometric pressure, and dew point. All values are SI units — wind in m/s, wave height in m, pressure in hPa, temperatures in...1 params

Live marine conditions from an NDBC buoy: wave height, period and direction, wind speed, gust and direction, sea-surface temperature, air temperature, barometric pressure, and dew point. All values are SI units — wind in m/s, wave height in m, pressure in hPa, temperatures in...

Parameters* required
station_id*string
NDBC station ID (e.g. "46041" for Cape Elizabeth). Obtain from noaa_marine_find_stations with source="ndbc" and types=["met"]. A 7-digit CO-OPS station ID (e.g. "8654467") also works when NDBC rela...
noaa_marine_get_current_profileObserved ocean-current depth profile from an NDBC ADCP buoy — the most recent measurement of current speed and direction at each depth bin, returning depth in meters, direction in degrees true (the direction the current flows toward), and speed in cm/s. It is distinct from noa...1 params

Observed ocean-current depth profile from an NDBC ADCP buoy — the most recent measurement of current speed and direction at each depth bin, returning depth in meters, direction in degrees true (the direction the current flows toward), and speed in cm/s. It is distinct from noa...

Parameters* required
station_id*string
NDBC station ID (mostly 5-character alphanumeric codes, e.g. "44033"; some are 7-digit numbers). Obtain from noaa_marine_find_stations with source="ndbc" and types=["current_profile"].
noaa_marine_get_ocean_observationsLive sub-surface oceanographic observations from an NDBC station's water-quality sensors: at each reported depth, water temperature, conductivity, salinity, dissolved oxygen as both saturation percent and concentration in ppm, chlorophyll, turbidity, pH, and redox potential. T...1 params

Live sub-surface oceanographic observations from an NDBC station's water-quality sensors: at each reported depth, water temperature, conductivity, salinity, dissolved oxygen as both saturation percent and concentration in ppm, chlorophyll, turbidity, pH, and redox potential. T...

Parameters* required
station_id*string
NDBC station ID (mostly 5-character alphanumeric codes, e.g. "44033" or "TIBC1"; some are 7-digit numbers). Obtain from noaa_marine_find_stations with source="ndbc" and types=["water_quality"].

Sponsors

Configuration

NOAA_APPLICATION_IDdefault: noaa-marine-mcp-server

Courtesy identifier sent as application= on CO-OPS requests. Defaults to noaa-marine-mcp-server.

NOAA_CLAMP_LIMITSdefault: true

Clamp a limit above its cap (1000 rows on the series tools, 200 stations on noaa_marine_find_stations) to the cap with a notice. Set false to advertise and enforce each cap as a schema maximum instead.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/noaa-marine-mcp-server

Find NOAA tide stations and NDBC buoys, fetch tide predictions, water levels, tidal currents, and latest buoy observations via MCP. STDIO or Streamable HTTP.

8 Tools • 1 Resource • 1 Skill

Details

Repository
github.com/cyanheads/noaa-marine-mcp-server
Category
Search & Web Crawling
Package
@cyanheads/noaa-marine-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads

Related Search & Web Crawling MCP servers

View all
1cyanheads avatarOpenstates Mcp Servercyanheads/openstates-mcp-serverSearch bills, legislators, committees, and events across all 50 US states, DC, and 5 US territories.3stars
2defectdojo avatarDefectDojodefectdojo/defectdojo-mcpSearch, triage and import findings in DefectDojo through its REST API v2.3stars
3domdomegg avatarOpen Food Factsdomdomegg/openfoodfacts-mcpSearch and contribute to the Open Food Facts database.3stars
4hampsterx avatarCodex Mcp Bridgehampsterx/codex-mcp-bridgeWraps Codex CLI as MCP tools: codex, review, query, search, structured, ping, listSessions.3stars
5iggredible avatarVim Mcpiggredible/vim-mcpConnect Claude Code to Vim/Neovim - query state, execute commands, search help, record macros3stars
6happygallo avatarApple Adshappygallo/apple-ads-mcpManage Apple Search Ads campaigns, keywords, budgets, and reports via API v5.3stars