The remote connector is hosted by Anthropic. Data in transit passes through Anthropic’s infrastructure, which is based in the United States. Anthropic does not collect or store any data that transits through the server. To keep all Microsoft 365 traffic between the user’s device and Microsoft instead, use the local connector.
Choose a connector
Both connectors provide the same read and search tools; they differ in data path and authentication. Write actions (sending mail, managing drafts and calendar events, working with files, and sending Teams messages) depend on the write scopes approved in Microsoft Entra.Remote connector
The desktop app authenticates with an app registration you create in your own Microsoft Entra tenant, and Anthropic’s Microsoft 365 connector service performs the Microsoft Graph calls on the signed-in user’s behalf. Anthropic’s connector service receives the desktop’s delegated access token on each request and exchanges it on-behalf-of the user for a short-lived Graph token. Neither token is persisted server-side beyond the request, and Anthropic never holds your tenant’s client secrets or the user’s refresh token (the refresh token stays encrypted on the user’s device). Setup requires a Global Administrator or Cloud Application Administrator in your Entra tenant. The hosted M365 server has not been evaluated for HIPAA compliance. If your organization follows HIPAA compliance, use the local connector instead.How the connection works
Three applications participate in the sign-in chain.Set up the remote connector
1
Consent the Anthropic connector app into your tenant
A tenant administrator must consent to Anthropic’s multi-tenant connector app once for the organization. This creates a service principal in your tenant; no secret is exchanged.Open the following URL after replacing The consent screen lists the delegated Microsoft Graph permissions the connector requests. The read permissions include:
YOUR_TENANT_ID with the Directory (tenant) ID shown in Entra admin center → Overview.The screen also lists the write permissions, such as
Mail.Send and Files.ReadWrite.All. Accepting approves the whole list for every user in your tenant, which makes write actions available to every remote connector user. To keep the connector read-only or limit write actions to specific users, accept, then revoke the write scopes before you deploy the configuration in step 4. See Control write actions on the remote connector.Review the permissions and select Accept.FedRAMP and GovCloud deployments use a different connector app ID and a
different connector service hostname. Contact your Anthropic representative
for the app ID to use in this URL and in the scope string in step 4, and for
the connector URL to use in step 4.
2
Register a desktop client app in your tenant
Create the public client that Claude Desktop will sign in as.
- In Entra admin center → App registrations → New registration, set Name to
Claude Desktop(or your preferred name), set Supported account types to Accounts in this organizational directory only, and add a Redirect URI of platform Mobile and desktop applications with the valuehttp://127.0.0.1/callback. - Select Register, then note the Application (client) ID and Directory (tenant) ID shown on the overview page.
- Under API permissions → Add a permission → APIs my organization uses, search for
Anthropic(or paste the connector app ID from step 1), select Delegated permissions → access_as_user, then Add permissions. - Select Grant admin consent for {your organization}.
3
Send Anthropic your IDs
Anthropic maintains an allowlist of tenant and client IDs that may call the connector service. Email your Anthropic representative, or open a support ticket, with your Directory (tenant) ID and the Application (client) ID from step 2. Allowlisting is typically completed within two to three business days.Until the allowlist is updated, sign-in will succeed but the connector returns Client application is not authorized for this resource.
4
Configure Claude Desktop
In the Claude Desktop in-app configuration window, open Connectors, select Add server → Microsoft 365, and enter the values below.
Select Save, then deploy the configuration through your device-management tool as usual.If you manage configuration through JSON or a plist directly instead of the in-app configuration window, add the following entry to
managedMcpServers.Sign in as a user
After the configuration is deployed, each user opens Customize → Connectors in Claude Desktop and selects Connect next to Microsoft 365. Their browser opens to your tenant’s sign-in page; once they consent, the connector is ready to use in conversations.Allow the required network hosts
In addition to the base egress hosts, Claude Desktop needs outbound HTTPS access to the hosts below. The connector service itself callsgraph.microsoft.com from Anthropic’s infrastructure, so user devices do not need egress to Graph.
If your firewall or secure web gateway filters traffic by application, also allow Model Context Protocol (MCP) traffic to the connector service’s host. Such equipment can classify the connection as MCP traffic and block it even when the host is allowed.
Control write actions on the remote connector
Claude can take a write action for a user through the remote connector once the matching write scope is approved for that user on the Anthropic connector app. The Entra admin center lists that app under Enterprise applications as M365 MCP Server for Claude. The write scopes areMail.Send, Mail.ReadWrite, MailboxSettings.ReadWrite, Calendars.ReadWrite, Files.ReadWrite.All, ChatMessage.Send, ChannelMessage.Send, and Chat.Create. A tenant that approved the connector before Anthropic added the write scopes stays read-only until the write scopes are approved. To see which scopes your tenant has approved, open the app’s Permissions page as described in Revoke write scopes on the remote connector.
These controls apply to the connector service at microsoft365.mcp.claude.com. For write actions on a FedRAMP or GovCloud deployment, contact your Anthropic representative.
Choose a control by who should have write actions:
Revoke write scopes on the remote connector
Revoking a write scope for the tenant turns off the matching write actions for remote connector users and for claude.ai users in the same tenant. Requires the Cloud Application Administrator or Application Administrator role in Microsoft Entra.- In the Microsoft Entra admin center, go to Enterprise applications and remove the application type filter next to the search box.
- Search for M365 MCP Server for Claude and open it.
- Go to Permissions and open the Admin consent tab, which shows the permissions approved for the whole tenant. If no write scope is listed, none is approved for the tenant.
- For each write scope in the Microsoft Graph list, select the scope, select …, select Revoke permission, and confirm. The scope disappears from the tab.
- Open the User consent tab, which shows the permissions granted to individual users. The admin center can’t revoke these grants. To remove a write scope listed here, use Microsoft Graph or PowerShell as described in Microsoft’s Review permissions granted to enterprise applications.
- If your tenant allows user consent, require assignment on the connector app so that only an administrator can approve its permissions.
Limit remote connector write actions to specific users
Microsoft Entra can record consent for a single user instead of the whole tenant. Keep the read scopes approved for the tenant, and grant the write scopes only to the users who need them. Requires at least the Cloud Application Administrator role in Microsoft Entra.- Follow Revoke write scopes on the remote connector so that no write scope is approved for the tenant.
- For each user, follow Microsoft’s Grant consent on behalf of a single user procedure. Use
07c030f6-5743-41b7-ba00-0a6e85f37c17as the client application, Microsoft Graph as the resource, and the write scopes the user needs as the permissions. - If a user already has a grant for the connector app on the User consent tab, update that grant. Microsoft’s script creates a new grant and assumes none exists.
- Fix a failed write action with a per-user grant: add the missing scope to that user’s grant. The admin consent link and the Grant admin consent for {your organization} button on the M365 MCP Server for Claude app’s Permissions page approve the write scopes for every user, even when a permission error points you to them.
- Revoke again after tenant-wide consent: if you use either control to approve a permission Anthropic adds later, repeat Revoke write scopes on the remote connector afterward
- Script changes to who has write actions: each grant covers one user and can’t target a group. Create a grant when a user gains write actions, and delete it with Microsoft Graph or PowerShell when they lose them.
Require assignment on the connector app
When an app requires assignment, Microsoft Entra accepts only administrator consent for its permissions, even if your tenant’s user consent settings would otherwise let users consent for themselves. Only assigned users can get a token for the app, so assign people before you turn the setting on.- In the Microsoft Entra admin center, go to Enterprise applications and open M365 MCP Server for Claude.
- Under Users and groups, add every user or group that uses the connector in Claude Desktop or claude.ai, including people who only read.
- Go to Properties and set Assignment required? to Yes.
Block remote connector write tools in Claude Desktop
Set each write tool to"blocked" in the toolPolicy of the m365 entry in managedMcpServers. Find each write tool’s name and the scope it needs in the Microsoft 365 connector security guide. For example, this entry blocks three of the write tools:
Troubleshoot sign-in errors
These errors can appear during setup. If the connection fails with no Microsoft sign-in page, ormain.log shows Unexpected content type: text/html, see MCP server sign-in.
Local connector
Claude Desktop includes a built-in copy of the Microsoft 365 server. As an alternative to the remote connector, you can configure the app to run that server as a local process on each user’s machine: the user signs in to Microsoft Entra on the device, and the server calls Microsoft Graph directly from the device. No Microsoft 365 data or tokens pass through Anthropic’s infrastructure. To choose between the two connectors, see the comparison table.Set up the local connector
1
Register a public client app for local mode
- In Entra admin center → App registrations → New registration, set Name to
Claude Desktop M365 Local(or your preferred name) and set Supported account types to Accounts in this organizational directory only. - Under Authentication, open the Redirect URI configuration tab and select Add redirect URI (on older versions of the portal, select + Add a platform instead). Choose the Mobile and desktop applications card (the Windows, UWP, and Console card, not the iOS / macOS card, which takes a bundle ID rather than a redirect URI). Leave the suggested redirect URIs unchecked, enter
http://localhostin the Custom redirect URIs box, and select Configure. This is the standard loopback redirect for desktop apps: during browser sign-in, Microsoft Entra redirects to a listener on the device itself, so the response never leaves the machine. For brokered sign-in on managed devices, also add the per-platform broker redirect URI shown under How users sign in. Add it to the same platform by selecting Edit on the Mobile and desktop applications section that appears on the Authentication page, rather than adding another platform, and select Save at the top when you finish (on older versions of the portal, add the broker URI via the Add URI row inside the platform section instead). After you save, Microsoft Entra may display themsauthURI under a separate iOS / macOS section. That placement is expected. - Under Authentication, set Allow public client flows to Yes, and select Save. The control is on the Settings tab under Web and SPA settings (on older versions of the portal, under Advanced settings). With it set to No, brokered silent token acquisition fails with
AADSTS7000218. To prevent device-code phishing, apply a tenant Conditional Access policy that blocks the device-code authentication flow. Scope the policy to All resources, not to this registration. - Under API permissions → Add a permission → Microsoft Graph → Delegated permissions, add the scopes the connector will request (the default set is listed under Configure scopes), then select Grant admin consent for {your organization}.
- Note the Application (client) ID and Directory (tenant) ID from the overview page.
2
Configure Claude Desktop
In the Claude Desktop in-app configuration window, open Connectors, select Add server, and choose Microsoft 365 under the Built-in group. Enter the values below, then select Test this connection to verify that the server starts and lists its tools, and select Save.
If you manage configuration through JSON or a plist directly, add an entry to
managedMcpServers with the server field set to microsoft365:The server ships inside the app, so nothing else needs to be installed on the device, and it activates only from managed configuration; users cannot add it themselves. Deploy the configuration through your device-management tool as usual.
3
Allow the required network hosts for local mode
The local connector calls Microsoft directly from the device, so in addition to the base egress hosts, devices need outbound HTTPS access to:
To read Office documents, such as Word and PowerPoint files, the connector asks Microsoft Graph for a PDF version and follows the redirect Graph returns. Microsoft chooses the host in that redirect.GCC High and DoD deployments use
login.microsoftonline.us and graph.microsoft.us (or dod-graph.microsoft.us for us-gov-dod) instead of login.microsoftonline.com and graph.microsoft.com, matching the azureCloud setting. For a Microsoft 365 GCC tenant, leave azureCloud at global. No egress to any Anthropic host is needed for Microsoft 365 data with the local connector.Configure scopes
With noscope field, the connector requests the standard read set at sign-in:
To request a different set, list scopes in the entry’s
scope field. The connector then requests exactly that list (plus User.Read and offline_access, which are always included). Use the list to narrow the read surface, to add the optional read scopes, or to add write scopes. Whatever you list must also be consented on the app registration from step 1; keep the two lists in sync.
Six optional read scopes are not in the standard set:
ChannelMessage.Read.Allenables Teams message search (chat_message_search), including searches of 1:1 and group chats, and lets Claude list a channel’s messages (teams_list_channel_messages). Requires tenant-admin consent.OnlineMeetingTranscript.Read.Allenables reading meeting transcripts. Requires tenant-admin consent.MailboxSettings.Readlets the connector read the user’s mailbox time zone so that dates in requests follow the user’s local time rather than UTC.People.Readenables people search (search_people), which resolves a name to a user before starting a Teams chat.Team.ReadBasic.AllandChannel.ReadBasic.Alllet Claude list the user’s teams and their channels (teams_list_teams,teams_list_channels), which Claude uses to find the team and channel IDs that the channel-message tools take.
ChannelMessage.Read.All is granted, Teams message search returns an error with an admin consent link, including for 1:1 and group chats. Claude can still list chats (teams_list_chats) and read their messages (read_resource) with Chat.Read. Until OnlineMeetingTranscript.Read.All is granted, transcript requests return a permission error.
Grant admin consent for ChannelMessage.Read.All or OnlineMeetingTranscript.Read.All in Microsoft Entra before you list it in scope. While the connector requests one of these scopes without admin consent, Microsoft Entra refuses the whole token request (AADSTS65001) instead of leaving that scope out. If the entry has no scope field yet, list the standard read scopes as well, because scope replaces them.
The scope field accepts only scopes the connector can use. An entry containing an unrecognized scope name is rejected as a whole at configuration load, with an error in the app’s main log listing the valid names, and the connector does not appear.
Narrowing or removing
scope shrinks what the connector requests at the next sign-in, but it does not narrow tokens already obtainable for the registration: Microsoft Entra issues tokens carrying every scope previously consented for the app, regardless of what is requested. To revoke access, remove the consent in Entra under Enterprise applications → your app → Permissions.Grant write scopes
With only read scopes granted, the connector is read-only. To let Claude take actions in Microsoft 365, grant write scopes: add them to the entry’sscope field and consent them on the app registration from step 1. Each write tool appears only when its scope is in the entry’s list, so granting a subset of the write scopes exposes a matching subset of the tools, and removing the write scopes from the list returns the connector to read-only.
Sending drafts and forwarding mail also require a mail read scope (one of
Mail.Read, Mail.ReadWrite, or Mail.Read.Shared) for the pre-send checks; the standard read set already includes one.
Every write tool requires user approval on each call by default. Administrators can change a tool’s approval state with toolPolicy, except for the send tools (outlook_send_mail, outlook_send_draft, outlook_forward_mail, outlook_create_event, outlook_update_event, teams_send_chat_message, teams_send_channel_message, teams_reply_channel_message): an allow setting for them resolves to ask, so they always require approval on each call.
Block content by sensitivity label
You can keep Claude from reading or changing content that carries certain Microsoft Purview sensitivity labels. You add the labels to the local connector’s configuration. The connector then checks the label of a file or email before it gives the item to Claude or changes it, and blocks the request if the label is on your list. The connector blocks this content when it carries a listed label:- Files: Word, Excel, PowerPoint, PDF, and MP4 files in SharePoint and OneDrive. The connector identifies the file type by its extension.
- Email: Outlook email, including drafts. When an email is blocked, so are its attachments.
- Attachments: a Word, Excel, PowerPoint, or PDF attachment that carries a listed label itself, even if its email doesn’t. Attachments in the older
.doc,.xls, and.pptformats aren’t checked for a label of their own.
Set up the label list
Update Claude Desktop first. Files are checked starting with version 2.37337.1, and email starting with version 5.1231.0. Versions before 2.37337.1 ignore the list. Devices on thestaggered release channel get releases later.
1
Find the label GUIDs
You list each label by its GUID, not its name. Connect to Security & Compliance PowerShell and run this command:Listing a parent label doesn’t block its sublabels, so list each sublabel you want blocked.
2
Add the labels to the connector's entry
In the in-app configuration window or the Enterprise Admin Console, go to Connectors and open your Microsoft 365 server. Under Sensitivity labels, click Add for each label. Paste the GUID into Label GUID, and make sure that Effect is set to You can list up to 48 labels. With a label list, the entry’s
block.If you write the JSON, plist, or registry value yourself, add sensitivityLabels inside the Microsoft 365 entry in managedMcpServers:tenantId must be your tenant’s GUID, not common, organizations, or consumers. If you have more than one local Microsoft 365 entry, add the list to each, because a list covers only its own entry.3
Restart and test
The list takes effect when Claude Desktop restarts. On one device, ask Claude to read a file that carries a listed label and a file that doesn’t. If the list works, Claude can’t read the first file but can read the second. The connector’s log,
mcp-server-office365-builtin.log, also has a line with "event":"local_label_policy_loaded", where "labelCount" is the number of labels you listed.main.log says what is wrong. See Troubleshoot the local connector.
What label blocking doesn’t cover
The list doesn’t block the following:- Other file types: such as text files, images, and archives, whether they’re in SharePoint or OneDrive or attached to an email that isn’t blocked
- Other Microsoft 365 content: Teams messages, SharePoint site pages, meeting transcripts, and calendar events, even for an invitation that is blocked as an email
- Quoted email: a reply or forward that quotes a blocked email, unless it carries a listed label itself
- Names: Claude can still see file and attachment names in listings, and file names and email headers, such as the subject and sender, in search results
- Files inside a folder: when Claude moves, copies, or deletes a folder, the files inside aren’t checked
- Other routes to Claude: files users upload, folders on the device, other connectors, and the remote Microsoft 365 connector
- Devices without a device-management profile: the user can edit the configuration and remove the list
How users sign in
After the configuration is deployed, the connector appears in Customize → Connectors in Claude Desktop. Sign-in starts when the user selects Connect. On both Windows and macOS, sign-in goes through the device’s native authentication broker when the device is set up for it: a system account-picker dialog appears instead of the browser, and the issued tokens carry the device identity claim that device-based Conditional Access policies (such as Require compliant device) evaluate. When the broker is unavailable, sign-in opens the system browser instead. ThemicrosoftAuthBroker configuration key controls whether sign-in uses the broker or the browser. auto (the default) uses the broker where it is available and the browser otherwise, disabled always uses the browser, and required makes sign-in fail when the broker is unavailable instead of opening the browser, so the refresh token stays held by the broker. Set required only after every device that receives the configuration is on Claude Desktop 1.49585.0 or later, because earlier versions read required as disabled and fall back to browser-only sign-in. Linux has no broker, so required is not supported there.
Browser sign-in works on tenants without device-based Conditional Access policies. It satisfies device policies only when the browser itself carries the device identity: on Windows, a browser signed in with the work account on an Entra-joined device (such as Microsoft Edge) provides this; on macOS, deploy Microsoft’s Enterprise SSO browser integration, or use brokered sign-in instead.
Requirements for brokered sign-in on Windows
Requirements for brokered sign-in on Windows
- Windows 10 or later (desktop editions). The broker (Web Account Manager, or WAM) is built into Windows; no separate install is needed.
- The device is joined or registered to Entra ID (Entra joined, Entra hybrid joined, or Entra registered). For device-based Conditional Access, the device must also be marked compliant in Intune or hybrid-joined, as your policy requires.
- The broker redirect URI is registered on the local-mode app under Mobile and desktop applications, with
APPLICATION_CLIENT_IDreplaced by the Application (client) ID from step 1:
AADSTS50011 in its own sign-in dialog, and closing that dialog counts as canceling, so every sign-in attempt ends at the same error until you register the URI above. To have users sign in through the browser instead of the broker, set microsoftAuthBroker to disabled in the managed configuration. Tokens from browser sign-in carry no device identity claim unless the browser itself provides one, so device-based Conditional Access policies block them.To have Connect sign in with the work account already signed in to Windows, without the account picker, set microsoftAuthDefaultAccount to enabled. See the key’s reference entry for the requirements and the cases where users still get the picker.Requirements for brokered sign-in on macOS
Requirements for brokered sign-in on macOS
- The Mac is enrolled in an MDM (Intune, Jamf, or similar), registered in Entra ID, and marked compliant. For non-Intune MDMs, use the partner device-compliance integration that reports compliance to Intune and Entra.
- Intune Company Portal is installed; it provides the broker.
- An Extensible SSO configuration profile of type Redirect, pointed at the Microsoft Enterprise SSO plug-in, is deployed through MDM. The broker is unavailable without it.
- The broker redirect URI is registered on the local-mode app under Mobile and desktop applications (it appears under the iOS / macOS section after saving):
msauth.com.anthropic.claudefordesktop.helper://auth, remove that entry. Claude Desktop does not use it.If the broker rejects the app’s sign-in request, or a brokered attempt fails with an error the broker cannot recover from, the connector falls back to the system browser automatically. A fallback most often comes from a missing broker redirect URI or SSO profile.AADSTS53003, unless the browser itself carries the device identity. Fix the broker requirement that caused the fallback, then restart the app. A fallback is recorded in the connector’s log file as a local_auth_broker_fallback event. A user canceling the broker dialog doesn’t trigger the fallback.
Token storage and sign-out
The connector’s Entra tokens are stored on the device, encrypted by Claude Desktop using the operating system’s secure storage. Each configured entry has its own token store, and tokens persist across app restarts so users are not asked to sign in again each session. Selecting Disconnect next to the connector signs the user out and deletes its stored tokens. Where the user signed in through the broker, the device’s work or school account itself is managed by the operating system and remains after Disconnect; remove the account in Windows Settings (Accounts → Access work or school) or macOS Company Portal, or revoke the user’s sessions in Entra, to end access entirely. WithcontinuousAccessEvaluation at its default of enabled on Claude Desktop 1.49585.0 or later, Microsoft Graph rejects the connector’s current access token within minutes of the revocation. With continuousAccessEvaluation set to disabled, or on earlier app versions, revocation takes effect once the current one-hour access token expires.
Troubleshoot the local connector
The connector writes its sign-in and Microsoft Graph errors to its own log file in the Claude Desktop logs directory (
~/Library/Logs/Claude-3p/ on macOS, %LOCALAPPDATA%\Claude-3p\logs\ on Windows), named mcp-server-office365-builtin.log. Configuration parsing and connection lifecycle messages appear in main.log in the same directory.