get_upcoming_due_dates
Retrieve upcoming assignments, quizzes, and deadlines from your D2L Brightspace course calendar within a specified time range.
Instructions
Get calendar events and due dates for a course within a time range. Returns: event title, start/end date, associated entity (assignment, quiz, etc.), course name. By default returns events from 7 days ago to 30 days ahead. Use to answer: "What's due this week?", "When is the assignment due?", "What are my upcoming deadlines?", "What do I need to submit?"
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| orgUnitId | No | The course ID. Optional if D2L_COURSE_ID env var is set. | |
| daysBack | No | Number of days in the past to include (default: 7) | |
| daysAhead | No | Number of days in the future to include (default: 30) |
Implementation Reference
- src/tools/calendar.ts:23-38 (handler)The handler function implements the core logic: calculates date range, fetches calendar events via client, marshals and returns as JSON.handler: async (args: { orgUnitId?: number; daysBack?: number; daysAhead?: number }): Promise<string> => { const orgUnitId = getOrgUnitId(args.orgUnitId); const daysBack = args.daysBack ?? 7; const daysAhead = args.daysAhead ?? 30; const now = new Date(); const startDate = new Date(now.getTime() - daysBack * 24 * 60 * 60 * 1000); const endDate = new Date(now.getTime() + daysAhead * 24 * 60 * 60 * 1000); const events = await client.getMyCalendarEvents( orgUnitId, startDate.toISOString(), endDate.toISOString() ) as { Objects: RawCalendarEvent[] }; return JSON.stringify(marshalCalendarEvents(events), null, 2); },
- src/tools/calendar.ts:18-22 (schema)Zod schema defining input parameters for the tool.schema: { orgUnitId: z.number().optional().describe('The course ID. Optional if D2L_COURSE_ID env var is set.'), daysBack: z.number().optional().describe('Number of days in the past to include (default: 7)'), daysAhead: z.number().optional().describe('Number of days in the future to include (default: 30)'), },
- src/index.ts:114-126 (registration)Tool registration with McpServer, referencing schema and handler from calendarTools.server.tool( 'get_upcoming_due_dates', calendarTools.get_upcoming_due_dates.description, { orgUnitId: calendarTools.get_upcoming_due_dates.schema.orgUnitId, daysBack: calendarTools.get_upcoming_due_dates.schema.daysBack, daysAhead: calendarTools.get_upcoming_due_dates.schema.daysAhead, }, async (args) => { const result = await calendarTools.get_upcoming_due_dates.handler(args as { orgUnitId?: number; daysBack?: number; daysAhead?: number }); return { content: [{ type: 'text', text: result }] }; } );
- src/tools/calendar.ts:7-13 (helper)Helper function to resolve orgUnitId from parameter or environment variable.function getOrgUnitId(provided?: number): number { const orgUnitId = provided ?? DEFAULT_COURSE_ID; if (!orgUnitId) { throw new Error('orgUnitId is required. Either provide it or set D2L_COURSE_ID environment variable.'); } return orgUnitId; }