Skip to main content
Glama

Google Calendar MCP

by Avik-creator
main.py3.92 kB
from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request from datetime import datetime, timezone import os.path import pickle from fastmcp import FastMCP mcp = FastMCP("Demo 🚀") @mcp.tool() def get_all_calendar_events(start_date: str, end_date: str): """Get all calendar events""" creds = None if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) service = build('calendar', 'v3', credentials=creds) start_date = datetime.strptime(start_date, "%Y-%m-%d").replace(tzinfo=timezone.utc).isoformat() end_date = datetime.strptime(end_date, "%Y-%m-%d").replace(tzinfo=timezone.utc).isoformat() events_result = service.events().list(calendarId='avikm744@gmail.com', timeMin=start_date, timeMax=end_date, maxResults=10, singleEvents=True, orderBy='startTime').execute() events = events_result.get('items', []) return events @mcp.tool() def create_calendar_event(title: str, start_date: str, end_date: str, description: str): """Create a calendar event""" creds = None if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) service = build('calendar', 'v3', credentials=creds) start_date = datetime.strptime(start_date, '%Y-%m-%d').replace(tzinfo=timezone.utc).isoformat() end_date = datetime.strptime(end_date, '%Y-%m-%d').replace(tzinfo=timezone.utc).isoformat() event = { 'summary': title, 'start': {'dateTime': start_date}, 'end': {'dateTime': end_date}, 'description': description } service.events().insert(calendarId='avikm744@gmail.com', body=event).execute() return f"Event {title} created successfully" @mcp.tool() def delete_calendar_event(event_id: str): """Delete a calendar event""" creds = None if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) service = build('calendar', 'v3', credentials=creds) service.events().delete(calendarId='avikm744@gmail.com', eventId=event_id).execute() return f"Event {event_id} deleted successfully" @mcp.tool() def update_calendar_event(event_id: str, title: str, start_date: str, end_date: str, description: str): """Update a calendar event""" creds = None if os.path.exists('token.pickle'): with open('token.pickle', 'rb') as token: creds = pickle.load(token) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) service = build('calendar', 'v3', credentials=creds) start_date = datetime.strptime(start_date, '%Y-%m-%d').replace(tzinfo=timezone.utc).isoformat() end_date = datetime.strptime(end_date, '%Y-%m-%d').replace(tzinfo=timezone.utc).isoformat() event = { 'summary': title, 'start': {'dateTime': start_date.isoformat()}, 'end': {'dateTime': end_date.isoformat()}, 'description': description } service.events().update(calendarId='avikm744@gmail.com', eventId=event_id, body=event).execute() return f"Event {event_id} updated successfully" if __name__ == '__main__': mcp.run(transport="stdio")

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/Avik-creator/googlecalendarMCP'

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