Skip to main content
Glama

get_forecast

Retrieve weather forecast data for specific coordinates using latitude and longitude parameters to access location-based meteorological information.

Instructions

Get weather forecast for a location.

Args:
    latitude: Latitude of the location
    longitude: Longitude of the location

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes

Implementation Reference

  • The handler function for the 'get_forecast' tool. It is registered via the @mcp.tool() decorator. Retrieves the weather forecast for a given latitude and longitude by querying the National Weather Service API, parsing the response, and formatting the next 5 forecast periods into a readable string.
    @mcp.tool()
    async def get_forecast(latitude: float, longitude: float) -> str:
        """Get weather forecast for a location.
    
        Args:
            latitude: Latitude of the location
            longitude: Longitude of the location
        """
        # First get the forecast grid endpoint
        points_url = f"{NWS_API_BASE}/points/{latitude},{longitude}"
        points_data = await make_nws_request(points_url)
    
        if not points_data:
            return "Unable to fetch forecast data for this location."
    
        # Get the forecast URL from the points response
        forecast_url = points_data["properties"]["forecast"]
        forecast_data = await make_nws_request(forecast_url)
    
        if not forecast_data:
            return "Unable to fetch detailed forecast."
    
        # Format the periods into a readable forecast
        periods = forecast_data["properties"]["periods"]
        forecasts = []
        for period in periods[:5]:  # Only show next 5 periods
            forecast = f"""
    {period["name"]}:
    Temperature: {period["temperature"]}°{period["temperatureUnit"]}
    Wind: {period["windSpeed"]} {period["windDirection"]}
    Forecast: {period["detailedForecast"]}
    """
            forecasts.append(forecast)
    
        return "\n---\n".join(forecasts)
  • Helper function used by get_forecast to make asynchronous HTTP requests to the NWS API with proper headers, timeout, and error handling.
    async def make_nws_request(url: str) -> dict[str, Any] | None:
        """Make a request to the NWS API with proper error handling."""
        headers = {"User-Agent": USER_AGENT, "Accept": "application/geo+json"}
        # Creates an HTTP client using httpx library (async alternative to requests)
        # async with ensures client closes properly
        async with httpx.AsyncClient() as client:
            try:
                response = await client.get(url, headers=headers, timeout=30.0)
                response.raise_for_status()  # Raises error if status code is 4xx/5xx
                return response.json()
            # If anything fails, returns None instead of crashing
            except Exception:
                return None
  • weather.py:78-78 (registration)
    The @mcp.tool() decorator registers the get_forecast function as an MCP tool, making it available for invocation by language models.
    @mcp.tool()
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/santosh-ksharma/mcp-weather'

If you have feedback or need assistance with the MCP directory API, please join our Discord server