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=MSLfor 2D comparison,datum=NAVDfor 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
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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
stofs_mcp-0.1.0-py3-none-any.whl
(32.1 kB
view details)
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d96123eb5193def72028e7db6a33e62ec266192eb10f3e6fc2bcb178d0b57ea5
|
|
| MD5 |
3eccccb1a38fc24202fcea2f85ab9a4b
|
|
| BLAKE2b-256 |
e359205eac2d64e38a69f1dd8f4af49340c56ab61fc1cb6c18ce35e05e21337a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb312149529d0c55c1d331eed1ea69e07f4ee01ee985e65c82837d837760095c
|
|
| MD5 |
fe5a53309163503e94e67dd991398037
|
|
| BLAKE2b-256 |
ec6c9a1690bbf70539a0bfd8a9f3167285f191cb83413a23a2370e50759babac
|