Skip to main content
Glama
utils.py2.31 kB
from datetime import datetime, timezone import json from typing import List from zoneinfo import ZoneInfo from mcp import McpError from pydantic import BaseModel from dateutil import parser class TimeResult(BaseModel): timezone: str datetime: str def get_zoneinfo(timezone_name: str) -> ZoneInfo: try: return ZoneInfo(timezone_name) except Exception as e: raise McpError(f"Invalid timezone: {str(e)}") def format_get_weather_bytime(data_result) -> str : return f""" Please analyze the above JSON weather forecast information and generate a report for me. Please note that the content is provided city: city name start_date: search weather start time end_date: search weather end time weather: weather data. {json.dumps(data_result)} """ def get_closest_utc_index(hourly_times: List[str]) -> int: """ Returns the index of the datetime in `hourly_times` closest to the current UTC time or a provided datetime. :param hourly_times: List of ISO 8601 time strings (UTC) :return: Index of the closest datetime in the list """ current_time = datetime.now(timezone.utc) parsed_times = [ parser.isoparse(t).replace(tzinfo=timezone.utc) if parser.isoparse(t).tzinfo is None else parser.isoparse(t).astimezone(timezone.utc) for t in hourly_times ] return min(range(len(parsed_times)), key=lambda i: abs(parsed_times[i] - current_time)) # Weather code descriptions (from Open-Meteo documentation) weather_descriptions = { 0: "Clear sky", 1: "Mainly clear", 2: "Partly cloudy", 3: "Overcast", 45: "Fog", 48: "Depositing rime fog", 51: "Light drizzle", 53: "Moderate drizzle", 55: "Dense drizzle", 56: "Light freezing drizzle", 57: "Dense freezing drizzle", 61: "Slight rain", 63: "Moderate rain", 65: "Heavy rain", 66: "Light freezing rain", 67: "Heavy freezing rain", 71: "Slight snow fall", 73: "Moderate snow fall", 75: "Heavy snow fall", 77: "Snow grains", 80: "Slight rain showers", 81: "Moderate rain showers", 82: "Violent rain showers", 85: "Slight snow showers", 86: "Heavy snow showers", 95: "Thunderstorm", 96: "Thunderstorm with slight hail", 99: "Thunderstorm with heavy hail", }

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/theshyPika/mcp-servers'

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