# Weather Forecast Tool ## Description This Python code provides a tool to fetch and summarize weather forecasts for a given location using the [MET Norway API](https://api.met.no/weatherapi/locationforecast/2.0). It leverages the `FastMCP` framework for tool registration and uses `httpx` for asynchronous HTTP requests. ## Features * **Weather Forecast:** The `get_weather` function retrieves weather forecast data for a specified latitude and longitude. * **Daily Summary:** The `summarize_daily_timeseries_most_occurrences` function processes the raw forecast data to provide a concise daily summary, including: * Most frequent weather symbols for night, morning, afternoon, and evening. * Minimum and maximum temperatures for the day. * The forecast will be returned in local time. * **HTTP Requests:** The `make_net_request` function handles asynchronous HTTP requests to the MET Norway API. * **Weather Symbol Mapping:** The `map_weather_symbol` function translates weather symbol codes from the API into human-readable descriptions. ## Dependencies * Python 3.13+ * `collections` * `datetime` * `typing` * `asyncio` * `json` * `httpx` * `mcp.server.fastmcp` ## Setup 1. **Install Dependencies:** # Install MCP and other dependencies as needed (see [MCP documentation](https://github.com/modelcontextprotocol/python-sdk)) ``` 2. **Obtain Coordinates:** You'll need the latitude and longitude for the location you want the weather forecast for. ## Usage 1. **Import:** Import the necessary modules and initialize the FastMCP server. ```python from collections import Counter from datetime import datetime, timezone, timedelta from mcp.server.fastmcp import FastMCP from typing import Any import asyncio import json import httpx mcp = FastMCP("weather") ``` 2. **Use the `get_weather` tool:** ```python async def main(): weather_data = await get_weather(55.6761, 12.5683) # Example: Copenhagen, Denmark print(weather_data) if __name__ == "__main__": asyncio.run(main()) ``` Replace `55.6761` and `12.5683` with the desired latitude and longitude. ## Tool Definition \* `get_weather(latitude: float, longitude: float) -> str` * Retrieves and formats the weather forecast for a given location. * Arguments: * `latitude` (float): The latitude of the location. * `longitude` (float): The longitude of the location. * Returns: * `str`: A formatted string containing the daily weather forecast. ## MCP The code uses the FastMCP framework. Please refer to the FastMCP documentation for details on how to set up and run the server. ## License [MIT License](https://opensource.org/license/mit)