import os import random import requests from mcp.server.fastmcp import FastMCP STREAMABLE_HTTP_HOST = os.getenv("STREAMABLE_HTTP_HOST", "127.0.0.1") STREAMABLE_HTTP_PORT = int(os.getenv("STREAMABLE_HTTP_PORT", "18080")) # Create server mcp = FastMCP("Echo Server", host=STREAMABLE_HTTP_HOST, port=STREAMABLE_HTTP_PORT) @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers""" print(f"[debug-server] add({a}, {b})") return a + b @mcp.tool() def get_secret_word() -> str: print("[debug-server] get_secret_word()") return random.choice(["apple", "banana", "cherry"]) @mcp.tool() def get_current_weather(city: str) -> str: print(f"[debug-server] get_current_weather({city})") # Avoid slow or flaky network calls during automated runs. try: endpoint = "https://wttr.in" response = requests.get(f"{endpoint}/{city}", timeout=2) if response.ok: return response.text except Exception: pass # Fallback keeps the tool responsive even when offline. return f"Weather data unavailable right now; assume clear skies in {city}." if __name__ == "__main__": mcp.run(transport="streamable-http")