from mcp.server.fastmcp import FastMCP # Create an MCP server mcp = FastMCP( name="MCPTEST", host="0.0.0.0", # only used for SSE transport port=7860, # only used for SSE transport (HF expect 7860 as a port) ) @mcp.tool() def get_weather(city: str) -> dict: """Retrieves the current weather report for a specified city. Args: city (str): The name of the city (e.g., "New York", "London", "Tokyo"). Returns: dict: A dictionary containing the weather information. Includes a 'status' key ('success' or 'error'). If 'success', includes a 'report' key with weather details. If 'error', includes an 'error_message' key. """ print(f"--- Tool: get_weather called for city: {city} ---") # Log tool execution city_normalized = city.lower().replace(" ", "") # Basic normalization # Mock weather data mock_weather_db = { "newyork": {"status": "success", "report": "The weather in New York is sunny with a temperature of 25°C."}, "london": {"status": "success", "report": "It's cloudy in London with a temperature of 15°C."}, "tokyo": {"status": "success", "report": "Tokyo is experiencing light rain and a temperature of 18°C."}, } if city_normalized in mock_weather_db: return mock_weather_db[city_normalized] else: return {"status": "error", "error_message": f"Sorry, I don't have weather information for '{city}'."} # Add a simple calculator tool @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers together""" return a + b # Add a simple calculator tool @mcp.tool() def multiply(a: int, b: int) -> int: """Multiply two numbers together""" return a * b # Run the server if __name__ == "__main__": print("Running server with SSE transport") mcp.run(transport="sse")