Skip to main content
Glama
OleBo

Weather MCP Server

by OleBo

get_forecast

Retrieve weather forecasts for specific locations using latitude and longitude coordinates to plan activities and prepare for conditions.

Instructions

Get weather forecast for a location.

Args: latitude: Latitude of the location (recommended: up to 4 decimal places) longitude: Longitude of the location (recommended: up to 4 decimal places)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes

Implementation Reference

  • The handler function for the 'get_forecast' tool. It is decorated with @mcp.tool() for registration and implements the logic to retrieve and format weather forecast data from the National Weather Service (NWS) API based on latitude and longitude.
        @mcp.tool()
        async def get_forecast(latitude: float, longitude: float) -> str:
            """Get weather forecast for a location.
    
            Args:
                latitude: Latitude of the location (recommended: up to 4 decimal places)
                longitude: Longitude of the location (recommended: up to 4 decimal places)
            """
            # 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 HTTP requests to the NWS API with proper headers 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",
        }
        async with httpx.AsyncClient(follow_redirects=True) as client:
            try:
                response = await client.get(url, headers=headers, timeout=30.0)
                response.raise_for_status()
                return response.json()
            except Exception:
                return None
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/OleBo/weather-mcp'

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