How to Connect Multiple Outlook Calendars to Claude Code
One Claude Code session can see every Outlook calendar you own at the same time once Carly is holding them. Authorize each Microsoft account in Carly, register one MCP server, and the terminal reads all of them together.
The ceiling you are hitting sits underneath Claude Code rather than inside it. Connectors you set up on claude.ai became usable in Claude Code in a February 2026 release, listed under claudeai on the /plugin screen on a paid Claude plan, and they do not load at all when you authenticate with an API key. Calendar arrives inside the Microsoft 365 connector, which holds one Microsoft identity. Anthropic’s setup page for it adds two conditions: it needs a Microsoft Entra tenant on a Microsoft Business plan, so a personal @outlook.com, @hotmail.com or @live.com address cannot connect at all, and a Global Administrator has to grant one-time organizational consent to two app registrations first. Reads work after that. Creating, moving and deleting events needs write tools an administrator switches on separately.
Everything else Claude Code reaches outside your repository arrives over the Model Context Protocol, which makes the calendar count a property of the server you register.
1. Add your Outlook calendars to Carly
- Sign in at carlyassistant.com.
- Open carlyassistant.com/integrations.
- Find Outlook Calendar (Microsoft 365), click Connect, and authorize the account.
- Click Connect again for the next one, and keep going for as many accounts as you want.
Microsoft likes to reuse the session you are already signed into, so use a private window between authorizations and check the full address each time. Personal Outlook.com calendars connect here beside work ones.
A tenant governed by an administrator may need approval before the connection completes. Each tenant decides separately, so approval at one client says nothing about the other.
Carly then calculates availability across every connected Outlook and Google calendar together, while each event stays on the calendar that owns it. Connected calendars and booking pages are unlimited, so a fourth account costs nothing extra.
Carly connects to thousands of apps, so while you are on that page you can add your inboxes, files, CRM and anything else you want Claude Code to reach through the same connector.
2. Register Carly as an MCP server
Carly is a remote HTTP server, so one command does it:
claude mcp add --transport http --scope user carly https://carlyassistant.com/mcp/
--scope user stores the entry in ~/.claude.json and loads it in every project, which is what you want for calendars. Drop the flag and it lands in local scope, available only in the directory where you added it. --scope project writes a committed .mcp.json instead, which is the right choice when a team shares the server.
Then authenticate:
claude mcp login carly
That opens a browser for the OAuth flow. Sign in to the Carly workspace holding the calendars. Anthropic’s Claude Code documentation covers the same flow from the /mcp panel inside a session, plus --no-browser for a machine without one.
Confirm the server is live before moving on:
claude mcp list
A healthy entry reads ✔ Connected. ! Needs authentication means the OAuth flow did not finish, ✘ Failed to connect points at the URL or the network rather than your Carly account, and ⏸ Pending approval shows up on project-scoped servers waiting for you to accept them.
What one session can do afterwards
- “Look at all my calendars and find three 45-minute slots this week that work for a call with Adobe.”
- “Find an hour before Friday that is free on all of my calendars and book the Databricks review on the client one.”
- “List everything I am double-booked for over the next two weeks, from all of my calendars.”
- “Send Emily Parker a booking link for a 30-minute intro that respects every calendar I have connected.”
Nothing is merged and nothing is forwarded. Each tenant keeps its own authorization, every calendar under it keeps its own name, and a write lands on the calendar that owns the event.
Why the tenant boundary is the real problem
Microsoft’s own MCP route makes the shape obvious. Work IQ MCP, the Agent 365 tooling layer whose calendar server creates, lists, updates and deletes events and resolves conflicts, is documented on Microsoft Learn as a preview feature, requires a Microsoft 365 Copilot license, and expects an enterprise application registered in the Entra admin center before anything connects. Microsoft publishes a walkthrough for wiring it into Claude Code, and it is worth reading closely: the .mcp.json it hands you puts the tenant ID directly into the server URL. Two tenants is two server entries, two app registrations and two administrators, by design.
Microsoft’s other server does not help here: the Microsoft MCP Server for Enterprise is in public preview and read-only over Entra identity data, so it answers questions about users and licenses rather than about Thursday. Community Outlook calendar MCP servers land in the same place, each asking you to create your own Entra app registration with delegated Microsoft Graph permissions and consent to it per tenant. Josh Whitaker, running a personal Outlook.com calendar beside client tenants at two companies, is not managing one integration with three logins. He is managing three consent chains, two owned by administrators he has never met, each revocable without warning.
The native path is visibly unsettled in Claude Code specifically. An open bug on the Claude Code GitHub repository, filed on 8 September 2026, reports the Microsoft 365 connector registering as an MCP server in Claude Code and then advertising zero tools, with no error and no prompt, while the same account’s other connectors work. A separate report on Anthropic’s official plugins repository describes the connector returning “Your organization’s access policy blocks the MCP server” on a tenant where Global Admin consent had already been granted for both app registrations and no conditional access policy targeted them. The broader request, open since February 2026, simply asks for more than one account per connector.
Per-tenant MCP servers versus Carly in Claude Code
| Need | Per-tenant Outlook calendar MCP server | Carly MCP server |
|---|---|---|
| Read one work calendar | Yes | Yes |
| Hold two Microsoft tenants at once | A server and a consent chain each | One server, all accounts |
| Include a personal Outlook.com calendar | Outside the Microsoft 365 connector | Yes, beside the work ones |
| Find a free hour across all of them at once | Stitched together by hand | Yes, in one question |
| Maintain your own Entra app registration | Usually required | No |
| Add a fourth tenant later | New registration and consent | No config change |
| Keep the work running with the terminal closed | No | Yes |
Carly gives Claude Code one calendar toolset that already spans your tenants instead of a stack of tenant-specific applications. Carly offers free Zapier-style workflows; AI agents start at $35/month.
The part that outlives the session
A terminal session ends when you close it. Scheduling does not. The invite that arrives while you are in a meeting, the client asking for times on a Sunday, the recurring block that has to move because a flight shifted: none of it waits for a terminal.
That work belongs in a Carly workflow or a Carly agent, which runs in the cloud with nothing open. Carly watches each connected calendar individually, so a rule can fire on an invite landing in the client tenant and stay quiet on the personal account. Booking pages run from the same place, checking every connected calendar before offering a slot, which is the part a tenant-scoped assistant cannot do. Shared and delegated calendars wired up across a whole team are available too: book a call.
One wrinkle if you want Carly inside a Claude Code routine. Routines run in the cloud against the connectors on your claude.ai account, and a server added locally with claude mcp add lives on your machine. Add Carly at claude.ai/customize/connectors as well, or declare it in a committed .mcp.json so it travels with the cloned repository. Routines also start from a schedule, a GitHub event or an HTTP call, and every one needs a repository, so none of them notices a meeting request.
Quick fixes when a calendar does not appear
| Problem | Fix |
|---|---|
Server shows ! Needs authentication | Run claude mcp login carly and finish the browser flow |
| Server missing in another project | Re-add with --scope user, or move the entry out of local scope |
claude -p reports the tools are unavailable | Sign in interactively once with /mcp, then rerun the script |
| Microsoft reconnected the same account twice | Remove the duplicate, then reconnect from a private window |
| A tenant blocks authorization | Ask that tenant’s administrator to approve Carly |
| A calendar inside a connected account is missing | Confirm it is visible in Outlook for that login, then reconnect |
| An event landed on the wrong calendar | Ask for the source calendar alongside each event and confirm before writes |
Frequently asked questions
Does Claude Code have a built-in Outlook calendar connector?
Indirectly. Connectors set up on claude.ai are available inside Claude Code on a paid plan, and Outlook calendar arrives inside the Microsoft 365 connector rather than as a connector of its own. It authorizes a single Microsoft identity, which is the whole problem this guide solves, and it loads only on a subscription login.
How many Outlook calendars can one Claude Code session reach?
As many as you authorize in Carly. Claude Code talks to one server, so the count is a Carly setting rather than a Claude Code one, and a single question reads across all of them.
Can Claude Code see calendars in two different Microsoft tenants?
Yes, once both are connected in Carly. Each tenant is authorized separately on your side, so neither replaces the other, and one session evaluates both together.
What about my personal Outlook.com calendar?
Connect it in Carly alongside the work ones. Anthropic states that the Microsoft 365 connector requires an Entra tenant on a Microsoft Business plan, so a personal Microsoft account has no native path there.
Can it create and move events, or only read them?
Both, through Carly. On the native Microsoft 365 connector, event writes depend on write tools your administrator enables, a decision most consultants holding a guest seat do not get to make.
Will this work in a non-interactive run?
Yes, after you have signed in. Cloud and non-interactive sessions cannot display the OAuth panel, so complete claude mcp login carly from an interactive session first and the run inherits the stored credentials.
Related: Multiple Outlook accounts in Claude Code · Multiple Google Calendars in Claude Code · Multiple email accounts in Claude Code · Claude Code MCP · Multiple Outlook calendars in Claude · Best AI assistants for multiple Outlook calendars · Carly’s Outlook integration
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
See what people say
"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.
Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.
On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."

