Summary
Let your AI work in Outlook: search and read email, file messages in folders, draft, send and reply, check the calendar, create and move meetings, and find free time with colleagues. Microsoft 365 and Outlook.com through Microsoft Graph, signed in with your Microsoft account.
Guided setup
Connect Outlook to Microsoft Copilot in 2 minutes
Start a free trial on AnythingMCP Cloud, connect Outlook in the guided setup, then add your MCP URL to Microsoft Copilot. No code and no server to run.
No credit card · 7-day trial · Self-host alternative available
Try asking
Example prompts for Outlook (Microsoft 365 Mail and Calendar)
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Outlook (Microsoft 365 Mail and Calendar), paste your credentials, mint an MCP API key — done. No Docker, no
git clone, no local server.
Outlook (Microsoft 365 Mail and Calendar) + Microsoft Copilot
Let your AI work in Outlook: search and read email, file messages in folders, draft, send and reply, check the calendar, create and move meetings, and find free time with colleagues. Microsoft 365 and Outlook.com through Microsoft Graph, signed in with your Microsoft account.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
MICROSOFT_CLIENT_ID, MICROSOFT_CLIENT_SECRET, MICROSOFT_TENANT_ID
Step 1 — Get credentials
-
Open the Microsoft Entra admin center (entra.microsoft.com) or the Azure portal and go to Applications → App registrations → New registration.
-
Name the app (for example "AnythingMCP Outlook") and choose the Supported account types. The choice decides what goes into
MICROSOFT_TENANT_ID:- Accounts in this organizational directory only (single tenant): only users of your organisation can sign in. Use the Directory (tenant) ID from the app's Overview page (a GUID) or your domain, such as
contoso.onmicrosoft.com. - Accounts in any organizational directory (multi-tenant): use
organizations. - Accounts in any organizational directory and personal Microsoft accounts: use
common(work, school and Outlook.com accounts) orconsumers(Outlook.com only).
If the value does not match the account type, Microsoft refuses the sign-in (AADSTS50194 or AADSTS50020).
- Accounts in this organizational directory only (single tenant): only users of your organisation can sign in. Use the Directory (tenant) ID from the app's Overview page (a GUID) or your domain, such as
-
Under Redirect URI, pick the platform Web and enter
https://cloud.anythingmcp.com/api/mcp-oauth/callback. If you host AnythingMCP yourself, enterhttps://your-anythingmcp-host/api/mcp-oauth/callbackinstead. The URI must match character for character, otherwise Microsoft answers AADSTS50011. -
Open API permissions → Add a permission → Microsoft Graph → Delegated permissions and add
offline_access,User.Read,Mail.ReadWrite,Mail.SendandCalendars.ReadWrite. Do not add them as Application permissions: application permissions would give the app access to every mailbox in your tenant without anyone signing in. The connector does not need them, it works as the user who signs in.offline_accessis what makes Microsoft issue a refresh token; without it the connector stops an hour after you authorize it. -
Open Certificates & secrets → New client secret. Copy the secret Value, not the Secret ID; it is shown only once. Note the expiry date: when the secret expires, the connector stops working until you create a new one and paste it in.
-
Paste the Application (client) ID from the Overview page into
MICROSOFT_CLIENT_ID, the secret value intoMICROSOFT_CLIENT_SECRETand the tenant value from step 2 intoMICROSOFT_TENANT_ID, then install the connector. -
On the connector page, click Authorize with Provider and sign in with the mailbox the AI should work with. The refresh token is stored encrypted, and access tokens (valid for about an hour) are renewed automatically.
-
Start with
outlook_get_me: it shows which mailbox the connector is signed in to.
Admin consent: these delegated permissions normally do not need an administrator, but many organisations turn off user consent. If the sign-in shows "Need admin approval" (AADSTS65001 or AADSTS90094), a tenant administrator (for example a Global Administrator or Cloud Application Administrator) opens the app registration once and clicks API permissions → Grant admin consent for the organisation. After that every user can authorize. A connector authorized by an administrator still reads only the administrator's own mailbox: each connector works for the account that signed in.
Read-only setup: replace the scopes in the connector's OAuth settings with offline_access User.Read Mail.Read Calendars.Read, authorize again and disable the tools that send or write.
Common errors: 401 InvalidAuthenticationToken means the authorization was revoked or the client secret expired; paste a new secret if needed and click Authorize with Provider again. 403 ErrorAccessDenied means a permission from step 4 is missing or was not consented. MailboxNotEnabledForRESTAPI means the account has no Exchange Online mailbox (for example an on-premises mailbox or a user without a licence). outlook_get_free_busy does not work with personal Outlook.com accounts.
The connector does not delete mail or events and does not handle attachments, contacts, mailbox rules or other users' and shared mailboxes.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
Outlook (Microsoft 365 Mail and Calendar)tools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
outlook_get_me | Return the signed-in Microsoft 365 or Outlook.com user: id, display name, email address (mail) and user principal name |
outlook_list_mail_folders | List the top-level mail folders of the mailbox (Inbox, Sent Items, Drafts, Archive and the user's own folders) with id, displayName… |
outlook_list_child_folders | List the subfolders of one mail folder, with the same fields as outlook_list_mail_folders |
outlook_list_messages | List the messages of one mail folder, newest first unless orderby says otherwise |
outlook_search_messages | Search or filter messages across the whole mailbox, all folders included (Deleted Items too) |
outlook_get_message | Get one message in full: subject, sender, all recipients, dates, flags, conversationId, internetMessageId, attachments flag and the body as… |
outlook_create_draft | Create a draft message in the Drafts folder without sending it |
outlook_send_draft | Send an existing draft (from outlook_create_draft or one written in Outlook) |
outlook_send_mail | Compose and send a new email in one step, from the signed-in mailbox |
outlook_reply_to_message | Reply to the sender of a message (or to its Reply-To addresses) and send the reply at once, quoting the original below the comment |
outlook_reply_all_to_message | Reply to the sender and every other recipient of a message and send the reply at once, quoting the original below the comment |
outlook_move_message | Move a message to another mail folder (for example to archive it or file it in a project folder) |
outlook_list_calendars | List the user's calendars with id, name, color, owner, whether it is the default calendar and whether the user can edit it |
outlook_list_events | List the events of the default calendar that fall within a time range, with recurring meetings expanded into their single occurrences |
outlook_list_calendar_events | List the events of one specific calendar (a shared, secondary or team calendar) within a time range, with recurring meetings expanded |
outlook_get_event | Get one calendar event in full: subject, body (HTML), start and end, location, organizer, attendees with their responses, recurrence… |
outlook_create_event | Create an event in the user's default calendar |
outlook_update_event | Change an existing event: only the fields given are changed, the others stay as they are |
outlook_get_free_busy | Get free/busy availability of up to several people, rooms or distribution lists in the same organisation for a time window, to find a slot… |
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?