mcp_ / tools /get_current_time.py
eienmojiki's picture
x
8d3757d
# tools/get_current_time.py
import gradio as gr
import datetime
import pytz
from utils.tool_manager import tool
def time_ui():
"""
Builds the Gradio UI components for the Get Current Time tool.
Returns a tuple: (ui_group, input_components, output_components, button_component)
"""
with gr.Group(visible=False) as ui_group: # Initially hidden
timezone_input = gr.Textbox(label="Timezone (e.g., UTC, Asia/Ho_Chi_Minh)", value="UTC", placeholder="Enter IANA timezone name")
output_text = gr.Textbox(label="Current Time", interactive=False)
run_button = gr.Button("Get Time")
# Return the group, input(s), output(s), and the button
return ui_group, timezone_input, output_text, run_button
@tool(
name="Get Current Time",
control_components=time_ui # Pass the UI builder function
)
def get_current_time(timezone: str = "UTC") -> str:
"""
Gets the current time for the given timezone string.
This tool takes an IANA timezone name (like "UTC", "America/New_York",
"Asia/Ho_Chi_Minh") and returns the current datetime in that zone.
Defaults to "UTC" if no timezone is provided.
Args:
timezone (str): The IANA timezone string (e.g., "UTC").
Returns:
str: The current time in the specified timezone, or an error message.
"""
try:
# pytz requires the timezone string to be correct
tz = pytz.timezone(timezone)
now_utc = datetime.datetime.utcnow()
now_in_tz = pytz.utc.localize(now_utc).astimezone(tz)
return now_in_tz.strftime('%Y-%m-%d %H:%M:%S %Z%z')
except pytz.UnknownTimeZoneError:
return f"Error: Unknown timezone '{timezone}'. Please provide a valid IANA timezone name."
except Exception as e:
return f"An unexpected error occurred: {e}"