This is the third post in the MCP365 Explorer series . If you haven’t read the introduction, start there — it covers the setup, the protocol, and the key finding that MCP servers can be called directly from SPFx without a backend.
Today: the Work IQ Calendar server (mcp_CalendarTools) : 13 tools for events, meetings, invitations, and availability.
Preview notice: The Agents 365 Tools and MCP servers described in this post are part of the Microsoft Agent 365 tooling servers preview . These features are in preview, may change, and should not be used in production workloads.
Table of Contents
- Table of Contents
- The Showcase
- ListEvents vs ListCalendarView
- What I Learned
- Server Details
- Tool Reference
- Deploy It Yourself
- Resources
The Showcase
The Explorer’s showcase provides quick buttons to test some common calendar operations:
My Events Today — calls ListEvents with today’s date range. Shows all events with subject, times, location, and a Teams icon for online meetings.
My Events This Week — same as today but for the full week.
Calendar View (next 15 days) — calls ListCalendarView with no parameters (defaults to current time + 15 days). The key difference: recurring events are expanded into individual instances.
Meeting Rooms — calls GetRooms to list all meeting rooms defined in the tenant.
My Timezone — calls GetUserDateAndTimeZoneSettings to show the current user’s timezone configuration.
ListEvents vs ListCalendarView
Both tools return calendar events, but they handle recurring events differently:
- ListEvents returns events as stored in the calendar. Recurring events may appear as a single entry with recurrence metadata.
- ListCalendarView expands recurring events into individual instances within the specified time range. A recurring “Daily Standup” appears as separate entries for each occurrence.
Which one to use depends on your scenario : ListCalendarView gives you the expanded view of what’s actually on the calendar, while ListEvents gives you the events as they were created.
What I Learned
The schema descriptions are practical. The ListCalendarView tool description explicitly states that startDateTime defaults to the current time and endDateTime defaults to current time + 15 days. The CreateEvent tool lists all the optional parameters for recurrence patterns, Teams meetings, and attendee types. This level of detail is what makes MCP tools LLM-callable, the schema tells the LLM everything it needs to know.
Time zones are worth paying attention to. The tools accept a timeZone parameter. If you need events in a specific local time, it’s worth passing it explicitly.
CreateEvent generates Teams links automatically. Setting isOnlineMeeting: true on a CreateEvent call returns a full Teams meeting link, dial-in number, and passcode, all in a single MCP call. No separate Teams API integration needed.
Server Details
| Property | Value |
|---|---|
| Server ID | mcp_CalendarTools |
| Display name | Work IQ Calendar |
| Permission scope | McpServers.Calendar.All |
| Tools | 13 |
Unlike the SharePoint server which was consolidated and renamed, the Calendar server kept the same ID and tool names. No migration needed.
Tool Reference
Reading events: ListEvents, ListCalendarView, GetUserDateAndTimeZoneSettings, GetRooms
Creating and managing events: CreateEvent, UpdateEvent, DeleteEventById, FindMeetingTimes
Responding to invitations: AcceptEvent, TentativelyAcceptEvent, DeclineEvent, CancelEvent, ForwardEvent
Deploy It Yourself
- Clone the repo:
git clone https://github.com/ferrarirosso/mcp365-explorer - Build:
cd webparts/mcp365-calendar && npm install && npx heft build --clean - Package:
npx heft test --clean --production && npx heft package-solution --production - Upload
sharepoint/solution/mcp365-calendar.sppkgto your app catalog - Approve the
McpServers.Calendar.Allpermission in SharePoint admin center - Add the webpart to a page and configure the Environment ID