NHC storm tracks, forecast advisories, watches/warnings, and HURDAT2 data
Runs on your machine from its package; the steps are below.
Not assessed yet.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx nhc-mcp
MCP client config
{
"mcpServers": {
"nhc-mcp-server": {
"command": "uvx",
"args": [
"nhc-mcp"
]
}
}
}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.