Spaces:
Running
Running
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) | |
) | |
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 | |
def add(a: int, b: int) -> int: | |
"""Add two numbers together""" | |
return a + b | |
# Add a simple calculator 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") |