find_free_slots is what lifts this above a create-and-delete wrapper: it takes a duration and a working-day window and returns candidates, which is the step that normally costs the most clicking. Anything that changes an event needs an eventId, so a change always begins with list_events, and because nearly every tool takes a calendar argument, a shared or secondary calendar is reachable as long as you name it.
A seven-tool Outlook calendar client covering listing, free-slot search, event creation and updates, and attendee responses across the calendars the account can reach.
- Events listed for a date range, on a named calendar or the default one
- Free-slot search bounded by workDayStart and workDayEnd for a required duration, so proposed times land inside working hours
- Meetings created with attendees, location and body, and an isMeeting flag separating a real meeting from a personal calendar block
- Existing events changed in place by eventId — time, subject, location or body — or deleted outright
- Attendee response status for one event, and get_calendars to see which calendars can be addressed by name
An Outlook calendar the machine can already reach, and an eventId from list_events for anything that updates or deletes. The server takes no key and no environment variables of its own. MIT licensed.
One command — npx -y outlook-calendar-mcp
