A gnome timekeeper stands before a large magical calendar floating in the air, with glowing event cards sliding into time slots. Golden clock hands and meeting room icons orbit around the calendar. A brass MCP connector at the base pulses with JSON-RPC threads. Warm candlelight, rich blues and golds, a sense of time and scheduling.

MCP365 Explorer — Work IQ Calendar: events, meetings, and availability

Exploring the Work IQ Calendar server with 13 tools : from listing events and finding meeting times to creating Teams meetings, all from an SPFx webpart.

Nello D'Andrea
Nello D'Andrea
4 minutes to read

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

The Server at a Glance

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.

What You Can Do

The 13 tools cover the full calendar lifecycle:

Reading events:

  • ListEvents — list events with optional date range, subject filter, attendee filter
  • ListCalendarView — same but with recurring events expanded into individual instances
  • GetUserDateAndTimeZoneSettings — get a user’s timezone
  • GetRooms — list all meeting rooms in the tenant

Creating and managing events:

  • CreateEvent — create a new event with attendees, location, Teams meeting link, recurrence
  • UpdateEvent — modify an existing event
  • DeleteEventById — delete an event
  • FindMeetingTimes — find available slots for multiple attendees

Responding to invitations:

  • AcceptEvent — accept an invitation
  • TentativelyAcceptEvent — tentatively accept
  • DeclineEvent — decline
  • CancelEvent — cancel (organizer only)
  • ForwardEvent — forward to other recipients

The Showcase

The Explorer’s showcase provides quick buttons to test the 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.

Deploy It Yourself

  1. Clone the repo: git clone https://github.com/ferrarirosso/mcp365-explorer
  2. Build: cd webparts/mcp365-calendar && npm install && npx heft build --clean
  3. Package: npx heft test --clean --production && npx heft package-solution --production
  4. Upload sharepoint/solution/mcp365-calendar.sppkg to your app catalog
  5. Approve the McpServers.Calendar.All permission in SharePoint admin center
  6. Add the webpart to a page and configure the Environment ID

Resources