from mcp.server.fastmcp import FastMCP import random mcp = FastMCP("WeatherAgent") @mcp.tool() def get_forecast(city: str, dates: str) -> str: """Get the weather forecast for a city during specific dates.""" conditions = [ ("Sunny", "☀️", "Perfect for outdoor activities!"), ("Partly Cloudy", "⛅", "Great weather overall"), ("Cloudy", "☁️", "Mild and comfortable"), ("Light Rain", "🌧️", "Bring an umbrella"), ("Rainy", "🌧️", "Pack rain gear"), ("Windy", "💨", "Layer up!") ] results = [] results.append(f"🌤️ **Weather Forecast for {city}**") results.append(f"📅 {dates}") results.append("---") for i in range(5): cond, emoji, tip = random.choice(conditions) temp_high = random.randint(20, 32) temp_low = temp_high - random.randint(5, 10) humidity = random.randint(40, 80) results.append(f"") results.append(f"**Day {i+1}:** {emoji} {cond}") results.append(f" 🌡️ High: {temp_high}°C / Low: {temp_low}°C") results.append(f" 💧 Humidity: {humidity}%") results.append(f" 💡 {tip}") results.append("") results.append("---") results.append("🧳 **Packing Tip:** Light layers, comfortable walking shoes, and don't forget sunscreen!") return "\n".join(results) @mcp.tool() def get_packing_list(weather_conditions: str, activity_types: str) -> str: """Generate a packing list based on weather and activities.""" items = ["💳 Passport & ID", "🔌 Phone Charger", "🧼 Toiletries"] # Weather based if "Rain" in weather_conditions: items.extend(["☔ Umbrella", "🧥 Raincoat", "🥾 Waterproof shoes"]) if "Sunny" in weather_conditions: items.extend(["🕶️ Sunglasses", "🧴 Sunscreen SPF50", "🧢 Hat"]) if "Cold" in weather_conditions or "Windy" in weather_conditions: items.extend(["🧥 Warm Jacket", "🧣 Scarf"]) # Activity based if "Swimming" in activity_types or "Beach" in activity_types: items.extend(["🩲 Swimsuit", "🏖️ Beach Towel", "🩴 Flip flops"]) if "Hiking" in activity_types or "Walking" in activity_types: items.extend(["🥾 Hiking Shoes", "🎒 Backpack", "🧺 Water Bottle"]) if "Dinner" in activity_types or "Nightlife" in activity_types: items.extend(["👔 Smart Casual Outfit", "👞 Dress Shoes"]) return "🧳 **Recommended Packing List:**\n\n" + "\n".join(f"• {item}" for item in items) if __name__ == "__main__": mcp.run()