get_calendar_events
Fetch calendar events within a specified time range using the calendar's unique URL. Integrates with DAV MCP Server for CalDAV, CardDAV, and WebDAV services.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| calendarUrl | Yes | The unique identifier (URL) of the calendar from which to fetch events. You can get this from 'get_my_calendars'. | |
| timeRangeEnd | No | ISO 8601 datetime for end of range | |
| timeRangeStart | No | ISO 8601 datetime for start of range |
Implementation Reference
- index.js:122-158 (handler)Handler function that fetches calendar events using the DAV client, finds the specified calendar, applies optional time range filter, and returns the events as JSON. Errors are logged with 'get_calendar_events' identifier.async ({ calendarUrl, timeRangeStart, timeRangeEnd }) => { if (!davClient) return { content: [{ type: "text", text: "CalDAV client not initialized for this provider."}], isError: true }; try { await davClient.login(); const calendars = await davClient.fetchCalendars(); // Needed to find the calendar object const calendar = calendars.find(cal => cal.url === calendarUrl); if (!calendar) { return { content: [{ type: "text", text: `Error: Calendar with URL ${calendarUrl} not found.` }], isError: true }; } const fetchOptions = { calendar }; if (timeRangeStart && timeRangeEnd) { fetchOptions.timeRange = { start: timeRangeStart, end: timeRangeEnd }; } const calendarObjects = await davClient.fetchCalendarObjects(fetchOptions); return { content: [{ type: "text", text: JSON.stringify(calendarObjects, null, 2) }] }; } catch (error) { console.error("Error in get_calendar_events:", error); return { content: [{ type: "text", text: `Error fetching calendar objects: ${JSON.stringify(error.message || error)}` }], isError: true }; } }
- index.js:116-120 (schema)Input schema validating the parameters for fetching calendar events: required calendarUrl and optional timeRangeStart/timeRangeEnd using Zod.inputSchema: { calendarUrl: z.string().describe("The unique identifier (URL) of the calendar from which to fetch events. You can get this from 'get_my_calendars'."), timeRangeStart: z.string().datetime().optional().describe("ISO 8601 datetime for start of range"), timeRangeEnd: z.string().datetime().optional().describe("ISO 8601 datetime for end of range"), },
- index.js:112-159 (registration)Tool registration for `get_calendar_events_from_${DAV_PROVIDER}` which provides the get_calendar_events functionality, including description, input schema, and handler.server.tool( `get_calendar_events_from_${DAV_PROVIDER}`, { description: `Fetches events from a specific calendar. You must provide a \`calendarUrl\`, which you can get from the \`get_my_${DAV_PROVIDER}_calendars\` tool. You can also optionally specify a \`timeRangeStart\` and \`timeRangeEnd\` (in ISO 8601 format) to filter events within a specific time window. If no time range is given, it may fetch all events.`, inputSchema: { calendarUrl: z.string().describe("The unique identifier (URL) of the calendar from which to fetch events. You can get this from 'get_my_calendars'."), timeRangeStart: z.string().datetime().optional().describe("ISO 8601 datetime for start of range"), timeRangeEnd: z.string().datetime().optional().describe("ISO 8601 datetime for end of range"), }, }, async ({ calendarUrl, timeRangeStart, timeRangeEnd }) => { if (!davClient) return { content: [{ type: "text", text: "CalDAV client not initialized for this provider."}], isError: true }; try { await davClient.login(); const calendars = await davClient.fetchCalendars(); // Needed to find the calendar object const calendar = calendars.find(cal => cal.url === calendarUrl); if (!calendar) { return { content: [{ type: "text", text: `Error: Calendar with URL ${calendarUrl} not found.` }], isError: true }; } const fetchOptions = { calendar }; if (timeRangeStart && timeRangeEnd) { fetchOptions.timeRange = { start: timeRangeStart, end: timeRangeEnd }; } const calendarObjects = await davClient.fetchCalendarObjects(fetchOptions); return { content: [{ type: "text", text: JSON.stringify(calendarObjects, null, 2) }] }; } catch (error) { console.error("Error in get_calendar_events:", error); return { content: [{ type: "text", text: `Error fetching calendar objects: ${JSON.stringify(error.message || error)}` }], isError: true }; } } );