100+ integrations are ready to connect to your AI.Connect your first MCP

Outlook Calendar MCP server for your AI

See what this week holds, book a meeting with a Teams link at a time that suits everyone, move a call without losing its guests, and accept or decline invitations with a note.

PopMCPOutlook Calendar

What is on my calendar this week, and where are the gaps?

Supported Outlook Calendar tools

All of Outlook Calendar in Microsoft Graph for a signed-in account, from calendars, events and recurring series to invitations, free/busy, sharing, reminders and Microsoft Places rooms, plus the calendar events PopMCP can watch.

114 tools in the full catalog: 63 read and 51 write. 32 load by default, and the rest are found with tool search.

outlook_calendar_accept_event

Accept a meeting invitation.

outlook_calendar_batch_read

Run up to 20 read (GET) requests in one Microsoft Graph $batch, e.g. several events by id: [{ "url": "/me/events/ID1?$select=subject,start,end" }, ...].

outlook_calendar_cancel_event

Cancel a meeting you organize and email attendees a cancellation, with an optional comment.

outlook_calendar_create_event

Create an event or meeting (default calendar when calendarId is omitted).

outlook_calendar_decline_event

Decline a meeting invitation, optionally proposing another time (proposedNewTime: { "start": ..., "end": ...

outlook_calendar_delete_event

Delete an event (it goes to Deleted Items).

outlook_calendar_forward_event

Forward a meeting invitation to new people (toRecipients) with an optional comment.

outlook_calendar_get_agenda

Everything on the user's calendars for a day or a period, every calendar merged and sorted by start (recurring meetings expanded): subject, time, location, organizer, attendees and responses, join link, and which calendar.

outlook_calendar_get_event

Read one event in full: subject, body (plain text; bodyFormat html for HTML), start and end in the mailbox's time zone, location, organizer, attendees and their responses, recurrence, the online meeting join link, categories, iCalUId.

outlook_calendar_list_calendar_view

What is on a calendar between two times, sorted by start: single events plus every occurrence of recurring meetings.

outlook_calendar_list_event_instances

The occurrences of a recurring meeting between two dates (changed ones included, cancelled ones not).

outlook_calendar_list_events

List a calendar's events as stored: single events and recurring series (a weekly meeting is one row with its recurrence).

outlook_calendar_reschedule_event

Move an event to a new time, keeping its length unless newEnd is given.

outlook_calendar_search_events

Find events by words: every event (recurring occurrences included) in a window whose subject, location, organizer, attendees, categories or notes contain all the words.

outlook_calendar_tentatively_accept_event

Tentatively accept a meeting invitation, optionally proposing another time (proposedNewTime).

outlook_calendar_update_attendees

Add or remove people (or rooms) on a meeting you organize and keep everyone else.

outlook_calendar_update_event

Change an event: time, subject, body, location, attendees, reminder, showAs, categories.

outlook_calendar_find_available_rooms

Meeting rooms that are free for a time: lists the organization's rooms (Microsoft Places), optionally by room list, capacity or building, and checks each one's free/busy.

outlook_calendar_list_rooms

List the organization's meeting rooms: displayName, emailAddress (to book it, invite this address or pass it as room), capacity, building, floor, audio and video devices, accessibility.

outlook_calendar_attach_files

Attach files of any size (up to 150 MB each) to an event: small ones directly, larger ones through an upload session.

outlook_calendar_list_event_attachments

List an event's attachments: id, name, contentType, size, isInline (file contents are left out).

outlook_calendar_read_attachment

Read an event attachment: the text of documents (Word .docx, PowerPoint .pptx, Excel .xlsx, .txt, .csv, .html, .json, .ics), or an image (returned as the image).

outlook_calendar_create_calendar

Create a new calendar.

outlook_calendar_get_calendar

Read one calendar: name, color, owner, whether the user can edit or share it, and its online meeting providers.

outlook_calendar_list_calendars

List the user's calendars: their own and the ones others shared with them (once added in Outlook), with id, name, color, owner, canEdit and isDefaultCalendar.

outlook_calendar_list_calendar_permissions

Who a calendar is shared with or delegated to, and their role: id, emailAddress, role, allowedRoles (the roles that person can be given), isRemovable, isInsideOrganization.

outlook_calendar_list_categories

List the user's Outlook categories (name and color) that can be put on events: use a category's displayName in an event's categories.

outlook_calendar_share_calendar

Share a calendar with someone, or make them a delegate of the default calendar.

outlook_calendar_get_mailbox_settings

The mailbox's calendar settings: time zone, working hours (days, start, end, time zone), date and time formats, language, and how delegates receive meeting messages.

outlook_calendar_find_free_time

Free time slots of a given length: when the user (and, for work or school accounts, the attendees) has nothing busy, inside working hours by default.

outlook_calendar_find_meeting_times

Suggest times when the user and the attendees (and optionally a room) are all free.

outlook_calendar_get_schedule

Free/busy for people, rooms or distribution lists over a time window: each one's busy blocks (status, and subject and location where allowed), working hours and an availabilityView string.

outlook_calendar_count_events

Count a calendar's events (single events and recurring series; occurrences are not counted).

outlook_calendar_dismiss_event_reminder

Dismiss an event's reminder (it stops reminding).

outlook_calendar_get_event_calendar

Which calendar an event is on: the calendar's id, name, color and owner.

outlook_calendar_list_calendar_view_changes

Track what changed on a calendar between two dates: the first round returns every event, later rounds only events added, changed or deleted since (deleted ones carry @removed).

outlook_calendar_permanently_delete_event

Permanently delete an event: it skips Deleted Items and the user cannot recover it.

outlook_calendar_snooze_event_reminder

Snooze an event's reminder until a new time.

outlook_calendar_create_check_in

Check in to a booked desk, room or workspace, so the reservation is not released automatically.

outlook_calendar_create_place

Create a building, floor, section, desk, room or workspace in Microsoft Places.

outlook_calendar_delete_place

Delete a place from Microsoft Places (Exchange administrators).

outlook_calendar_get_check_in

Whether someone checked in to a place for a reservation: pass the place id and the reservation event's iCalUId.

outlook_calendar_get_place

Read one place (building, floor, section, desk, room, workspace) by its id: its own fields, e.g. a room's capacity, emailAddress and devices.

outlook_calendar_get_room_list

Read one room list (displayName, emailAddress, address).

outlook_calendar_list_buildings

List the organization's buildings in Microsoft Places.

outlook_calendar_list_desks

List the organization's desks in Microsoft Places.

outlook_calendar_list_floors

List the organization's floors in Microsoft Places.

outlook_calendar_list_place_descendants

Every place of one type under a place, e.g. all rooms in a building or all desks on a floor (up to 2,500).

outlook_calendar_list_room_list_rooms

List the rooms in one room list (often one building): displayName, emailAddress, capacity.

outlook_calendar_list_room_list_workspaces

List the workspaces in one room list: displayName, emailAddress, capacity.

outlook_calendar_list_room_lists

List the organization's room lists (groups of rooms, often one per building): displayName and emailAddress.

outlook_calendar_list_sections

List the organization's sections (areas of a floor) in Microsoft Places.

outlook_calendar_list_workspaces

List the organization's bookable workspaces (desk pools): displayName, emailAddress, capacity, mode.

outlook_calendar_update_place

Change a place's details (name, capacity, tags, address, devices...).

outlook_calendar_delete_building_map

Delete a building's map from Microsoft Places (Exchange administrators).

outlook_calendar_delete_level_fixture

Delete a fixture from a building map level (Exchange administrators).

outlook_calendar_delete_level_section

Delete a section from a building map level (Exchange administrators).

outlook_calendar_delete_level_unit

Delete an unit from a building map level (Exchange administrators).

outlook_calendar_get_building_map

A building's map in Microsoft Places.

outlook_calendar_ingest_building_map

Upload a building's indoor map to Microsoft Places: the IMDF map files as one base64 ZIP (file).

outlook_calendar_list_building_footprints

A building map's footprints (IMDF footprint features: the building's outline).

outlook_calendar_list_building_levels

A building map's levels (IMDF level features, one per floor): their ids for the unit, fixture and section tools.

outlook_calendar_list_level_fixtures

The fixtures (furniture, equipment) on one level of a building map.

outlook_calendar_list_level_sections

The sections (zones) on one level of a building map.

outlook_calendar_list_level_units

The units (rooms, offices) on one level of a building map, each linked to its place.

outlook_calendar_upsert_level_fixture

Create or update a fixture on a building map level (IMDF; Exchange administrators).

outlook_calendar_upsert_level_section

Create or update a section on a building map level (IMDF; Exchange administrators).

outlook_calendar_upsert_level_unit

Create or update an unit on a building map level, e.g. link it to a room: { "placeId": "ROOM_PLACE_ID" } (IMDF; Exchange administrators).

outlook_calendar_add_event_attachment

Attach a file under 3 MB (or a link) to an event.

outlook_calendar_count_calendar_groups

Count the user's calendar groups.

outlook_calendar_count_event_attachments

Count an event's attachments.

outlook_calendar_count_group_calendars

Count the calendars in a calendar group.

outlook_calendar_create_calendar_group

Create a calendar group.

outlook_calendar_create_event_attachment_upload_session

Start uploading a file of 3 MB to 150 MB to an event.

outlook_calendar_create_group_calendar

Create a calendar inside a calendar group.

outlook_calendar_delete_calendar_group

Delete a calendar group (not the default one).

outlook_calendar_delete_event_attachment

Remove an attachment from an event.

outlook_calendar_get_calendar_group

Read one calendar group.

outlook_calendar_get_event_attachment

Read one attachment's details, and a small file's base64 contentBytes (large contents are left out).

outlook_calendar_get_event_attachment_content

The raw content of an event attachment: a text file or an attached email as text; for PDFs, images and Office files use outlook_calendar_read_attachment, which decodes what it can.

outlook_calendar_list_calendar_groups

List the user's calendar groups (how Outlook groups calendars, e.g. My Calendars, Other Calendars): id and name.

outlook_calendar_list_group_calendars

List the calendars in one calendar group.

outlook_calendar_update_calendar_group

Rename a calendar group: { "name": "New name" }.

outlook_calendar_count_calendars

Count the user's calendars.

outlook_calendar_delete_calendar

Delete a calendar and the events on it.

outlook_calendar_list_calendar_changes

Track which calendars were added, renamed or deleted: the first round returns every calendar, later rounds only the changes (deleted ones carry @removed).

outlook_calendar_permanently_delete_calendar

Permanently delete a calendar and its events: they cannot be recovered.

outlook_calendar_update_calendar

Rename a calendar or change its color.

outlook_calendar_count_calendar_permissions

Count a calendar's sharing entries.

outlook_calendar_count_categories

Count the user's Outlook categories.

outlook_calendar_count_event_extensions

Count the open extensions on an event.

outlook_calendar_create_category

Create an Outlook category: { "displayName": "Client meetings", "color": "preset4" }.

outlook_calendar_create_event_extension

Store custom data on an event as an open extension: { "extensionName": "Com.Contoso.Referral", ...your fields }.

outlook_calendar_create_subscription

Have Microsoft call an HTTPS webhook when events change.

outlook_calendar_delete_category

Delete an Outlook category.

outlook_calendar_delete_event_extension

Delete an open extension from an event.

outlook_calendar_delete_subscription

Delete a subscription: Microsoft stops calling its webhook.

outlook_calendar_get_calendar_permission

Read one sharing entry of a calendar: who, role, allowedRoles.

outlook_calendar_get_category

Read one Outlook category (name and color).

outlook_calendar_get_event_extension

Read one open extension on an event, by its extensionName.

outlook_calendar_get_subscription

Read one subscription (resource, changeType, notificationUrl, expirationDateTime).

outlook_calendar_list_event_extensions

List the open extensions (custom app data) stored on an event.

outlook_calendar_list_subscriptions

List the change-notification subscriptions this app holds for the signed-in user.

outlook_calendar_reauthorize_subscription

Reauthorize a subscription after Microsoft sent a reauthorizationRequired lifecycle notification.

outlook_calendar_remove_calendar_permission

Stop sharing a calendar with someone, or remove a delegate.

outlook_calendar_renew_subscription

Renew a subscription before it expires: { "expirationDateTime": "..." } (under 7 days ahead for calendar), or change its notificationUrl.

outlook_calendar_update_calendar_permission

Change the role of someone a calendar is shared with, e.g. { "role": "write" }.

outlook_calendar_update_category

Change an Outlook category's color: { "color": "preset7" } (the name cannot change).

outlook_calendar_update_event_extension

Update an open extension on an event: the fields sent replace the stored data.

outlook_calendar_list_supported_languages

The languages and locales the mailbox supports.

outlook_calendar_list_supported_time_zones

The time zones the mailbox's server supports, as Windows names (alias and displayName).

outlook_calendar_list_supported_time_zones_by_standard

The supported time zones in one naming standard: Windows (Pacific Standard Time) or Iana.

outlook_calendar_update_mailbox_settings

Change the mailbox's time zone, working hours, date or time format, or how delegates receive meeting messages.

outlook_calendar_list_reminders

The reminders that fire between two times: each event's subject, start, end, location and when its reminder fires.

Connect Outlook Calendar to Claude, ChatGPT and Claude Code

Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Outlook Calendar side.

Register an app in the Microsoft Entra admin center with Any Entra ID Tenant + Personal Microsoft accounts, add PopMCP's Redirect URI under Authentication as a Web platform, copy the Application (client) ID and a client secret Value into PopMCP, then click Sign in with Microsoft and approve access on Microsoft's own page.

Application (client) ID00001111-aaaa-2222-bbbb-3333cccc4444
Client secret Value••••••••••••3f7a
Directory (tenant) IDLeave empty unless your app is single tenant
Authorize PopMCP on Outlook CalendarAuthorize

Then just ask for the work

  • “What is on my calendar this week, and where are the gaps?”

    • get_agenda
    • find_free_time
  • “Book a 30 minute call with Priya and Sam next week when all three of us are free, with a Teams link”

    • find_free_time
    • create_event
  • “Move tomorrow's design review to Thursday at 2pm and keep everyone invited”

    • search_events
    • reschedule_event
  • “Accept Dana's planning meeting and decline Friday's all hands with a note that I am on leave”

    • search_events
    • accept_event
    • decline_event
  • “Find a free meeting room for eight people tomorrow at 10am for an hour”

    • find_available_rooms
  • “Share my calendar with my assistant so they can add and change events”

    • share_calendar

Use Outlook Calendar from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Outlook Calendar MCP server questions

What teams ask before putting Outlook Calendar behind an AI client.

How do I connect Outlook Calendar to PopMCP?

Sign in with Microsoft and approve access on Microsoft's own page, so your password never reaches PopMCP. Today that sign-in runs through an app you register once in the Microsoft Entra admin center: pick Any Entra ID Tenant + Personal Microsoft accounts, add PopMCP's Redirect URI under Authentication as a Web platform, then copy the Application (client) ID and a client secret Value into the connect form. Tokens renew on their own after that.

Does it work with personal Outlook.com accounts?

Yes. Work or school accounts on Microsoft 365 and personal Microsoft accounts (Outlook.com, Hotmail, Live) both connect, and the everyday calendar, event, invitation, sharing and category tools work for both. Microsoft keeps a few things to work or school accounts: other people's free/busy (get_schedule, find_meeting_times), rooms and Microsoft Places, and naming another person's calendar. A calendar someone shared with a personal account still shows up in list_calendars.

Does it get time zones and recurring meetings right?

Yes. Times come back in the time zone set in your Outlook, or in one you name, and the AI can write plain local times, IANA or Windows zone names, or words like today, tomorrow, this week and next month. Windows across a daylight saving change land on the right hour. Recurring meetings take a plain RRULE or words like weekly or weekdays, and list_calendar_view returns each occurrence.

Can the AI find a time that suits everyone and book a room?

With a work or school account, yes. find_free_time checks your calendar and your colleagues' free/busy inside working hours, and find_meeting_times asks Outlook for its own suggestions. Inviting a room by its address books it like any attendee. To list rooms and check which are free with find_available_rooms, tick Rooms and places under More options when you connect; an administrator must approve that permission once.

Can it work on someone else's calendar?

Yes, when that person shared their calendar with you or made you their delegate in Outlook, on a work or school account. Tick Shared and delegated calendars under More options and tools take a calendarOwner input, or enter their address under Someone else's calendar and the whole connection becomes their calendar, refusing any other. A personal account uses a shared calendar by its id from list_calendars.

Why does Microsoft say an administrator has to approve the app?

Many organizations only let people approve apps from verified publishers, or none at all. The permissions Outlook Calendar asks for by default need no administrator by Microsoft's rules, but your organization's settings win. Rooms and places, and Manage buildings, rooms and desks, always need an admin. An admin approves once for everyone: in the Entra admin center open Entra ID, Enterprise apps, pick the app, then Permissions and Grant admin consent.

Which Outlook Calendar events can PopMCP watch?

14 in total. Instant notifications for an event created, changed or deleted. Polling for a meeting invitation received, a meeting cancelled by its organizer, an attendee's response, an online meeting scheduled, out of office scheduled and an event starting soon. Change detection for a calendar added, calendar sharing changed, a new color category and working hours or time zone changed. One threshold fires when a day's meetings add up to more hours than you set.

How many Outlook Calendar tools load into my AI client?

36 everyday tools load by default, including the 9 that do several steps at once: get_agenda, search_events, find_free_time, reschedule_event, update_attendees, find_available_rooms, read_attachment, attach_files and batch_read. All 105 operations stay reachable through search_tools, describe_tool and raw_operation, 57 that read and 48 that write, from calendar groups and reminders to change tracking, subscriptions and Microsoft Places maps.

Do I have to run or host the Outlook Calendar MCP server myself?

No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.

How do I connect Outlook Calendar to Claude Code?

Connect Outlook Calendar in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Outlook Calendar on the consent screen. The Outlook Calendar tools are then available in that session, and no Outlook Calendar credential is stored on your machine.

Why do only 32 of the 114 tools load by default?

Loading 114 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 32-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.

What is the difference between a tool and a trigger?

A tool is something your AI calls, and there are 114 here. A trigger is something PopMCP watches for you: 14 Outlook Calendar events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Outlook Calendar.

Connect Outlook Calendar to your AI in minutes

Launch a hosted MCP endpoint for Outlook Calendar, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP