calendar-update-event
Modify existing Google Calendar events by updating details like title, time, location, attendees, or description using event ID.
Instructions
Update an existing calendar event
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| eventId | Yes | Event ID | |
| calendarId | No | Calendar ID - Available options: 'primary' (Primary Calendar) | primary |
| summary | No | Event title/summary | |
| description | No | Event description | |
| location | No | Event location | |
| startDateTime | No | Start date/time in ISO format | |
| endDateTime | No | End date/time in ISO format | |
| attendees | No | Array of attendee email addresses |
Implementation Reference
- src/calendar.ts:466-538 (handler)The main handler function that performs the calendar event update using Google Calendar API. It fetches the existing event, applies updates to provided fields, calls the update API, and returns formatted markdown response.export async function updateEvent( params: z.infer<ReturnType<typeof updateEventSchema>> ) { try { const auth = createCalendarAuth(); const calendar = google.calendar({ version: "v3", auth }); // First get the existing event const existingEvent = await calendar.events.get({ calendarId: params.calendarId, eventId: params.eventId, }); const updatedEvent: any = { ...existingEvent.data }; // Update only the provided fields if (params.summary !== undefined) updatedEvent.summary = params.summary; if (params.description !== undefined) updatedEvent.description = params.description; if (params.location !== undefined) updatedEvent.location = params.location; if (params.startDateTime !== undefined) { updatedEvent.start = { ...updatedEvent.start, dateTime: params.startDateTime, }; } if (params.endDateTime !== undefined) { updatedEvent.end = { ...updatedEvent.end, dateTime: params.endDateTime }; } if (params.attendees !== undefined) { updatedEvent.attendees = params.attendees.map((email) => ({ email })); } const response = await calendar.events.update({ calendarId: params.calendarId, eventId: params.eventId, requestBody: updatedEvent, sendUpdates: "all", }); const updatedEventData = { id: response.data.id, summary: response.data.summary, start: response.data.start, end: response.data.end, location: response.data.location, description: response.data.description, attendees: response.data.attendees, htmlLink: response.data.htmlLink, updated: response.data.updated, }; return { content: [ { type: "text" as const, text: `# Event Updated Successfully β \n\n${formatEventToMarkdown(updatedEventData)}`, }, ], }; } catch (error) { return { content: [ { type: "text" as const, text: `Error updating event: ${ error instanceof Error ? error.message : String(error) }`, }, ], }; } }
- src/calendar.ts:205-224 (schema)Zod schema defining the input parameters for the updateEvent tool, including eventId, calendarId, and optional fields like summary, description, etc.export const updateEventSchema = () => z.object({ eventId: z.string().describe("Event ID"), calendarId: z .string() .default("primary") .describe(getCalendarDescription()), summary: z.string().optional().describe("Event title/summary"), description: z.string().optional().describe("Event description"), location: z.string().optional().describe("Event location"), startDateTime: z .string() .optional() .describe("Start date/time in ISO format"), endDateTime: z.string().optional().describe("End date/time in ISO format"), attendees: z .array(z.string()) .optional() .describe("Array of attendee email addresses"), });
- src/index.ts:242-249 (registration)Registration of the 'calendar-update-event' tool in the MCP server, linking the name, description, schema, and handler.server.tool( "calendar-update-event", "Update an existing calendar event", updateEventSchema().shape, async (params) => { return await updateEvent(params); } );