Koskamo

Zovo Weather History MCP

Provides past weather data and daily logs for US cities, ZIP codes, or addresses, including temperatures, rain, snow, and wind. Users can find nearby stations, download Excel/CSV logs, and adjust thresholds for weather events.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Zovo Weather History MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://weather-history.zovo.one/mcp
Vendor documentation

What you can do with it

  • Find nearby weather stations with date-specific coverage
  • Download daily observations and summary sheets
  • Adjust rain, snow, heat, freeze and gust thresholds
  • Retrieve weather history for a specific date range

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
weather-history 1.0.0
MCP protocol
2025-06-18
Tools
2 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Find US station observations and generate daily weather logs. Use dates supplied by the user. UTC is used for default search dates and publication lag. Show per-site errors, observation distance, missing values, source retrieval time and expiring downloads. Forecasts and current conditions are outside scope.

Tools

2 advertised

find_weather_stations — Find weather stations
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants weather history, historical weather data, or past weather by zip code and needs reporting stations near a US city, ZIP or address. Returns date-specific coverage and distance for up to ten qualifying stations plus three with insufficient records. Dates default to the thirty days ending five days before today UTC; up to 366 days. Do not use for forecasts, current conditions or places outside the US.

find_weather_stations input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "place"
  ],
  "properties": {
    "place": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "US city and state, ZIP or street address, 2 to 200 characters; e.g. Denver, CO. For logs a US station ID such as USW00094728 also works."
    },
    "end_date": {
      "type": "string",
      "maxLength": 100,
      "description": "Calendar date YYYY-MM-DD, e.g. 2026-09-01."
    },
    "start_date": {
      "type": "string",
      "maxLength": 100,
      "description": "Calendar date YYYY-MM-DD, e.g. 2026-09-01."
    }
  }
}
find_weather_stations output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "place",
    "start_date",
    "end_date",
    "stations",
    "source"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "stations"
    },
    "place": {
      "type": "object",
      "required": [
        "label",
        "matched_by",
        "lat",
        "lon"
      ],
      "properties": {
        "lat": {
          "type": "number"
        },
        "lon": {
          "type": "number"
        },
        "label": {
          "type": "string"
        },
        "matched_by": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "source": {
      "type": "object",
      "required": [
        "name",
        "url",
        "retrieved_utc"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "retrieved_utc": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "end_date": {
      "type": "string"
    },
    "stations": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "distance_mi"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "lat": {
            "type": [
              "number",
              "null"
            ]
          },
          "lon": {
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "reports": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "coverage": {
            "type": "number"
          },
          "distance_mi": {
            "type": [
              "number",
              "null"
            ]
          },
          "elevation_ft": {
            "type": [
              "number",
              "null"
            ]
          },
          "coverage_note": {
            "type": "string"
          },
          "last_reported": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "start_date": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
find_weather_stations annotations
{
  "title": "Find weather stations",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
generate_weather_log — Generate weather log
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user wants weather history, historical weather data, historical weather by date and location, or a daily weather data download. Reads station observations and generates Excel and CSV weather logs with rain days for construction delay and thresholds. US only; up to five sites and 366 days, from 1900 through today UTC. Files expire in about an hour. Do not use for forecasts, current conditions or certified weather reports.

generate_weather_log input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "sites",
    "start_date",
    "end_date"
  ],
  "properties": {
    "sites": {
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "string",
            "maxLength": 200,
            "minLength": 2,
            "description": "US city and state, ZIP or street address, 2 to 200 characters; e.g. Denver, CO. For logs a US station ID such as USW00094728 also works."
          },
          {
            "type": "string",
            "maxLength": 0,
            "minLength": 0
          }
        ]
      },
      "description": "Up to five US places, ZIPs, addresses or station IDs after removing blanks and duplicates; e.g. [\"Denver, CO\",\"10024\"]."
    },
    "heat_f": {
      "type": "number",
      "default": 90,
      "maximum": 130,
      "minimum": 50,
      "description": "Heat-day minimum degrees F, inclusive; e.g. 90."
    },
    "rain_in": {
      "type": "number",
      "default": 0.1,
      "maximum": 10,
      "minimum": 0.01,
      "description": "Rain-day minimum in inches, inclusive; e.g. 0.10."
    },
    "snow_in": {
      "type": "number",
      "default": 1,
      "maximum": 60,
      "minimum": 0.1,
      "description": "Snow-day minimum in inches, inclusive; e.g. 1.0."
    },
    "end_date": {
      "type": "string",
      "maxLength": 100,
      "description": "Calendar date YYYY-MM-DD, e.g. 2026-09-01."
    },
    "freeze_f": {
      "type": "number",
      "default": 32,
      "maximum": 50,
      "minimum": -40,
      "description": "Freeze-day maximum degrees F, inclusive; e.g. 32."
    },
    "gust_mph": {
      "type": "number",
      "default": 40,
      "maximum": 150,
      "minimum": 10,
      "description": "Peak gust minimum mph, inclusive; e.g. 40. Average wind is not a substitute."
    },
    "start_date": {
      "type": "string",
      "maxLength": 100,
      "description": "Calendar date YYYY-MM-DD, e.g. 2026-09-01."
    },
    "weather_day_rule": {
      "type": "array",
      "items": {
        "enum": [
          "rain",
          "snow",
          "heat",
          "freeze",
          "wind"
        ],
        "type": "string"
      },
      "default": [
        "rain",
        "snow"
      ],
      "maxItems": 5,
      "minItems": 1,
      "description": "Weather day is any selected threshold, e.g. [\"rain\",\"snow\"]."
    }
  }
}
generate_weather_log output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "start_date",
    "end_date",
    "sites",
    "preview",
    "downloads",
    "duplicates_removed",
    "source"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "log"
    },
    "sites": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "site"
        ],
        "properties": {
          "site": {
            "type": "string"
          },
          "error": {
            "type": "string"
          },
          "station": {
            "type": "object",
            "required": [
              "id",
              "name",
              "distance_mi"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "lat": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "lon": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "name": {
                "type": "string"
              },
              "reports": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "coverage": {
                "type": "number"
              },
              "distance_mi": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "elevation_ft": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "coverage_note": {
                "type": "string"
              },
              "last_reported": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "summary": {
            "type": "object",
            "required": [
              "statuses",
              "total_precip_in",
              "precip_days_with_value",
              "total_snow_in",
              "snow_days_with_value",
              "days_missing",
              "high",
              "low",
              "wettest",
              "counts"
            ],
            "properties": {
              "low": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "value",
                      "date"
                    ],
                    "properties": {
                      "date": {
                        "type": "string"
                      },
                      "value": {
                        "type": "number"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "high": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "value",
                      "date"
                    ],
                    "properties": {
                      "date": {
                        "type": "string"
                      },
                      "value": {
                        "type": "number"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "counts": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "number"
                }
              },
              "wettest": {
                "anyOf": [
                  {
                    "type": "object",
                    "required": [
                      "value",
                      "date"
                    ],
                    "properties": {
                      "date": {
                        "type": "string"
                      },
                      "value": {
                        "type": "number"
                      }
                    },
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "statuses": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "number"
                }
              },
              "days_missing": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "type": "number"
                }
              },
              "total_snow_in": {
                "type": "string"
              },
              "total_precip_in": {
                "type": "string"
              },
              "snow_days_with_value": {
                "type": "number"
              },
              "precip_days_with_value": {
                "type": "number"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      }
    },
    "source": {
      "type": "object",
      "required": [
        "name",
        "url",
        "retrieved_utc"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "retrieved_utc": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "preview": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "max_f",
          "min_f",
          "precip_in",
          "snow_in",
          "status",
          "flags"
        ],
        "properties": {
          "date": {
            "type": "string"
          },
          "flags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "max_f": {
            "type": [
              "number",
              "null"
            ]
          },
          "min_f": {
            "type": [
              "number",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "snow_in": {
            "type": [
              "string",
              "number",
              "null"
            ]
          },
          "precip_in": {
            "type": [
              "string",
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "end_date": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "required": [
        "xlsx",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "xlsx": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "start_date": {
      "type": "string"
    },
    "duplicates_removed": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
generate_weather_log annotations
{
  "title": "Generate weather log",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

weather-history-widget — Zovo Weather History view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Weather History.

weather-history-widget URI
ui://widget/weather-history-v6-1.0.0-10e47b152e3364d2cca0249c72f0a91589f668a54292f9b940258f5d4fee1f58.html

MIME type: text/html;profile=mcp-app

weather-history-widget-legacy — Zovo Weather History view (previous versions)

Advertised by the server during the last successful anonymous check.

weather-history-widget-legacy URI template
ui://widget/weather-history-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
635 ms
95th percentile latency
635 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 635 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-weather-history-mcp https://weather-history.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-weather-history-mcp --url https://weather-history.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-weather-history-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-weather-history-mcp": {
      "url": "https://weather-history.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-weather-history-mcp": {
      "type": "streamableHttp",
      "url": "https://weather-history.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-weather-history-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-weather-history-mcp": {
      "type": "http",
      "url": "https://weather-history.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-weather-history-mcp https://weather-history.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "zovo-weather-history-mcp": {
      "url": "https://weather-history.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-weather-history-mcp": {
      "serverUrl": "https://weather-history.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo Weather History MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.