Skip to main content

MCP server for NOAA STOFS storm surge forecast access and validation against CO-OPS observations

Project description

STOFS MCP Server

MCP server providing AI assistants with access to NOAA's Storm Tide Operational Forecast System (STOFS) — operational storm surge and water level forecasts, and validation against CO-OPS observations.

Status: Ready

Tools

Tool Description
stofs_list_cycles List available STOFS forecast cycles on AWS S3
stofs_get_station_forecast Get water level forecast time series at a CO-OPS station
stofs_get_point_forecast Get forecast at arbitrary lat/lon (nearest STOFS station)
stofs_get_gridded_forecast Forecast at any lat/lon via OPeNDAP (regular grid, no download)
stofs_compare_with_observations Compare STOFS forecast vs CO-OPS observations (bias, RMSE, correlation)
stofs_get_max_water_level Get top stations by peak predicted water level in a cycle
stofs_get_system_info STOFS model specifications, datums, cycle schedule
stofs_list_stations List STOFS output stations, filter by state/region/proximity

STOFS Models

STOFS-2D-Global (ADCIRC)

  • Domain: Global unstructured mesh (~12.8M nodes)
  • Cycles: 4x daily — 00, 06, 12, 18 UTC
  • Forecast: 180 hours (7.5 days)
  • Stations: ~385 output points at 6-minute resolution
  • Datum: LMSL (Local Mean Sea Level)
  • Data: s3://noaa-gestofs-pds

STOFS-3D-Atlantic (SCHISM)

  • Domain: US East Coast + Gulf of Mexico + Puerto Rico (~2.9M nodes)
  • Cycles: 1x daily — 12 UTC
  • Forecast: 96 hours (4 days)
  • Stations: ~108 output points at 6-minute resolution
  • Datum: NAVD88
  • Data: s3://noaa-nos-stofs3d-pds

Vertical Datums

⚠️ Datum differences matter when comparing models and observations:

  • STOFS-2D station files: LMSL (Local Mean Sea Level)
  • STOFS-3D station files: NAVD88
  • CO-OPS API: Use datum=MSL for 2D comparison, datum=NAVD for 3D comparison
  • Small systematic offsets (1–5 cm) between LMSL and MSL are expected

Quick Start

git clone https://github.com/mansurjisan/ocean-mcp.git
cd ocean-mcp/servers/stofs-mcp
uv sync

Configure your MCP client

{
  "mcpServers": {
    "stofs": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/ocean-mcp/servers/stofs-mcp", "python", "-m", "stofs_mcp"]
    }
  }
}

Example Queries

  • "What is the latest STOFS-2D-Global forecast cycle?"
  • "Get the water level forecast for The Battery, NY (station 8518750)"
  • "Compare STOFS forecast vs observations at Boston for the past 24 hours"
  • "Find STOFS stations within 50 km of New Orleans"
  • "What are the top 10 stations with highest predicted water levels?"
  • "Get the surge-only forecast at Charleston, SC"
  • "Show me the STOFS forecast near lat 29.95, lon -90.07"
  • "Get the STOFS forecast at lat 36.85, lon -75.98 (Virginia Beach) using the gridded product"

Running Tests

# Unit tests (fast, no network)
uv run pytest tests/test_utils.py -v

# Live integration tests (requires internet, downloads ~5–10 MB)
uv run pytest tests/test_live.py -v -s

Data Sources

  • AWS S3 (primary): noaa-gestofs-pds (2D-Global), noaa-nos-stofs3d-pds (3D-Atlantic)
  • NOMADS OPeNDAP: nomads.ncep.noaa.gov/dods/stofs_2d_glo/ (remote slice of regular-grid data, ~2-day window)
  • CO-OPS API: api.tidesandcurrents.noaa.gov (for observation validation)

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stofs_mcp-0.1.0.tar.gz (38.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stofs_mcp-0.1.0-py3-none-any.whl (32.1 kB view details)

Uploaded Python 3

File details

Details for the file stofs_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: stofs_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 38.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for stofs_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d96123eb5193def72028e7db6a33e62ec266192eb10f3e6fc2bcb178d0b57ea5
MD5 3eccccb1a38fc24202fcea2f85ab9a4b
BLAKE2b-256 e359205eac2d64e38a69f1dd8f4af49340c56ab61fc1cb6c18ce35e05e21337a

See more details on using hashes here.

File details

Details for the file stofs_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: stofs_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 32.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for stofs_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb312149529d0c55c1d331eed1ea69e07f4ee01ee985e65c82837d837760095c
MD5 fe5a53309163503e94e67dd991398037
BLAKE2b-256 ec6c9a1690bbf70539a0bfd8a9f3167285f191cb83413a23a2370e50759babac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page