# noaa-cdo-mcp-server MCP server

Search NOAA CDO stations and datasets, fetch historical weather observations.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-cyanheads-noaa-cdo-mcp-server
- Repository: https://github.com/cyanheads/noaa-cdo-mcp-server

## Install
- Command: `npx -y @cyanheads/noaa-cdo-mcp-server`
- Endpoint: https://noaa-cdo.caseyjhand.com/mcp
- Auth: Auth required by registry metadata

## Setup notes
- Package: Npm @cyanheads/noaa-cdo-mcp-server v0.1.6
- Environment variable: NOAA_CDO_TOKEN (required)
- Environment variable: MCP_LOG_LEVEL (default info)
- Package: Npm @cyanheads/noaa-cdo-mcp-server v0.1.6
- Environment variable: NOAA_CDO_TOKEN (required)
- Environment variable: MCP_HTTP_HOST (default 127.0.0.1)
- Environment variable: MCP_HTTP_PORT (default 3010)
- Environment variable: MCP_HTTP_ENDPOINT_PATH (default /mcp)
- Environment variable: MCP_PUBLIC_URL
- Environment variable: MCP_AUTH_MODE (default none)
- Environment variable: MCP_LOG_LEVEL (default info)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://noaa-cdo.caseyjhand.com/mcp

## Tools
- noaa_list_datasets (List NOAA CDO Datasets) - List available NOAA CDO datasets with their IDs, names, and temporal coverage. Returns all ~11 datasets by default (no required parameters). Optionally filter to datasets that contain a specific data type, cover a location or station, or overlap a date range. Common datasets: GHCND (daily observations, 1763–present), GSOM (monthly summaries), GSOY (annual summaries), NORMAL_DLY/MLY/ANN/HLY (1981–2010 climate normals). Use this first to discover available datasets before calling noaa_fetch_data. Endpoint: https://noaa-cdo.caseyjhand.com/mcp
- noaa_list_data_categories (List NOAA CDO Data Categories) - List data categories that group related data types — Temperature, Precipitation, Wind, Pressure, Sunshine, Sky cover, Weather Type, and more. Use to discover what types of measurements are available before calling noaa_list_data_types. Optionally filter by dataset, location, station, or date range. There are ~41 categories in total. Endpoint: https://noaa-cdo.caseyjhand.com/mcp
- noaa_list_data_types (List NOAA CDO Data Types) - List available data types (measurement labels like TMAX, TMIN, PRCP, SNOW) for a given dataset or category. Pass a datasetId to see what is measured in that dataset, or a datacategoryId (e.g., "TEMP") to see all temperature-related types. Hundreds of types exist across all datasets. Use this before calling noaa_fetch_data when the data type IDs are unknown. Common GHCND types: TMAX (max temperature), TMIN (min temperature), PRCP (precipitation), SNOW (snowfall), SNWD (snow depth), AWND (average wind speed). Endpoint: https://noaa-cdo.caseyjhand.com/mcp
- noaa_find_locations (Find NOAA CDO Locations) - Search for geographic locations by category (CITY, ST, CNTY, CNTRY, ZIP, CLIM_REG, etc.). Returns location IDs used in station search and data queries. Without locationCategoryId, returns all location types. Use locationCategoryId=ST to list US states (~52 entries — small enough to retrieve completely). Use locationCategoryId=CITY for cities (thousands of entries — use pagination and sortField=name to navigate alphabetically). The CDO API has no name-search parameter; to find a specific city, sort alphabetically with sortField=name and page through results. Location IDs: states as FIPS:37 (NC), cities as CITY:US530031, zip codes as ZIP:98101, countries as CNTRY:US. Obtain location IDs here, then pass them to noaa_find_stations or noaa_fetch_data. Endpoint: https://noaa-cdo.caseyjhand.com/mcp
- noaa_find_stations (Find NOAA CDO Stations) - Search for weather observation stations by location, bounding box, dataset, and data type. Returns station IDs, names, coordinates, elevation, and data coverage dates. Filter by locationId (e.g., "FIPS:37" for all NC stations), extent (lat/lon bounding box), datasetId, datatypeId, and date range. Station IDs returned here are used as stationId in noaa_fetch_data. A station must have data for the dataset and date range you want — filter by datasetId and startDate/endDate to ensure compatibility. Common station ID formats: GHCND:USC00450974, COOP:010008. Endpoint: https://noaa-cdo.caseyjhand.com/mcp
- noaa_get_station (Get NOAA CDO Station) - Fetch full metadata for a single weather station by its ID (e.g., "GHCND:USC00450974", "COOP:010008"). Returns name, coordinates, elevation, and the full date range for which data is available. Use when you have a station ID from noaa_find_stations and want its complete details, or to verify a station before querying data. Endpoint: https://noaa-cdo.caseyjhand.com/mcp
- noaa_fetch_data (Fetch NOAA CDO Observation Data) - Fetch historical observation records from a NOAA CDO dataset for a given date range. Requires datasetId (e.g., GHCND for daily, GSOM for monthly), startDate, and endDate. Optionally scope to specific stations, locations, and data types. Date range limits per request: sub-daily and daily datasets (GHCND, PRECIP_15, PRECIP_HLY, NORMAL_DLY, NORMAL_HLY) are limited to 1 year; monthly and annual datasets (GSOM, GSOY, NORMAL_MLY, NORMAL_ANN) are limited to 10 years. For climate normals (NORMAL_*), use startDate=2010-01-01 and endDate=2010-12-31 — that is the API proxy year regardless of which 30-year period is being described. Returns flat tuples of { date, datatype, station, value, attributes }. Strongly recommended: pass units=metric or units=standard — without it, GHCND values are raw tenths-of-unit integers (TMAX=256 = 25.6°C, PRCP=12 = 1.2mm). GSOM/GSOY are already scaled. Endpoint: https://noaa-cdo.caseyjhand.com/mcp

## Resources
- noaa://datasets - NOAA CDO Datasets All available NOAA CDO datasets with IDs, names, and temporal coverage. Use as injectable context to orient an agent on which datasets exist before querying data. Returns a small stable list (~11–13 datasets). Equivalent to calling noaa_list_datasets with no filters and a high limit. MIME type: application/json

## Prompts
Not captured

## Metadata
- Owner: io.github.cyanheads
- Version: 0.1.6
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: May 24, 2026
- Source: https://registry.modelcontextprotocol.io
