Skip to main content
Glama

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
NameRequiredDescriptionDefault
calendarUrlYesThe unique identifier (URL) of the calendar from which to fetch events. You can get this from 'get_my_calendars'.
timeRangeEndNoISO 8601 datetime for end of range
timeRangeStartNoISO 8601 datetime for start of range

Implementation Reference

  • 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 }; } }
  • 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 }; } } );

Other Tools

Related Tools

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/jahfer/dav-mcp-server'

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