{
  "markdown": "# OceanMCP\n\nA monorepo of independently installable MCP servers for ocean and coastal data workflows.\n\n[![PyPI](https://img.shields.io/pypi/v/coops-mcp)](https://pypi.org/project/coops-mcp/)\n[![CI](https://github.com/oceanmodeling/ocean-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/oceanmodeling/ocean-mcp/actions/workflows/ci.yml)\n[![MCP Registry](https://img.shields.io/badge/MCP_Registry-listed-blue)](https://registry.modelcontextprotocol.io/?q=oceanmodeling)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\n## Servers\n\n| Server | PyPI | Description |\n|--------|------|-------------|\n| [coops-mcp](servers/coops-mcp/) | [![PyPI](https://img.shields.io/pypi/v/coops-mcp)](https://pypi.org/project/coops-mcp/) | NOAA CO-OPS tides, water levels, currents, meteorological data |\n| [erddap-mcp](servers/erddap-mcp/) | [![PyPI](https://img.shields.io/pypi/v/erddap-mcp)](https://pypi.org/project/erddap-mcp/) | Universal ERDDAP data access across 80+ public servers |\n| [nhc-mcp](servers/nhc-mcp/) | [![PyPI](https://img.shields.io/pypi/v/nhc-mcp)](https://pypi.org/project/nhc-mcp/) | NHC storm tracks, advisories, HURDAT2 best track data |\n| [recon-mcp](servers/recon-mcp/) | [![PyPI](https://img.shields.io/pypi/v/recon-mcp)](https://pypi.org/project/recon-mcp/) | Hurricane reconnaissance data (HDOB, Vortex Data Messages, ATCF fixes) |\n| [stofs-mcp](servers/stofs-mcp/) | [![PyPI](https://img.shields.io/pypi/v/stofs-mcp)](https://pypi.org/project/stofs-mcp/) | NOAA STOFS storm surge forecasts and observation validation |\n| [ofs-mcp](servers/ofs-mcp/) | [![PyPI](https://img.shields.io/pypi/v/ofs-mcp)](https://pypi.org/project/ofs-mcp/) | NOAA OFS regional ocean model forecasts (water level, temperature, salinity) |\n| [rtofs-mcp](servers/rtofs-mcp/) | [![PyPI](https://img.shields.io/pypi/v/rtofs-mcp)](https://pypi.org/project/rtofs-mcp/) | NOAA RTOFS global ocean forecasts (SST, salinity, currents, SSH) via HYCOM THREDDS |\n| [ww3-mcp](servers/ww3-mcp/) | [![PyPI](https://img.shields.io/pypi/v/ww3-mcp)](https://pypi.org/project/ww3-mcp/) | GFS-Wave (WAVEWATCH III) forecasts and NDBC buoy wave observations |\n| [ndbc-mcp](servers/ndbc-mcp/) | [![PyPI](https://img.shields.io/pypi/v/ndbc-mcp)](https://pypi.org/project/ndbc-mcp/) | NOAA NDBC buoy observations — waves, SST, wind, pressure (1,300+ stations) |\n| [winds-mcp](servers/winds-mcp/) | [![PyPI](https://img.shields.io/pypi/v/winds-mcp)](https://pypi.org/project/winds-mcp/) | NWS surface wind observations from ASOS / AWOS stations |\n| [usgs-mcp](servers/usgs-mcp/) | [![PyPI](https://img.shields.io/pypi/v/usgs-mcp)](https://pypi.org/project/usgs-mcp/) | USGS Water Services — streamflow, NWS/NWPS flood status, peak events |\n| [goes-mcp](servers/goes-mcp/) | [![PyPI](https://img.shields.io/pypi/v/goes-mcp)](https://pypi.org/project/goes-mcp/) | NOAA GOES-18/19 satellite imagery — visible, infrared, water vapor |\n| [adcirc-mcp](servers/adcirc-mcp/) | [![PyPI](https://img.shields.io/pypi/v/adcirc-mcp)](https://pypi.org/project/adcirc-mcp/) | ADCIRC model setup debugging, parameter lookup, config validation |\n| [schism-mcp](servers/schism-mcp/) | [![PyPI](https://img.shields.io/pypi/v/schism-mcp)](https://pypi.org/project/schism-mcp/) | SCHISM model setup debugging, parameter lookup, config validation |\n\n**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.\n\nAdditional 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).\n\nThere 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.\n\n## Quick Start\n\n### Install from PyPI\n\n```bash\n# uvx (recommended) — runs without permanent install, like npx for Python\nuvx coops-mcp\n\n# pip — install into current environment\npip install coops-mcp\n\n# pipx — install in isolated environment with CLI entry point\npipx install coops-mcp\n```\n\nReplace `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`.\n\n### Install from source\n\n```bash\ngit clone https://github.com/oceanmodeling/ocean-mcp.git\ncd ocean-mcp/servers/coops-mcp  # or any other server directory under servers/\nuv sync\n```\n\n### Configure your MCP client\n\nAdd to your MCP settings (e.g., project `.mcp.json`):\n\n**Using PyPI packages (recommended):**\n\n```json\n{\n  \"mcpServers\": {\n    \"coops\": {\n      \"command\": \"uvx\",\n      \"args\": [\"coops-mcp\"]\n    },\n    \"erddap\": {\n      \"command\": \"uvx\",\n      \"args\": [\"erddap-mcp\"]\n    },\n    \"nhc\": {\n      \"command\": \"uvx\",\n      \"args\": [\"nhc-mcp\"]\n    },\n    \"recon\": {\n      \"command\": \"uvx\",\n      \"args\": [\"recon-mcp\"]\n    },\n    \"stofs\": {\n      \"command\": \"uvx\",\n      \"args\": [\"stofs-mcp\"]\n    },\n    \"ofs\": {\n      \"command\": \"uvx\",\n      \"args\": [\"ofs-mcp\"]\n    },\n    \"rtofs\": {\n      \"command\": \"uvx\",\n      \"args\": [\"rtofs-mcp\"]\n    },\n    \"ww3\": {\n      \"command\": \"uvx\",\n      \"args\": [\"ww3-mcp\"]\n    }\n  }\n}\n```\n\n<details>\n<summary>Using local source checkout</summary>\n\n```json\n{\n  \"mcpServers\": {\n    \"coops\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/ocean-mcp/servers/coops-mcp\", \"python\", \"-m\", \"coops_mcp\"]\n    },\n    \"erddap\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/ocean-mcp/servers/erddap-mcp\", \"python\", \"-m\", \"erddap_mcp\"]\n    },\n    \"nhc\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/ocean-mcp/servers/nhc-mcp\", \"python\", \"-m\", \"nhc_mcp\"]\n    },\n    \"recon\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/ocean-mcp/servers/recon-mcp\", \"python\", \"-m\", \"recon_mcp\"]\n    },\n    \"stofs\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/ocean-mcp/servers/stofs-mcp\", \"python\", \"-m\", \"stofs_mcp\"]\n    },\n    \"ofs\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/ocean-mcp/servers/ofs-mcp\", \"python\", \"-m\", \"ofs_mcp\"]\n    },\n    \"rtofs\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/ocean-mcp/servers/rtofs-mcp\", \"python\", \"-m\", \"rtofs_mcp\"]\n    },\n    \"ww3\": {\n      \"command\": \"uv\",\n      \"args\": [\"run\", \"--directory\", \"/path/to/ocean-mcp/servers/ww3-mcp\", \"python\", \"-m\", \"ww3_mcp\"]\n    }\n  }\n}\n```\n\n</details>\n\n## Example Queries\n\nWith servers configured, you can ask your AI assistant naturally:\n\n**CO-OPS queries:**\n- \"Get current water levels at The Battery, NY\"\n- \"Find tide stations near Miami Beach\"\n- \"What are the flood statistics for Charleston, SC?\"\n- \"Show me the sea level trend at San Francisco\"\n\n**ERDDAP queries:**\n- \"Search for sea surface temperature datasets on CoastWatch\"\n- \"Get chlorophyll data off the California coast for January 2024\"\n- \"What ERDDAP servers cover the US East Coast?\"\n- \"List all glider datasets on IOOS Gliders ERDDAP\"\n\n**NHC queries:**\n- \"Are there any active tropical cyclones right now?\"\n- \"Show me Hurricane Katrina's track\"\n- \"Search for Category 5 hurricanes in the Atlantic\"\n- \"What is the forecast track for the active storm?\"\n\n**Recon queries:**\n- \"List HDOB reconnaissance flights for the 2024 Atlantic season\"\n- \"Get HDOB flight-level observations from October 7, 2024\"\n- \"Show me the Vortex Data Messages for Hurricane Milton\"\n- \"Get ATCF aircraft fix data for storm AL14 2024\"\n\n**STOFS queries:**\n- \"Get the STOFS water level forecast for The Battery, NY\"\n- \"Compare STOFS forecast vs observations at Boston for the past 24 hours\"\n- \"What are the top stations with highest predicted water levels?\"\n- \"Find STOFS stations within 50 km of New Orleans\"\n\n**OFS queries:**\n- \"What OFS models cover the Chesapeake Bay?\"\n- \"Get the water level forecast at lat 38.98, lon -76.48 from CBOFS\"\n- \"Compare CBOFS water level with CO-OPS observations at station 8571892\"\n- \"List available NGOFS2 forecast cycles for today\"\n\n**RTOFS queries:**\n- \"Get the RTOFS sea surface temperature forecast at 40°N, 74°W\"\n- \"Show me a temperature depth profile in the Gulf Stream\"\n- \"What RTOFS datasets are currently available on HYCOM THREDDS?\"\n- \"Get a vertical transect of salinity from Miami to Bermuda\"\n- \"Show the SST area forecast for the Gulf of Mexico\"\n\n**WW3 queries:**\n- \"What GFS-Wave model grids are available?\"\n- \"Find NDBC buoys near Cape Hatteras\"\n- \"Get the latest wave observations from buoy 41025\"\n- \"Show me the GFS-Wave forecast at 35°N, 75°W for the next 48 hours\"\n- \"Compare the wave forecast against buoy 41025 observations\"\n\n**Cross-server queries:**\n- \"Find CO-OPS stations near this ERDDAP buoy location\"\n- \"Compare tide station data with nearby ERDDAP satellite SST\"\n- \"Is there an active hurricane threatening the Gulf Coast? If so, show me the STOFS surge forecast for New Orleans\"\n- \"Get the CBOFS water level forecast at Chesapeake Bay and compare it with the CO-OPS tide prediction for the same station\"\n- \"Show me sea surface temperature from ERDDAP near The Battery and the current water level from CO-OPS\"\n- \"Which NHC storms have hit the Gulf Coast historically? Show the CO-OPS flood statistics for impacted stations\"\n- \"Get the STOFS gridded forecast and the OFS water level forecast at the same location and compare them\"\n\n## Architecture\n\nEach server is fully self-contained with its own `pyproject.toml`, dependencies, and tests. See [docs/architecture.md](docs/architecture.md) for details on shared conventions.\n\n**Shared patterns across servers:**\n- FastMCP for MCP server framework\n- httpx for async HTTP clients\n- Pydantic models, with `Literal[...]` types for constrained parameters\n- Read-only tools by default — the data-fetching servers only fetch, never\n  modify, anything. `ufs-runner-mcp` (submits/cancels Slurm jobs) and\n  `alert-mcp` (creates/pauses/deletes in-memory alert state) are the two\n  exceptions, each with a small number of tools marked `readOnlyHint=False`\n- `response_format` output as markdown (default), json, geojson, or image, depending on the tool\n- Actionable error messages with suggestions\n\nSee [CONVENTIONS.md](CONVENTIONS.md) for the full response/behavior contract (output caps, `retrieved_at`, error format, HTTP retries, dependency bounds).\n\n## Citation\n\nIf you use this project in your research or work, please cite:\n\n```bibtex\n@software{jisan2025oceanmcp,\n  author    = {Jisan, Mansur Ali},\n  title     = {Ocean MCP: Real-Time Marine Data, MCP-Native},\n  year      = {2025},\n  url       = {https://github.com/oceanmodeling/ocean-mcp},\n  note      = {MCP servers for NOAA CO-OPS, ERDDAP, NHC, Recon, STOFS, OFS, RTOFS, WW3, NDBC, USGS, winds, GOES, ADCIRC, and SCHISM data}\n}\n```\n\n## License\n\nLicensed under the MIT License. You may use, modify, and distribute this software under the MIT terms. See [LICENSE](LICENSE) for details.\n",
  "bytes": 11349,
  "sha": "46b0f57158c5265f19580f22bc66a4fc32729adbe6660675b327cebe828594c4",
  "repo_slug": "mansurjisan/ocean-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_mansurjisan_erddap_mcp_234baa85/readme"
}