Google Calendar MCP Server for Cloudflare Workers
33 tools available in the Google Calendar MCP server. Each tool can be called by AI assistants to perform specific actions.
googlecalendar_get_calendarGet metadata for a calendar.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
}
}
}googlecalendar_list_aclList access control rules for a calendar.
Returns all sharing rules and permissions for the specified calendar.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"pageToken": {
"type": "string",
"description": "Page token"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"description": "Max results"
},
"showDeleted": {
"type": "boolean",
"description": "Show deleted rules"
}
}
}googlecalendar_get_acl_ruleGet a specific access control rule.
Args:
{
"type": "object",
"required": [
"calendarId",
"ruleId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"ruleId": {
"type": "string",
"description": "ACL rule ID"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
}
}
}googlecalendar_share_calendarShare a calendar by creating an access control rule.
Role descriptions:
Scope types:
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"sendNotifications": {
"type": "boolean",
"description": "Send notification email"
}
}
}googlecalendar_update_acl_ruleUpdate an access control rule (full update).
Args:
{
"type": "object",
"required": [
"calendarId",
"ruleId"
],
"properties": {
"ruleId": {
"type": "string",
"description": "ACL rule ID"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"sendNotifications": {
"type": "boolean",
"description": "Send notification email"
}
}
}googlecalendar_patch_acl_rulePartially update an access control rule.
Only updates the specified fields.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"ruleId": {
"type": "string",
"description": "ACL rule ID"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"sendNotifications": {
"type": "boolean",
"description": "Send notification email"
}
}
}googlecalendar_unshare_calendarRemove calendar sharing by deleting an access control rule.
Args:
{
"type": "object",
"required": [
"calendarId",
"ruleId"
],
"properties": {
"ruleId": {
"type": "string",
"description": "ACL rule ID"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
}
}
}googlecalendar_list_calendar_listList all calendars on the user's calendar list.
Returns a paginated list of the user's calendar entries. Use pageToken to fetch subsequent pages.
Args:
{
"type": "object",
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"default": "json",
"description": "Response format"
},
"pageToken": {
"type": "string",
"description": "Page token for pagination"
},
"showHidden": {
"type": "boolean",
"description": "Show hidden entries"
},
"showDeleted": {
"type": "boolean",
"description": "Include deleted entries"
}
}
}googlecalendar_get_calendar_list_entryGet a specific calendar list entry.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
}
}
}googlecalendar_insert_calendar_list_entryAdd an existing calendar to the user's calendar list.
This adds a calendar that already exists (e.g., a shared calendar) to the user's list.
Args:
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Calendar ID to add"
},
"hidden": {
"type": "boolean",
"description": "Hide from list"
},
"colorId": {
"type": "string",
"description": "Color ID"
},
"selected": {
"type": "boolean",
"description": "Show in calendar UI"
},
"backgroundColor": {
"type": "string",
"description": "Background color (hex)"
},
"foregroundColor": {
"type": "string",
"description": "Foreground color (hex)"
},
"summaryOverride": {
"type": "string",
"description": "Custom display name"
},
"defaultReminders": {
"type": "array",
"items": {
"type": "string"
},
"description": "Default reminders"
}
}
}googlecalendar_update_calendar_list_entryUpdate an entry on the user's calendar list (full update).
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"hidden": {
"type": "boolean",
"description": "Hide from list"
},
"colorId": {
"type": "string",
"description": "Color ID"
},
"selected": {
"type": "boolean",
"description": "Show in calendar UI"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"backgroundColor": {
"type": "string",
"description": "Background color (hex)"
},
"foregroundColor": {
"type": "string",
"description": "Foreground color (hex)"
},
"summaryOverride": {
"type": "string",
"description": "Custom display name"
},
"defaultReminders": {
"type": "array",
"items": {
"type": "string"
},
"description": "Default reminders"
}
}
}googlecalendar_patch_calendar_list_entryPartially update an entry on the user's calendar list.
Only updates the specified fields, leaving others unchanged.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"hidden": {
"type": "boolean",
"description": "Hide from list"
},
"colorId": {
"type": "string",
"description": "Color ID"
},
"selected": {
"type": "boolean",
"description": "Show in calendar UI"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"backgroundColor": {
"type": "string",
"description": "Background color (hex)"
},
"foregroundColor": {
"type": "string",
"description": "Foreground color (hex)"
},
"summaryOverride": {
"type": "string",
"description": "Custom display name"
}
}
}googlecalendar_delete_calendar_list_entryRemove a calendar from the user's calendar list.
This removes the calendar from the user's list but does not delete the calendar itself.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Calendar ID to remove"
}
}
}googlecalendar_create_calendarCreate a new secondary calendar.
The calendar is created with the authenticated user as the owner. Note: Primary calendars cannot be created; they are automatically created for users.
Args:
{
"type": "object",
"required": [
"summary"
],
"properties": {
"summary": {
"type": "string",
"description": "Calendar title"
},
"location": {
"type": "string",
"description": "Geographic location"
},
"timeZone": {
"type": "string",
"description": "Time zone (IANA format)"
},
"description": {
"type": "string",
"description": "Calendar description"
}
}
}googlecalendar_update_calendarUpdate metadata for a calendar (full update).
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"summary": {
"type": "string",
"description": "Calendar title"
},
"location": {
"type": "string",
"description": "Geographic location"
},
"timeZone": {
"type": "string",
"description": "Time zone (IANA format)"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"description": {
"type": "string",
"description": "Calendar description"
}
}
}googlecalendar_patch_calendarPartially update metadata for a calendar.
Only updates the specified fields, leaving others unchanged.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"summary": {
"type": "string",
"description": "Calendar title"
},
"location": {
"type": "string",
"description": "Geographic location"
},
"timeZone": {
"type": "string",
"description": "Time zone (IANA format)"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"description": {
"type": "string",
"description": "Calendar description"
}
}
}googlecalendar_delete_calendarDelete a secondary calendar.
The primary calendar cannot be deleted; use clear instead to remove all events.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Calendar ID to delete"
}
}
}googlecalendar_clear_calendarClear a primary calendar.
Deletes all events from the primary calendar of an account. This operation cannot be undone. Note: Only works on the primary calendar.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"calendarId": {
"type": "string",
"description": "Calendar ID (usually \"primary"
}
}
}googlecalendar_stop_channelStop receiving push notifications for a channel.
This stops watching for changes that were set up using a watch request. You need the channel ID and resource ID that were returned when the watch was created.
Note: Watch channels for CalendarList, Events, ACL, and Settings must be created through their respective watch endpoints, which are not currently implemented.
Args:
{
"type": "object",
"required": [
"id",
"resourceId"
],
"properties": {
"id": {
"type": "string",
"description": "Channel ID (UUID)"
},
"resourceId": {
"type": "string",
"description": "Resource ID from watch"
}
}
}googlecalendar_get_colorsGet the color definitions for calendars and events.
Returns two color palettes:
Each color has:
Use these IDs when setting colors on calendars or events.
Args:
{
"type": "object",
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
}
}
}googlecalendar_list_eventsList events on a calendar.
Returns events within the specified time range. Use singleEvents=true to expand recurring events.
Args:
{
"type": "object",
"required": [
"calendarId"
],
"properties": {
"q": {
"type": "string",
"description": "Search query"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"iCalUID": {
"type": "string",
"description": "iCalendar UID filter"
},
"orderBy": {
"enum": [
"startTime",
"updated"
],
"type": "string",
"description": "Sort order"
},
"timeMax": {
"type": "string",
"description": "End time (RFC3339)"
},
"timeMin": {
"type": "string",
"description": "Start time (RFC3339)"
},
"timeZone": {
"type": "string",
"description": "Time zone"
},
"pageToken": {
"type": "string",
"description": "Page token"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"maxResults": {
"type": "integer",
"maximum": 2500,
"minimum": 1,
"description": "Max results"
},
"updatedMin": {
"type": "string",
"description": "Updated after (RFC3339)"
},
"showDeleted": {
"type": "boolean",
"description": "Show deleted"
},
"singleEvents": {
"type": "boolean",
"description": "Expand recurring events"
},
"showHiddenInvitations": {
"type": "boolean",
"description": "Show hidden invitations"
}
}
}googlecalendar_get_eventGet a specific event.
Args:
{
"type": "object",
"required": [
"calendarId",
"eventId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"eventId": {
"type": "string",
"description": "Event ID"
},
"timeZone": {
"type": "string",
"description": "Time zone"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"maxAttendees": {
"type": "integer",
"description": "Max attendees"
}
}
}googlecalendar_quick_add_eventCreate an event from a text string.
Parses natural language to create an event. Examples:
Args:
{
"type": "object",
"required": [
"calendarId",
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Natural language event text"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"sendUpdates": {
"enum": [
"all",
"externalOnly",
"none"
],
"type": "string",
"description": "Send notifications"
}
}
}googlecalendar_create_eventCreate a new event.
For all-day events, use 'date' in start/end. For timed events, use 'dateTime'.
Args:
{
"type": "object",
"required": [
"calendarId",
"summary"
],
"properties": {
"colorId": {
"type": "string",
"description": "Color ID"
},
"summary": {
"type": "string",
"description": "Event title"
},
"location": {
"type": "string",
"description": "Location"
},
"attendees": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attendees"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"recurrence": {
"type": "array",
"items": {
"type": "string"
},
"description": "Recurrence rules"
},
"description": {
"type": "string",
"description": "Description"
},
"sendUpdates": {
"enum": [
"all",
"externalOnly",
"none"
],
"type": "string",
"description": "Send notifications"
},
"guestsCanModify": {
"type": "boolean",
"description": "Guests can modify"
},
"guestsCanInviteOthers": {
"type": "boolean",
"description": "Guests can invite"
},
"guestsCanSeeOtherGuests": {
"type": "boolean",
"description": "Guests can see others"
}
}
}googlecalendar_update_eventUpdate an event (full update).
All writable fields must be provided; unspecified fields will be cleared.
Args:
{
"type": "object",
"required": [
"calendarId",
"eventId"
],
"properties": {
"status": {
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"type": "string",
"description": "Status"
},
"colorId": {
"type": "string",
"description": "Color ID"
},
"eventId": {
"type": "string",
"description": "Event ID"
},
"summary": {
"type": "string",
"description": "Event title"
},
"location": {
"type": "string",
"description": "Location"
},
"attendees": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attendees"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"recurrence": {
"type": "array",
"items": {
"type": "string"
},
"description": "Recurrence rules"
},
"description": {
"type": "string",
"description": "Description"
},
"sendUpdates": {
"enum": [
"all",
"externalOnly",
"none"
],
"type": "string",
"description": "Send notifications"
}
}
}googlecalendar_patch_eventPartially update an event.
Only updates the specified fields, leaving others unchanged.
Args:
{
"type": "object",
"required": [
"calendarId",
"eventId"
],
"properties": {
"status": {
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"type": "string",
"description": "Status"
},
"colorId": {
"type": "string",
"description": "Color ID"
},
"eventId": {
"type": "string",
"description": "Event ID"
},
"summary": {
"type": "string",
"description": "Event title"
},
"location": {
"type": "string",
"description": "Location"
},
"attendees": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attendees"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"description": {
"type": "string",
"description": "Description"
},
"sendUpdates": {
"enum": [
"all",
"externalOnly",
"none"
],
"type": "string",
"description": "Send notifications"
}
}
}googlecalendar_delete_eventDelete an event.
For recurring events, this deletes all instances.
Args:
{
"type": "object",
"required": [
"calendarId",
"eventId"
],
"properties": {
"eventId": {
"type": "string",
"description": "Event ID"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"sendUpdates": {
"enum": [
"all",
"externalOnly",
"none"
],
"type": "string",
"description": "Send notifications"
}
}
}googlecalendar_import_eventImport an event with a specified iCalendar UID.
This is used for importing events from other calendar systems. The UID must be globally unique.
Args:
{
"type": "object",
"required": [
"calendarId",
"iCalUID"
],
"properties": {
"status": {
"enum": [
"confirmed",
"tentative",
"cancelled"
],
"type": "string",
"description": "Status"
},
"colorId": {
"type": "string",
"description": "Color ID"
},
"iCalUID": {
"type": "string",
"description": "iCalendar UID"
},
"summary": {
"type": "string",
"description": "Event title"
},
"location": {
"type": "string",
"description": "Location"
},
"attendees": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attendees"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"recurrence": {
"type": "array",
"items": {
"type": "string"
},
"description": "Recurrence rules"
},
"description": {
"type": "string",
"description": "Description"
}
}
}googlecalendar_move_eventMove an event to another calendar.
The event is moved from the source calendar to the destination calendar.
Args:
{
"type": "object",
"required": [
"calendarId",
"eventId",
"destination"
],
"properties": {
"eventId": {
"type": "string",
"description": "Event ID"
},
"calendarId": {
"type": "string",
"description": "Source calendar ID"
},
"destination": {
"type": "string",
"description": "Destination calendar ID"
},
"sendUpdates": {
"enum": [
"all",
"externalOnly",
"none"
],
"type": "string",
"description": "Send notifications"
}
}
}googlecalendar_list_event_instancesList instances of a recurring event.
Returns all instances of a recurring event within the specified time range.
Args:
{
"type": "object",
"required": [
"calendarId",
"eventId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"eventId": {
"type": "string",
"description": "Recurring event ID"
},
"timeMax": {
"type": "string",
"description": "End time (RFC3339)"
},
"timeMin": {
"type": "string",
"description": "Start time (RFC3339)"
},
"timeZone": {
"type": "string",
"description": "Time zone"
},
"pageToken": {
"type": "string",
"description": "Page token"
},
"calendarId": {
"type": "string",
"description": "Calendar ID"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"description": "Max results"
},
"showDeleted": {
"type": "boolean",
"description": "Show deleted"
},
"maxAttendees": {
"type": "integer",
"description": "Max attendees"
}
}
}googlecalendar_query_freebusyQuery free/busy information for a set of calendars.
Returns busy times for the specified calendars within the given time range. Useful for finding available meeting times.
Args:
{
"type": "object",
"required": [
"timeMin",
"timeMax"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"timeMax": {
"type": "string",
"description": "End time (RFC3339)"
},
"timeMin": {
"type": "string",
"description": "Start time (RFC3339)"
},
"timeZone": {
"type": "string",
"description": "Time zone"
},
"groupExpansionMax": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max calendars per group"
},
"calendarExpansionMax": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max identifiers per group"
}
}
}googlecalendar_list_settingsList all user settings for the authenticated user.
Common settings include:
Args:
{
"type": "object",
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"pageToken": {
"type": "string",
"description": "Page token"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"description": "Max results"
}
}
}googlecalendar_get_settingGet a specific user setting.
Common setting IDs:
Args:
{
"type": "object",
"required": [
"settingId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"settingId": {
"type": "string",
"description": "Setting ID"
}
}
}