Skip to main content
Glama
calendar_formatting.py3.24 kB
def format_calendar_event(event): """Format a single calendar event for display Args: event: A Microsoft Graph event object Returns: String with formatted event details """ # Start with the ID (crucial for operations like delete/update) result = f"ID: {event.id}\n" result += f"Subject: {event.subject}\n" # Add organizer info if event.organizer and event.organizer.email_address: result += f"Organizer: {event.organizer.email_address.name or 'Unknown'} <{event.organizer.email_address.address or 'No email'}>\n" # Variables to store parsed datetime objects for start and end start_dt = None end_dt = None # Add time info with better formatting if event.start: # Format: "Monday, May 5, 2025 at 5:30 PM (AEST)" start_time = event.start.date_time if start_time: try: from datetime import datetime start_dt = datetime.fromisoformat(start_time.replace('Z', '+00:00').split('.')[0]) formatted_start = start_dt.strftime("%A, %B %d, %Y at %I:%M %p") result += f"Start: {formatted_start} ({event.start.time_zone.replace(' Time', '')})\n" except Exception: result += f"Start: {event.start.date_time} ({event.start.time_zone})\n" if event.end: # Format: "Monday, May 5, 2025 at 6:45 PM (AESST)" end_time = event.end.date_time if end_time: try: from datetime import datetime end_dt = datetime.fromisoformat(end_time.replace('Z', '+00:00').split('.')[0]) # Just show time for end if same day if start_dt and end_dt and end_dt.date() == start_dt.date(): formatted_end = end_dt.strftime("%I:%M %p") else: formatted_end = end_dt.strftime("%A, %B %d, %Y at %I:%M %p") result += f"End: {formatted_end} ({event.end.time_zone.replace(' Time', '')})\n" except Exception: result += f"End: {event.end.date_time} ({event.end.time_zone})\n" # Add location if available if event.location and event.location.display_name: result += f"Location: {event.location.display_name}\n" # Add online meeting info if available if hasattr(event, 'is_online_meeting') and event.is_online_meeting: result += f"Online Meeting: Yes\n" if hasattr(event, 'online_meeting_url') and event.online_meeting_url: result += f"Meeting URL: {event.online_meeting_url}\n" # Add attendee count if there are attendees if event.attendees: result += f"Attendees: {len(event.attendees)}\n" return result def format_event_page(event_page): """Format a page of calendar events for display Args: event_page: Page of events from the GraphController API Returns: String with formatted event list """ result = "" if event_page and event_page.value: # Format each event for i, event in enumerate(event_page.value, 1): result += f"{i}. {format_calendar_event(event)}\n" else: result += "No events found." return result

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/Norcim133/OutlookMCPServer'

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