Skip to main content
Glama

get_fire_risk

Retrieve fire risk forecasts for Portuguese municipalities to assess wildfire danger levels up to two days ahead.

Instructions

Get fire risk forecast for Portugal (Previsão Risco de Incêndio até 2 dias).

Args:
    day: Forecast day (0=today, 1=tomorrow). Valid range: 0-1

Returns fire risk classification (RCM - Risco de Incêndio) for Portuguese municipalities.
Fire risk levels: 1=Low, 2=Moderate, 3=High, 4=Very High, 5=Maximum

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dayNo

Implementation Reference

  • The handler function for the get_fire_risk tool, including registration via @mcp.tool() decorator, input validation, API call to IPMA for fire risk data, and formatted output of risk levels for Portuguese municipalities.
    @mcp.tool()
    async def get_fire_risk(day: int = 0) -> str:
        """Get fire risk forecast for Portugal (Previsão Risco de Incêndio até 2 dias).
        
        Args:
            day: Forecast day (0=today, 1=tomorrow). Valid range: 0-1
        
        Returns fire risk classification (RCM - Risco de Incêndio) for Portuguese municipalities.
        Fire risk levels: 1=Low, 2=Moderate, 3=High, 4=Very High, 5=Maximum
        """
        if day < 0 or day > 1:
            return "Invalid day parameter. Please use 0 (today) or 1 (tomorrow)."
        
        fire_url = f"{IPMA_API_BASE}/forecast/meteorology/rcm/rcm-d{day}.json"
        fire_data = await make_ipma_request(fire_url)
        
        if not fire_data or "local" not in fire_data:
            return "Unable to fetch fire risk data."
        
        result = f"""Fire Risk Forecast (RCM - Risco de Incêndio)
    Forecast Date: {fire_data.get('dataPrev', 'Unknown')}
    Model Run Date: {fire_data.get('dataRun', 'Unknown')}
    File Date: {fire_data.get('fileDate', 'Unknown')}
    
    Fire Risk Levels: 1=Low, 2=Moderate, 3=High, 4=Very High, 5=Maximum
    
    Sample Municipalities (first 20):
    """
        
        count = 0
        for dico, location in fire_data['local'].items():
            if count >= 20:
                break
            
            rcm_value = location.get('data', {}).get('rcm', 'N/A')
            risk_label = {1: 'Low', 2: 'Moderate', 3: 'High', 4: 'Very High', 5: 'Maximum'}.get(rcm_value, 'Unknown')
            
            result += f"""
    Municipality Code: {dico}
    Position: {location.get('latitude', 'N/A')}°N, {location.get('longitude', 'N/A')}°E
    Fire Risk: {rcm_value} ({risk_label})
    ---"""
            count += 1
        
        total_locations = len(fire_data['local'])
        result += f"\n\nTotal Municipalities: {total_locations}"
        
        return result

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/gabriel20vieira/ipma-mcp-server'

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