An MCP server for interacting with the Weatherstack API via Model Context Protocol tools, providing access to current, historical, forecast, and marine weather data.
The server demonstrates solid definition quality with consistently well-documented tools. All 5 tools have clear, descriptive names following the verb_noun pattern (query_current_weather, query_daily_historical_weather, etc.). Descriptions are comprehensive and explain supported input formats clearly. Input schemas are properly defined with types and parameter descriptions. However, output schemas are not documented, the tools return Union[dict, CallToolResult] without specifying what fields the dict contains, limiting downstream tool composition. Error handling via CallToolResult is present but recovery guidance is minimal. All tools are read-only and low-risk, which simplifies security concerns.
Gets the current weather for a specified location using the Weatherstack API. Parameters: query (str): The location to retrieve weather data for. Supported formats: - City name (e.g. "New York") - ZIP code (UK, Canada, US) (e.g. "99501") - Latitude,Longitude coordinates (e.g. "40.7831,-73.9712") - IP address (e.g. "153.65.8.20") - Special keyword "fetch:ip" to auto-detect requester IP units (str, optional): The unit system to use. Defaults to "m". - "m" for Metric - "s" for Scientific - "f" for Fahrenheit Returns: Union[dict, CallToolResult]: A dictionary containing the current weather data, or a CallToolResult with an error message if the request fails.
Gets daily historical weather data for a specified location and list of dates using the Weatherstack API. Parameters: query (str): The location to retrieve weather data for. Supported formats: - City name (e.g. "New York") - ZIP code (UK, Canada, US) (e.g. "99501") - Latitude,Longitude coordinates (e.g. "40.7831,-73.9712") - IP address (e.g. "153.65.8.20") - Special keyword "fetch:ip" to auto-detect requester IP historical_dates (list[str]): A list of historical dates in 'YYYY-MM-DD' format. units (str, optional): The unit system to use. Defaults to "m". - "m" for Metric - "s" for Scientific - "f" for Fahrenheit Returns: Union[dict, CallToolResult]: A dictionary containing the historical weather data, or a CallToolResult with an error message if the request fails.
Gets weather forecast data for a specified location and number of days using the Weatherstack API. Parameters: query (str): The location to retrieve forecast data for. Supported formats: - City name (e.g. "New York") - ZIP code (UK, Canada, US) (e.g. "99501") - Latitude,Longitude coordinates (e.g. "40.7831,-73.9712") - IP address (e.g. "153.65.8.20") - Special keyword "fetch:ip" to auto-detect requester IP forecast_days (int): The number of days to retrieve forecast data for. Maximum allowed is 21. Returns: Union[dict, CallToolResult]: A dictionary containing the forecast weather data, or a CallToolResult with an error message if the request fails.
Output schemas not documented. Tools return Union[dict, CallToolResult] without specifying response structure. LLMs cannot know what fields to expect or plan downstream operations.
Error handling lacks recovery guidance. CallToolResult includes error text but does not guide LLMs on next steps or classify errors as retryable vs fatal.
Parameter format constraints stated only in descriptions, not as JSON Schema patterns or enums. Examples like 'YYYY-MM-DD' are prose rather than formal constraints, forcing LLMs to parse natural language instead of reading machine-readable schemas.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 7 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Gets hourly historical weather data for a specified location and list of dates using the Weatherstack API. Parameters: query (str): The location to retrieve weather data for. Supported formats: - City name (e.g. "New York") - ZIP code (UK, Canada, US) (e.g. "99501") - Latitude,Longitude coordinates (e.g. "40.7831,-73.9712") - IP address (e.g. "153.65.8.20") - Special keyword "fetch:ip" to auto-detect requester IP historical_dates (list[str]): A list of historical dates in 'YYYY-MM-DD' format. units (str, optional): The unit system to use. Defaults to "m". - "m" for Metric - "s" for Scientific - "f" for Fahrenheit interval (int, optional): The interval for hourly data aggregation. Defaults to 3. Supported values: - 1 for hourly - 3 for 3-hourly (default) - 6 for 6-hourly - 12 for 12-hourly (day/night) - 24 for daily average Returns: Union[dict, CallToolResult]: A dictionary containing the historical weather data, or a CallToolResult with an error message if the request fails.
Gets live marine/sailing weather data and up to 7 days of forecast for a specified location (by latitude and longitude) using the Weatherstack API. This tool accesses today's live marine weather forecast as well as forecasts for up to 7 days into the future for the given coordinates. It is useful for sailing, fishing, boating, and coastal activity planning. Parameters: lat (float): The latitude of the location to retrieve marine weather data for. lon (float): The longitude of the location to retrieve marine weather data for. units (str, optional): The unit system to use. Defaults to "m". - "m" for Metric - "s" for Scientific - "f" for Fahrenheit interval (int, optional): Optional interval for forecast data granularity, if supported by the API. Returns: Union[dict, CallToolResult]: A dictionary containing the marine weather data, or a CallToolResult with an error message if the request fails.
No pagination parameters (limit, offset, page, cursor) documented. Tools accept complex lists (e.g., historical_dates array) without specifying size limits, risking context window exhaustion.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). While all tools are read-only and safe, explicit annotations would signal this to clients.