Skip to main content
Glama
wolkwork

KNMI Weather MCP

by wolkwork

what_is_the_weather_like_in

Get current weather conditions and forecasts for any location in the Netherlands using real-time data from KNMI weather stations.

Instructions

Get and interpret weather data for a location in the Netherlands

Args:
    location: City or place name in the Netherlands
Returns:
    A natural language interpretation of the current weather conditions

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
locationYes

Implementation Reference

  • The core handler function for the 'what_is_the_weather_like_in' MCP tool. It is registered via @mcp.tool() decorator, fetches coordinates and weather data, and generates a natural language summary using a helper prompt.
    @mcp.tool()
    async def what_is_the_weather_like_in(location: str, ctx: Context) -> str:
        """
        Get and interpret weather data for a location in the Netherlands
    
        Args:
            location: City or place name in the Netherlands
        Returns:
            A natural language interpretation of the current weather conditions
        """
        try:
            # Get the coordinates for the location
            coords = await get_coordinates(location)
    
            # Get the weather data
            weather_data = await weather_service.get_weather_by_location(location, ctx)
    
            # Convert to dict and ensure all fields are present
            data_dict = weather_data.dict()
    
            # Add location information
            data_dict["requested_location"] = location
            data_dict["location_coordinates"] = {
                "latitude": coords.latitude,
                "longitude": coords.longitude,
            }
    
            # Use the interpretation prompt to analyze it
            return weather_interpretation(data_dict)
        except Exception as e:
            logger.error(f"Error getting weather for {location}: {str(e)}")
            return f"Error: Unable to get weather data for {location}. {str(e)}"
  • Supporting prompt function invoked by the tool handler to format raw weather data into a structured prompt for natural language interpretation.
    @mcp.prompt()
    def weather_interpretation(raw_data: Dict[str, Any]) -> str:
        """Help Claude interpret raw weather data"""
        try:
            location = raw_data.get("requested_location", "Unknown location")
            coords = raw_data.get("location_coordinates", {})
            lat = coords.get("latitude", 0.0)
            lon = coords.get("longitude", 0.0)
            station_name = raw_data.get("station_name", "Unknown station")
            station_id = raw_data.get("station_id", "Unknown ID")
            timestamp = raw_data.get("timestamp", "Unknown time")
    
            return f"""Please analyze this weather data from KNMI and provide:
            1. A clear summary of current conditions
            2. Important weather measurements and their values
            3. Any notable patterns or extreme values
            4. Relevant clothing advice based on the conditions
            
            Location: {location} ({lat:.3f}°N, {lon:.3f}°E)
            Weather station: {station_name} ({station_id}) at {timestamp}
            
            Current measurements:
            - Temperature: {raw_data.get("temperature", "N/A")}°C
            - Humidity: {raw_data.get("humidity", "N/A")}%
            - Wind Speed: {raw_data.get("wind_speed", "N/A")} m/s
            - Wind Direction: {raw_data.get("wind_direction", "N/A")} degrees
            - Precipitation: {raw_data.get("precipitation", "N/A")} mm
            - Visibility: {raw_data.get("visibility", "N/A")} meters
            - Pressure: {raw_data.get("pressure", "N/A")} hPa
            """
        except Exception as e:
            logger.error(f"Error formatting weather interpretation: {str(e)}")
            return "Error: Unable to interpret weather data due to missing or invalid data."

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/wolkwork/knmi-mcp'

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