Early access

Microsoft 365 MCP server

Use Arc0’s early-access Microsoft 365 tools to inspect Outlook message summaries, save drafts, review appointments, and browse OneDrive metadata. Calendar creation can invite attendees immediately when they are supplied. Access is gated: request enablement for your organization before connecting.

ProductivityOAuthMCP + RESTmicrosoft.com
AUDIT LOG · MICROSOFT 365POLICY: acme-support
09:41:07 · claude · u_8f2read
microsoft_365.list_events
List calendar window✓ allowed · 212ms
09:41:08 · claude · u_8f2read
microsoft_365.get_event
Get calendar event✓ allowed · 164ms
09:41:09 · claude · u_8f2write
microsoft_365.create_draft
Create mail draft✓ approved · approved by user
ILLUSTRATIVE POLICY TRACE · NOT A LIVE RECEIPT

Working with Microsoft 365

An agent preparing a daily brief can use microsoft_365.list_messages to find Outlook messages and microsoft_365.get_message to inspect a selected subject, preview, and status. These are summaries rather than complete message bodies. Keep that distinction visible when asking the agent to explain an email or prepare a response. microsoft_365.create_draft saves text in the connected mailbox for human review without sending mail.

For scheduling, microsoft_365.list_events reads the default calendar in an explicit UTC window and expands recurring instances. microsoft_365.create_event creates an appointment; including attendees sends invitations immediately. Verify the intended time and recipients before the call. After an uncertain result, inspect the calendar by subject and time before trying another creation.

microsoft_365.list_drive_items browses the root or a selected OneDrive folder, while microsoft_365.get_drive_item returns metadata for a known item. These tools do not download files or provide full-text file search. Follow the returned continuation link unchanged for further pages, and avoid presenting one page as the whole mailbox or drive.

01 · USE CASES

Agent workflows for Microsoft 365.

01

Review mailbox summaries

Use microsoft_365.list_messages and microsoft_365.get_message to inspect subjects, previews, and message status without full bodies.

02

Save an Outlook draft

Use microsoft_365.create_draft to prepare an email for review without sending it.

03

Plan a calendar entry

Use microsoft_365.list_events before microsoft_365.create_event; supplied attendees receive invitations immediately.

04

Find a OneDrive item

Use microsoft_365.list_drive_items to browse a folder and microsoft_365.get_drive_item to inspect a known file’s metadata.

02 · ACTIONS

8 Microsoft 365 actions, graded by risk.

These actions come from the Arc0 registry. Your identity, provider permissions and Arc0 policies determine which actions can run.

read

6

Look things up, subject to your permissions.

  • microsoft_365.list_messages
    List or search messages

    Use when finding messages in the connected mailbox. Returns bounded summaries; search uses Graph KQL (up to 1,000 results). Pass the returned nextLink unchanged to continue. Includes deleted folders; use get_message for one known id.

  • microsoft_365.get_message
    Get message summary

    Use when reading the subject, preview and status of one known message in the connected mailbox. Returns a summary, not the full body or attachments. Message ids can change when a message moves.

  • microsoft_365.list_events
    List calendar window

    Use when finding appointments and recurring instances in the connected user’s default calendar during a UTC window of at most 366 days. Pass nextLink unchanged to continue. Returned start/end values include their time zone.

  • microsoft_365.get_event
    Get calendar event

    Use when checking the subject, start/end and cancellation state of one known event in the connected user’s calendar, including reading back a newly created event.

  • microsoft_365.list_drive_items
    List OneDrive folder

    Use when discovering files and folders in the connected user’s OneDrive. Omit folderId for the root. Returns metadata only, with nextLink for another page; use get_drive_item for a known item. Does not download file contents.

  • microsoft_365.get_drive_item
    Get OneDrive item metadata

    Use when inspecting one known file or folder in the connected user’s OneDrive. Returns its name, size and file/folder metadata. Does not return download URLs or file contents.

write

2

Create and change things. Allow, or ask the user first.

  • microsoft_365.create_draft
    Create mail draft

    Use when preparing an email for review in the connected mailbox. Saves a draft; nobody is notified and no mail is sent. Do not use to send mail. After an uncertain result, list drafts before retrying to avoid duplicates.

  • microsoft_365.create_event
    Create calendar event

    Use when adding an event; attendees receive invitations immediately. After an uncertain result, read the calendar by subject/time window before retrying with a new idempotencyKey: it can duplicate events and invitations. The same idempotencyKey returns the stored outcome-unknown result.

destructive

0

Delete, cancel or archive. Ask first, or deny outright.

  • No destructive actions.
03 · POLICIES AND AUDIT

Control access to Microsoft 365.

After early access is enabled, connect the intended Microsoft 365 account, authorize your AI client and set policies for its tools.

Provider permissions and Arc0 policy both apply. Allow reads, require approval for selected writes, or deny destructive actions. The audit log records execution decisions.

Configure policies and approvals

Example policy choices

  • Read actions: allow where authorized
  • microsoft_365.create_draft: require approval

Arc0 MCP endpoint: https://api.arc0.ai/mcp

04 · AUTH AND DATA

How Microsoft 365 connects.

Connect Microsoft 365 using OAuth. OAuth grants the provider scopes shown during consent; API keys and other credentials retain the permissions configured at the provider. Arc0 stores credentials in its encrypted vault and does not pass them to the model. Disconnect to remove access through Arc0; revoke a key at the provider to invalidate it there. Token refresh and provider-side revocation depend on the authentication lane and provider.

The connection serves authorized calls through Arc0 MCP and REST. How Arc0 handles credentials →

AUTH
OAuth
CREDENTIALS
Per-tenant encrypted vault
MODEL SEES
Results only, never credentials
AUDIT LOG
Every call, on every plan
05 · AI CLIENTS

Use Microsoft 365 with your AI client.

Request access to Microsoft 365 first. An Arc0 administrator must enable it for your organization before these actions appear. Then authorize your AI client separately. It only receives tools and accounts allowed for that identity.

Microsoft 365 with Claude

Claude Desktop + Claude Code

  1. In Claude Desktop, add Arc0 through the remote MCP settings and use OAuth. Follow the generic remote-client steps if your account’s interface differs.
  2. For Claude Code, run the command below. Open /mcp, select Arc0, and authenticate in your browser. Select your workspace and review access.
  3. Check the connection with claude mcp get arc0.
claude mcp add --transport http --scope user arc0 https://api.arc0.ai/mcp
Full MCP setup and troubleshooting
All apps for Claude
Microsoft 365 with ChatGPT

ChatGPT on the web

  1. Open Plugins in ChatGPT, select the plus button, then Add custom MCP server.
  2. Name it Arc0, enter the server URL below, and choose OAuth. Use dynamic client registration if asked; no Arc0 API key is needed.
  3. Review the notice and select Create as a plugin. Complete Arc0 sign-in, workspace selection and consent, then install and select the plugin in your conversation. Labels and access vary by account; managed workspaces may require administrator approval.
https://api.arc0.ai/mcp
Full MCP setup and troubleshooting
All apps for ChatGPT
Microsoft 365 with OpenAI Codex

Codex app + CLI

  1. Run the registration command below. The app and CLI share ~/.codex/config.toml.
  2. Complete browser OAuth, choose your Arc0 workspace, and review access. If authentication does not start, run codex mcp login arc0.
  3. Check codex mcp list, then open a new Codex chat. Inspect an existing arc0 entry before changing it.
codex mcp add arc0 --url https://api.arc0.ai/mcp
Full MCP setup and troubleshooting
All apps for OpenAI Codex
Microsoft 365 with Cursor

Remote MCP setup

  1. Add Arc0 in your client’s remote MCP settings using the server URL below.
  2. Choose OAuth, sign in to Arc0, select the intended workspace and review access.
  3. Confirm the server is connected and start with an allowed read. These are generic remote-MCP steps; consult your client’s settings for its current interface.
https://api.arc0.ai/mcp
Full MCP setup and troubleshooting
All apps for Cursor
Microsoft 365 with VS Code

Remote MCP setup

  1. Add a remote HTTP MCP server named Arc0 using the URL below.
  2. Use OAuth and finish Arc0 sign-in, workspace selection and consent.
  3. Confirm discovery succeeds before requesting a read. These are generic remote-MCP steps; client UI and availability may differ.
https://api.arc0.ai/mcp
Full MCP setup and troubleshooting
Microsoft 365 with Any MCP client

Streamable HTTP

  1. Use a client that supports remote MCP over Streamable HTTP. Add the server URL below and choose OAuth.
  2. For a client without OAuth, use a self-bound API key with execute permission in the X-API-Key header. Store it in secret storage or an environment variable, outside source control. Never send both an API key and an OAuth bearer token.
  3. Use the MCP clients guide for the SDK transport example and Embedded identity for business-managed end users.
https://api.arc0.ai/mcp
Full MCP setup and troubleshooting

After setup, ask your agent to find an allowed read action, load its schema, and execute it on the intended account. Check Activity for the receipt. A connected MCP client alone does not confirm a successful provider call.

07 · FAQ

Microsoft 365 and Arc0, answered.

Q01

Is there an official Microsoft 365 MCP server, and how does Arc0 differ?

Check Microsoft’s docs for the current Microsoft 365 MCP offerings and their tenant requirements. This page does not claim a single official server equivalent to these tools. Arc0 uses Microsoft Graph for a defined set of mailbox, calendar, and OneDrive actions.

Q02

Which permissions does Arc0 need for Microsoft 365?

Delegated OAuth requests User.Read, offline_access, Mail.ReadWrite, Calendars.ReadWrite and Files.Read. Tenant policy may require administrator consent. Mail.Send, Teams, application permissions, and Files.Read.All are not requested.

Q03

Does this work with Claude, ChatGPT, Codex and Cursor?

Yes, through Arc0 MCP when your Claude, ChatGPT, Codex, or Cursor client supports remote MCP and your account permits it. Connect the app in Arc0 and configure your client using the Arc0 setup guide. Early-access approval and app permissions still apply.

Q04

How are credentials stored, refreshed and revoked?

Credentials are encrypted in Arc0’s vault. Arc0 stores OAuth tokens and retains replacement refresh tokens. Disconnect removes local credentials; this version has no Microsoft remote-revoke operation. Remove the app’s consent through your Microsoft account or organization administrator to end provider-side authorization.

Q05

What happens with rate limits or errors?

Microsoft Graph can throttle calls and return a wait time. Arc0 reports permission and license failures separately from expired credentials. A new calendar-creation attempt can duplicate invitations after a timeout; read the calendar first.

Q06

What is the availability of these Microsoft 365 tools?

These tools are in early access and require access to the app in Arc0. The action list describes the current implementation, not general availability.

Get started

Request Microsoft 365 access.

Microsoft 365 MCP server: 8 actions including list or search messages, get message summary, create mail draft. Request early access through Arc0.

Free to build · MCP + REST · Audit log on every plan

Microsoft 365 and its logo are trademarks of their respective owners. Arc0 is not affiliated with or endorsed by Microsoft 365.