OceanMCP
A monorepo of independently installable MCP servers for ocean and coastal data workflows.
Servers
| 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 | |
| stofs-mcp | NOAA STOFS storm surge forecasts and observation validation | |
| ofs-mcp | NOAA OFS regional ocean model forecasts (water level, temperature, salinity) |
No API keys required — all servers use free, publicly available datasets.
Quick Start
Install from PyPI
# 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 server: erddap-mcp, nhc-mcp, stofs-mcp, ofs-mcp.
Install from source
git clone https://github.com/mansurjisan/ocean-mcp.git
cd ocean-mcp/servers/coops-mcp # or erddap-mcp, nhc-mcp, stofs-mcp, ofs-mcp
uv sync
Configure your MCP client
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"]
},
"stofs": {
"command": "uvx",
"args": ["stofs-mcp"]
},
"ofs": {
"command": "uvx",
"args": ["ofs-mcp"]
}
}
}
Using local source checkout
{
"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"]
},
"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"]
}
}
}
Example Queries
With servers configured, you can ask your AI assistant naturally:
CO-OPS queries:
- "Get current water levels at The Battery, NY"
- "Find tide stations near Miami Beach"
- "What are the flood statistics for Charleston, SC?"
- "Show me the sea level trend at San Francisco"
ERDDAP queries:
- "Search for sea surface temperature datasets on CoastWatch"
- "Get chlorophyll data off the California coast for January 2024"
- "What ERDDAP servers cover the US East Coast?"
- "List all glider datasets on IOOS Gliders ERDDAP"
NHC queries:
- "Are there any active tropical cyclones right now?"
- "Show me Hurricane Katrina's track"
- "Search for Category 5 hurricanes in the Atlantic"
- "What is the forecast track for the active storm?"
STOFS queries:
- "Get the STOFS water level forecast for The Battery, NY"
- "Compare STOFS forecast vs observations at Boston for the past 24 hours"
- "What are the top stations with highest predicted water levels?"
- "Find STOFS stations within 50 km of New Orleans"
OFS queries:
- "What OFS models cover the Chesapeake Bay?"
- "Get the water level forecast at lat 38.98, lon -76.48 from CBOFS"
- "Compare CBOFS water level with CO-OPS observations at station 8571892"
- "List available NGOFS2 forecast cycles for today"
Cross-server queries:
- "Find CO-OPS stations near this ERDDAP buoy location"
- "Compare tide station data with nearby ERDDAP satellite SST"
- "Is there an active hurricane threatening the Gulf Coast? If so, show me the STOFS surge forecast for New Orleans"
- "Get the CBOFS water level forecast at Chesapeake Bay and compare it with the CO-OPS tide prediction for the same station"
- "Show me sea surface temperature from ERDDAP near The Battery and the current water level from CO-OPS"
- "Which NHC storms have hit the Gulf Coast historically? Show the CO-OPS flood statistics for impacted stations"
- "Get the STOFS gridded forecast and the OFS water level forecast at the same location and compare them"
Architecture
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:
- FastMCP for MCP server framework
- httpx for async HTTP clients
- Pydantic for parameter validation
- Read-only tools (no data modification)
- Dual markdown/JSON output formats
- Actionable error messages with suggestions
Citation
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/mansurjisan/ocean-mcp},
note = {MCP servers for NOAA CO-OPS, ERDDAP, NHC, STOFS, and OFS data}
}
License
Licensed under the MIT License. You may use, modify, and distribute this software under the MIT terms. See LICENSE for details.