Guide · Integrations

How to Add the Microsoft 365 MCP to Toqan

Connect Toqan to the full suite of Microsoft 365 services — Mail, Calendar, Teams, SharePoint, Word, and more — via Microsoft's official Work IQ MCP servers.

How to Add the Microsoft 365 MCP to Toqan

What this allows you to do

Once set up, users in your organisation can connect Toqan to Microsoft 365 services. Common use cases:

Mail

  • Search and read Outlook emails
  • Create drafts, send emails, reply and reply all to messages

Calendar

  • List, view, create, update, and delete calendar events
  • Accept or decline meeting invitations
  • Find free time across attendees

Teams

  • Create chats, post and edit messages, manage members
  • List teams and channels, create channels, post and reply to channel messages

User directory

  • Look up user profiles, managers, and direct reports
  • List users in the organisation

SharePoint

  • Browse sites, document libraries, folders, and files
  • Read, create, move, copy, rename, delete files and folders
  • Manage SharePoint lists, items, and columns

Word

  • Create new Word documents in OneDrive
  • Read document content and comments
  • Add comments and reply to comments

Overview

The Microsoft 365 MCP is powered by Microsoft’s official Work IQ MCP servers — currently in Preview. The servers are hosted by Microsoft, so no self-hosting is required. Seven servers are available:

ServerServer IDDescription
Mailmcp_MailToolsRead, send, reply, and manage Outlook email
Calendarmcp_CalendarToolsCalendar events, meetings, scheduling, availability
Teamsmcp_TeamsServerTeams chats, channels, messages, membership
Usermcp_MeServerUser profiles, managers, direct reports, org directory
SharePointmcp_SharePointRemoteServerSites, lists, document libraries, files, folders
Wordmcp_WordServerWord documents: create, read content, comments
Windows 365 Computer Usemcp_W365ComputerUseCloud PC automation: mouse, keyboard, browser, shell, screenshots

All servers share the same URL pattern: https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/{serverName}

All are built on the Microsoft Graph API and secured via OAuth2 (Authorization Code flow, delegated — acts on behalf of the signed-in user).

⚠️
These servers are in Preview — APIs and behavior may change without notice.

What you will need

  • A Microsoft 365 Copilot license per user (hard requirement — not included in standard E3/E5 plans)
  • Access to the Azure portal to register an Entra app
  • A Microsoft Global Admin account to grant admin consent
  • Your Microsoft 365 Tenant ID (found in Microsoft Entra ID → Overview)
ℹ️
If your organisation doesn't have Microsoft 365 Copilot licences, see the FAQ at the bottom for an alternative.

Part 1: Register a Microsoft Entra app

Step 1: Find your Tenant ID

  1. Go to the Azure portal.
  2. Navigate to Microsoft Entra IDOverview.
  3. Copy the Tenant ID (a GUID). You’ll need it throughout this guide.

Step 2: Register a new app

  1. In the Azure portal, go to Microsoft Entra IDApp registrationsNew registration.
  2. Name the app — e.g. Toqan MCP Client.
  3. Set Account type to Single tenant (your organisation only).
  4. Add a Redirect URI: https://work.toqan.ai/callback/oauth.
  5. Click Register.
  6. Note down the Application (Client) ID — you’ll need it in Part 2.

In the registered app → API permissionsAdd a permission. Add the permissions for the servers you want to use:

Mail (mcp_MailTools):

  • Microsoft Graph (Delegated): Mail.Read, Mail.ReadWrite, Mail.Send
  • Work IQ API: WorkIQ-MailServer

Calendar (mcp_CalendarTools):

  • Microsoft Graph (Delegated): Calendars.Read, Calendars.ReadWrite
  • Work IQ API: WorkIQ-Calendar

Teams (mcp_TeamsServer):

  • Microsoft Graph (Delegated): Chat.Read, Chat.ReadWrite, ChannelMessage.Send, ChannelMessage.Read.All, Group.Read.All, Group.ReadWrite.All
  • Work IQ API: McpServers.Teams.All

User (mcp_MeServer):

  • Microsoft Graph (Delegated): User.Read, User.ReadBasic.All (or User.Read.All), Directory.Read.All

SharePoint (mcp_SharePointRemoteServer):

  • Microsoft Graph (Delegated): Sites.Read.All, Sites.ReadWrite.All, Files.Read.All, Files.ReadWrite.All, Sites.Manage.All

Word (mcp_WordServer):

  • Microsoft Graph (Delegated): Files.ReadWrite (or Files.ReadWrite.All), Sites.Read.All
  • Standard scopes: openid, profile, offline_access, User.Read

Then click Grant admin consent. Once granted, the permissions column will show a green check.

⚠️
Granting admin consent requires a Microsoft Global Admin account.

Part 2: Create a company-wide OAuth connector in Toqan

Step 1: Open OAuth Connectors

In Toqan, go to the Connections tab. Click OAuth Connectors, then click + New and select Build from scratch.

Step 2: Configure the connector

Fill in the connector details form:

  • Name — e.g. Microsoft 365 (or separate connectors per service, e.g. Microsoft 365 Mail, Microsoft 365 Calendar)
  • Access — set to Public: Company-wide
  • Authorization Endpointhttps://login.microsoftonline.com/{tenantId}/oauth2/v2.0/authorize (replace {tenantId})
  • Token Endpointhttps://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token (replace {tenantId})
  • Redirect URI — pre-filled as https://work.toqan.ai/callback/oauth. Make sure this matches the redirect URI from Part 1, Step 2.
  • Client ID — your Application (Client) ID from Part 1, Step 2
  • Client Secret — your client secret from the Entra app
  • Selected Scopes — the scopes for the servers you want to use (see Part 1, Step 3). For example, for Mail + Calendar: Mail.Read, Mail.ReadWrite, Mail.Send, Calendars.Read, Calendars.ReadWrite

Everything else on the form can be left blank.

Step 3: Save

Save the connector. It will now appear as an available auth option for anyone in the organisation when they add a Microsoft 365 MCP server.


What to share with your users

Once Parts 1 and 2 are done, share the following with your users so they can connect on their own.

The MCP server URLs (with your Tenant ID already filled in):

  • Mail: https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/mcp_MailTools
  • Calendar: https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/mcp_CalendarTools
  • Teams: https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/mcp_TeamsServer
  • User: https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/mcp_MeServer
  • SharePoint: https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/mcp_SharePointRemoteServer
  • Word: https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/mcp_WordServer
  • Windows 365 Computer Use: https://agent365.svc.cloud.microsoft/agents/tenants/{tenantId}/servers/mcp_W365ComputerUse

The connector name you created in Part 2 (e.g. Microsoft 365).

What they need to do:

  1. Go to ConnectionsMCP ServersAdd, paste the URL, and select Streamable HTTP.
  2. For authentication, select OAuth, pick the connector you shared from the dropdown, and click Confirm.
  3. Click Authorise, sign in with their Microsoft 365 account, and allow the permissions.

Each user gets their own token — they only need to do this once per server.


Reference: what’s available

Outlook Mail tools (mcp_MailTools)

ToolDescription
graph_mail_searchMessagesSearch messages (KQL-style queries)
graph_mail_listSentList sent items
graph_mail_getMessageGet a message by ID
graph_mail_createMessageCreate a draft
graph_mail_sendMailSend an email (to/cc/bcc, HTML body)
graph_mail_sendDraftSend an existing draft
graph_mail_replyReply to a message
graph_mail_replyAllReply all to a message
graph_mail_updateMessageUpdate subject, body, or categories
graph_mail_deleteMessageDelete a message

Calendar tools (mcp_CalendarTools)

ToolDescription
graph_listEventsList calendar events
graph_listCalendarViewView events in a date range
graph_getEventGet a specific event by ID
graph_createEventCreate a new event
graph_updateEventUpdate an existing event
graph_deleteEventDelete an event
graph_acceptEventAccept a meeting invite
graph_declineEventDecline a meeting invite
graph_cancelEventCancel a meeting
graph_findMeetingTimesFind free slots across attendees
graph_getScheduleCheck availability and schedule

Teams tools (mcp_TeamsServer)

ToolDescription
mcp_graph_chat_createChatCreate a new Teams chat (oneOnOne or group)
mcp_graph_chat_getChatRetrieve chat metadata by ID
mcp_graph_chat_listChatsList chats visible to the caller
mcp_graph_chat_postMessagePost a plain-text message to a chat
mcp_graph_chat_getChatMessageRetrieve a chat message by ID
mcp_graph_chat_listChatMessagesList messages in a chat (paging/OData)
mcp_graph_chat_updateChatUpdate chat properties (e.g., topic)
mcp_graph_chat_updateChatMessageEdit a chat message (plain text)
mcp_graph_chat_deleteChatSoft-delete a chat
mcp_graph_chat_deleteChatMessageSoft-delete a chat message
mcp_graph_chat_addChatMemberAdd a member to a chat (member/owner roles)
mcp_graph_chat_listChatMembersList participants of a chat
mcp_graph_teams_listTeamsList teams a user has joined
mcp_graph_teams_getTeamRetrieve team properties
mcp_graph_teams_listChannelsList channels in a team
mcp_graph_teams_getChannelRetrieve channel metadata
mcp_graph_teams_createChannelCreate a channel in a team (standard/private/shared)
mcp_graph_teams_createPrivateChannelCreate a private channel (must include members/owner)
mcp_graph_teams_updateChannelUpdate channel displayName/description
mcp_graph_teams_listChannelMessagesList messages in a channel
mcp_graph_teams_postChannelMessagePost a plain-text message to a channel
mcp_graph_teams_replyToChannelMessageReply to a channel message (plain text)
mcp_graph_teams_addChannelMemberAdd a member to a private/shared channel
mcp_graph_teams_listChannelMembersList members of a channel
mcp_graph_teams_updateChannelMemberUpdate a channel member’s role

User tools (mcp_MeServer)

ToolDescription
mcp_graph_getMyProfileGet the signed-in user’s profile
mcp_graph_getUserProfileGet another user’s profile
mcp_graph_getMyManagerGet the signed-in user’s manager
mcp_graph_getUsersManagerGet another user’s manager
mcp_graph_getDirectReportsGet the signed-in user’s direct reports
mcp_graph_listUsersList users in the organisation

SharePoint tools (mcp_SharePointRemoteServer)

ToolDescription
findSiteFind SharePoint sites the user can access
getSiteByPathResolve a site by hostname and server-relative path
listSubsitesList child/subsites of a site
listDocumentLibrariesInSiteList document libraries in a site
getDefaultDocumentLibraryInSiteGet the default document library for a site
getFolderChildrenEnumerate files/folders in a parent folder (top 20)
findFileOrFolderSearch for a file or folder across sites and libraries
getFileOrFolderMetadataGet metadata for a file or folder by ID
getFileOrFolderMetadataByUrlGet metadata from a sharing URL
readSmallTextFileRead/download a text file (≤5 MB)
readSmallBinaryFileRead/download a binary file (≤5 MB, base64)
createSmallTextFileCreate/upload a text file (≤5 MB)
createSmallBinaryFileCreate/upload a binary file (≤5 MB, base64)
createFolderCreate a folder in a document library
renameFileOrFolderRename a file or folder
deleteFileOrFolderDelete a file or folder
moveFileOrFolderMove a file or folder (async, cross-library)
copyFileOrFolderCopy a file or folder (async, cross-library)
checkOperationStatusCheck status of an async copy/move operation
uploadFileFromUrlUpload a file from a SharePoint/OneDrive URL
shareFileOrFolderSend a sharing invitation (read or write)
setSensitivityLabelOnFileSet or remove a sensitivity label on a file
listListsGet all SharePoint lists on a site
createListCreate a new SharePoint list
deleteListDelete a SharePoint list
sendInviteForListSend sharing invitations for a list
listListItemsGet items (rows) from a list
getListItemGet a single list item by ID
createListItemCreate a new list item with field values
updateListItemUpdate fields on an existing list item
deleteListItemDelete a list item
listColumnsGet all columns for a list
createColumnCreate a column in a list
updateColumnUpdate an existing column’s properties
deleteColumnDelete a column (removes all data in that column)

Word tools (mcp_WordServer)

ToolDescription
WordCreateNewDocumentCreate a new Word document in OneDrive (HTML/plain-text content)
WordGetDocumentContentFetch a DOCX from OneDrive/SharePoint; returns text + comments
WordCreateNewCommentAdd a comment to a Word document
WordReplyToCommentReply to an existing comment in a Word document

Windows 365 Computer Use (mcp_W365ComputerUse)

A specialised server for Cloud PC automation with 50+ tools covering:

  • Session management: start/end/get session details
  • Mouse & keyboard: move, click, drag, scroll, type, press keys
  • Screen capture: screenshots, zoom, OCR analysis
  • Window management: list, activate, close, resize windows
  • Browser automation: navigate, click, type, get text/HTML, eval JS, form filling, tab management
  • System: shell commands, Python execution, clipboard, process management
  • UI automation: accessibility tree, find UI elements

Note: The exact permissions/scopes for Windows 365 Computer Use are not yet documented in the public preview. Consult your tenant admin or the Windows 365 for Agents documentation.


General Work IQ MCP Server

In addition to the workload-specific servers above, there is a general Work IQ MCP server that provides 10 core tools for interacting with any Microsoft Graph resource:

CategoryToolDescription
EntityfetchRead entities by Graph resource path
Entitycreate_entityCreate a new entity (POST to collection)
Entityupdate_entityUpdate an existing entity (PATCH)
Entitydelete_entityDelete an entity (DELETE)
Entitydo_actionInvoke side-effect actions (e.g., send mail, copy/move)
Entitycall_functionCall Graph functions (calendarView, delta, search)
CopilotaskAsk Microsoft 365 Copilot a natural-language question
Copilotlist_agentsList available agents
Schemaget_schemaRetrieve OpenAPI schema for a Graph operation
Schemasearch_pathsSearch available API paths by prefix or regex

This server is useful for Graph operations not covered by the specialised servers above.


FAQ

Q: What if my organisation doesn’t have a Microsoft 365 Copilot licence?

The official Work IQ MCP servers require a Copilot licence per user. If your org doesn’t have one, a community-maintained alternative exists: stefanskiasan/outlook-mcp on GitHub. It covers 75+ tools for mail, calendar, Teams, and Tasks using the same Microsoft Graph API with a standard Entra app registration — no special licence required. It requires self-hosting the MCP server.

Q: Can users add just one server without the others?

Yes. Each server is added independently. Share only the URL relevant to their use case.

Q: How long do policy changes take to propagate?

Work IQ implements a Rego-based policy layer for tenant-level control over MCP tool requests. Policy changes can take up to 24 hours to propagate.


References