
Pulls streamflow data, flood stage status, and peak flow events from the USGS Water Services API at waterservices.usgs.gov. Part of the OceanMCP collection, it's designed for coastal and hydrological workflows where you need real-time river discharge or historical flood stats. Useful if you're correlating storm surge with upstream flow, checking gauge heights against NWS flood categories, or analyzing peak discharge events. No API key required. Pairs naturally with the other servers in this collection like coops-mcp for tidal observations or stofs-mcp for storm surge forecasts when you're working on compound flooding scenarios or watershed-to-coast data pipelines.
A monorepo of independently installable MCP servers for ocean and coastal data workflows.
| Server | PyPI | Description |
|---|---|---|
| coops-mcp | NOAA CO-OPS tides, water levels, currents, meteorological data | |
| erddap-mcp | Universal ERDDAP data access across 80+ public servers | |
| nhc-mcp | NHC storm tracks, advisories, HURDAT2 best track data | |
| recon-mcp | Hurricane reconnaissance data (HDOB, Vortex Data Messages, ATCF fixes) | |
| stofs-mcp | NOAA STOFS storm surge forecasts and observation validation | |
| ofs-mcp | NOAA OFS regional ocean model forecasts (water level, temperature, salinity) | |
| rtofs-mcp | NOAA RTOFS global ocean forecasts (SST, salinity, currents, SSH) via HYCOM THREDDS | |
| ww3-mcp | GFS-Wave (WAVEWATCH III) forecasts and NDBC buoy wave observations | |
| ndbc-mcp | NOAA NDBC buoy observations — waves, SST, wind, pressure (1,300+ stations) | |
| winds-mcp | NWS surface wind observations from ASOS / AWOS stations | |
| usgs-mcp | USGS Water Services — streamflow, NWS/NWPS flood status, peak events | |
| goes-mcp | NOAA GOES-18/19 satellite imagery — visible, infrared, water vapor | |
| adcirc-mcp | ADCIRC model setup debugging, parameter lookup, config validation | |
| schism-mcp | SCHISM model setup debugging, parameter lookup, config validation |
No API keys required for the data servers — all servers above use free, publicly available datasets. The exceptions are hpc-system-mcp and ufs-runner-mcp (below), which require actual NOAA RDHPCS cluster access and, in ufs-runner-mcp's case, submit real Slurm jobs.
Additional servers live in this repo but are not yet published to PyPI (install from source): vdatum-mcp (vertical datum conversion), hpc-system-mcp and ufs-runner-mcp (NOAA RDHPCS / UFS-Coastal HPC workflows — require cluster access), and alert-mcp (CO-OPS threshold alerting).
There is also a 19th server in this repo, nos-workflow-mcp, which is experimental and still a work in progress (its full implementation lives on an unmerged branch — main carries only a minimal subset). It's intentionally left out of the table above and not yet ready for general use.
# uvx (recommended) — runs without permanent install, like npx for Python
uvx coops-mcp
# pip — install into current environment
pip install coops-mcp
# pipx — install in isolated environment with CLI entry point
pipx install coops-mcp
Replace coops-mcp with any published server: erddap-mcp, nhc-mcp, recon-mcp, stofs-mcp, ofs-mcp, rtofs-mcp, ww3-mcp, ndbc-mcp, winds-mcp, usgs-mcp, goes-mcp, adcirc-mcp, schism-mcp.
git clone https://github.com/oceanmodeling/ocean-mcp.git
cd ocean-mcp/servers/coops-mcp # or any other server directory under servers/
uv sync
Add to your MCP settings (e.g., project .mcp.json):
Using PyPI packages (recommended):
{
"mcpServers": {
"coops": {
"command": "uvx",
"args": ["coops-mcp"]
},
"erddap": {
"command": "uvx",
"args": ["erddap-mcp"]
},
"nhc": {
"command": "uvx",
"args": ["nhc-mcp"]
},
"recon": {
"command": "uvx",
"args": ["recon-mcp"]
},
"stofs": {
"command": "uvx",
"args": ["stofs-mcp"]
},
"ofs": {
"command": "uvx",
"args": ["ofs-mcp"]
},
"rtofs": {
"command": "uvx",
"args": ["rtofs-mcp"]
},
"ww3": {
"command": "uvx",
"args": ["ww3-mcp"]
}
}
}
{
"mcpServers": {
"coops": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ocean-mcp/servers/coops-mcp", "python", "-m", "coops_mcp"]
},
"erddap": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ocean-mcp/servers/erddap-mcp", "python", "-m", "erddap_mcp"]
},
"nhc": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ocean-mcp/servers/nhc-mcp", "python", "-m", "nhc_mcp"]
},
"recon": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ocean-mcp/servers/recon-mcp", "python", "-m", "recon_mcp"]
},
"stofs": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ocean-mcp/servers/stofs-mcp", "python", "-m", "stofs_mcp"]
},
"ofs": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ocean-mcp/servers/ofs-mcp", "python", "-m", "ofs_mcp"]
},
"rtofs": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ocean-mcp/servers/rtofs-mcp", "python", "-m", "rtofs_mcp"]
},
"ww3": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ocean-mcp/servers/ww3-mcp", "python", "-m", "ww3_mcp"]
}
}
}
With servers configured, you can ask your AI assistant naturally:
CO-OPS queries:
ERDDAP queries:
NHC queries:
Recon queries:
STOFS queries:
OFS queries:
RTOFS queries:
WW3 queries:
Cross-server queries:
Each server is fully self-contained with its own pyproject.toml, dependencies, and tests. See docs/architecture.md for details on shared conventions.
Shared patterns across servers:
Literal[...] types for constrained parametersufs-runner-mcp (submits/cancels Slurm jobs) and
alert-mcp (creates/pauses/deletes in-memory alert state) are the two
exceptions, each with a small number of tools marked readOnlyHint=Falseresponse_format output as markdown (default), json, geojson, or image, depending on the toolSee CONVENTIONS.md for the full response/behavior contract (output caps, retrieved_at, error format, HTTP retries, dependency bounds).
If you use this project in your research or work, please cite:
@software{jisan2025oceanmcp,
author = {Jisan, Mansur Ali},
title = {Ocean MCP: Real-Time Marine Data, MCP-Native},
year = {2025},
url = {https://github.com/oceanmodeling/ocean-mcp},
note = {MCP servers for NOAA CO-OPS, ERDDAP, NHC, Recon, STOFS, OFS, RTOFS, WW3, NDBC, USGS, winds, GOES, ADCIRC, and SCHISM data}
}
Licensed under the MIT License. You may use, modify, and distribute this software under the MIT terms. See LICENSE for details.