Office 365 MCP
47 min read
Office 365 MCP
Documentation Disclaimer
This feature is EXPERIMENTAL and under active development. It may change significantly, be discontinued, or have breaking changes without notice.
Overview
office-365-mcp is a Python MCP server, built on FastMCP. It connects Microsoft 365 to MCP clients through the Microsoft Graph API.
Reaches: Outlook mail, calendar, and contacts. Microsoft Teams. SharePoint and OneDrive. OneNote. The identity of the signed-in user.
Size: 121 tools in total.
Selection: A deployment turns on a fixed subset of the tools. It picks a preset, which is a named bundle of tools, or an exact list of tools.
Always on: The tool
get_meis on in every deployment.Live data: Every call goes to Microsoft Graph at once. The server keeps no copy of mail or messages. It stores only an OAuth token.
Choose a preset
Find your area in the index below: Teams, Outlook, SharePoint and OneDrive, or OneNote.
Pick the smallest preset that does the job. A preset that builds on another preset holds all of its tools.
Read the Admin consent column. If it says Yes, a tenant administrator must grant consent before any user signs in.
Set the preset in the Helm values. See Deployment.
Rules for the selection:
A deployment sets exactly one of
presetorenabled. It never sets both, and it never sets neither. The Helm chart schema, the Terraform module, and the startup check of the server enforce this rule.A deployment cannot start from a preset and then add or remove one tool. For a mix of tools that no preset covers, name every wanted tool in the
enabledlist.Four presets are opt-in:
outlook-delete,outlook-rules,outlook-calendar-manage, andonenote-delete. Each one is a base preset plus the tools that remove an item, write an inbox rule, forward an event, or share a calendar. No other preset holds these tools.
Preset index
Each row links to the section of that preset. The count of tools does not include get_me, which every deployment turns on.
Teams. Chats, channels, meetings, transcripts, and the files of a channel.
Preset | Use it to | Tools | Admin consent |
|---|---|---|---|
Read chats, channels, messages, transcripts, and recordings. | 12 | ⚠️ Yes | |
List chats and the members of one chat. | 2 | No | |
Find and read Teams messages. | 5 | ⚠️ Yes | |
Walk teams and read channel posts. | 4 | ⚠️ Yes | |
Find a meeting and read its transcript. | 3 | ⚠️ Yes | |
See whether a meeting was recorded. | 2 | ⚠️ Yes | |
Read transcripts and recording details of a meeting. | 4 | ⚠️ Yes | |
Post messages and reactions in chats and channels. | 8 | No | |
Post messages with files from SharePoint. | 13 | ⚠️ Yes | |
Edit and delete your own Teams messages. | 12 | ⚠️ Yes | |
Create, change, and delete Teams online meetings. | 6 | No | |
Create chats, and manage their members and names. | 6 | ⚠️ Yes | |
Find and read the files of a channel. | 7 | ⚠️ Yes |
Outlook mail. Messages, folders, drafts, and sending.
Preset | Use it to | Tools | Admin consent |
|---|---|---|---|
Read and search mail. No change to the mailbox. | 10 | No | |
Mark, file, and copy mail. Create and change drafts. | 20 | No | |
| 21 | No | |
| 21 | No |
Outlook mailbox settings. Inbox rules, the automatic reply, and categories.
Preset | Use it to | Tools | Admin consent |
|---|---|---|---|
Read inbox rules, the automatic reply, and categories. | 3 | No | |
Set the automatic reply, turn off a rule, create a category. | 6 | No | |
Create, change, and erase inbox rules. | 9 | No |
Outlook calendar. Calendars, events, availability, rooms, and sharing.
Preset | Use it to | Tools | Admin consent |
|---|---|---|---|
Read calendars, events, and free time. | 12 | No | |
Create, change, and cancel events. Answer invitations. | 16 | No | |
| 21 | No | |
| 17 | No | |
| 17 | ⚠️ Yes | |
Read the calendar of a team. | 2 | No |
Outlook contacts. The default Contacts folder.
Preset | Use it to | Tools | Admin consent |
|---|---|---|---|
Read your contacts. | 2 | No | |
Create and change contacts. | 4 | No |
SharePoint and OneDrive. Files, folders, sharing, and sites.
Preset | Use it to | Tools | Admin consent |
|---|---|---|---|
Find files and list folders. | 3 | ⚠️ Yes | |
| 4 | ⚠️ Yes | |
Create, rename, move, copy, and delete files and folders. | 11 | ⚠️ Yes | |
| 13 | ⚠️ Yes | |
| 5 | ⚠️ Yes |
OneNote. Notebooks, sections, and pages.
Preset | Use it to | Tools | Admin consent |
|---|---|---|---|
Read notebooks, sections, and pages. | 8 | No | |
Create, edit, and copy notebooks, sections, and pages. | 19 | No | |
| 20 | No |
How to read a preset section
Each preset section has the same parts, in this order.
Part | What it gives |
|---|---|
Header line | The count of tools, the admin consent rule, and the preset that this preset builds on. The count does not include |
You can | What a user can do with the preset. |
Tools | The tools of the preset. A preset that builds on another preset lists only the new tools. |
What it needs | The Graph permissions, the admin consent rule, and the user approval rule. |
The tables use these symbols.
Column | Symbol | Meaning |
|---|---|---|
Kind | 🟢 Read | The tool reads data. |
Kind | 🟠 Add | The tool adds data, or the change is safe to repeat. |
Kind | 🔴 Change | The tool changes or removes data. |
Admin consent | ⚠️ | An administrator must grant consent. |
User approval | ✋ | The tool asks the user every time. |
User approval | 🤝 | The tool asks the user in some cases only. The text next to the symbol gives the case. |
User approval | — | The tool never asks the user. |
Two facts about these columns:
The Kind column is a hint to the calling client. It does not control access to the tool.
A tool that acts on things that belong to other people asks the user to approve first. The question shows what will happen. If the user declines, the tool changes nothing.
The Kind hint also sets the error text that the model gets when Microsoft 365 fails or does not answer. For a change that is not safe to repeat, the text tells the model to make sure that the change is not already there. If a tool of the deployment can show the change, the text names that tool. If not, the text tells the model to ask the user.
Teams presets
Chats, channels, meetings, transcripts, and the files of a channel.
teams
12 tools · Admin consent: ⚠️ required
You can
Find a chat, and read its newest messages and members.
Walk the channels of a team, and read the posts and replies of a channel.
Search every Teams message that you can see.
Read the transcript of a meeting, and see whether a recording exists.
Note: This preset holds every Teams tool of the Read kind, except teams_get_channel_files_folder and teams_read_meeting.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists your chats, newest first. Shows the last message, the sender, and the read status. |
| 🟢 Read | — | Reads the newest messages of one chat. Can go further back with |
| 🟢 Read | — | Lists the members of one chat, with user id, name, email address, and roles. |
| 🟢 Read | — | Lists the teams that you are a member of. |
| 🟢 Read | — | Lists the channels of one team that you can access. |
| 🟢 Read | — | Reads the newest 50 posts of one channel, with their replies. |
| 🟢 Read | — | Reads up to 50 replies to one channel post, oldest first. |
| 🟢 Read | — | Searches the text of every chat and channel message that you can see. |
| 🟢 Read | — | Reads one message in full, from a handle that another tool gave. |
| 🟢 Read | — | Says whether a meeting has a transcript. Gives a handle for each transcript. |
| 🟢 Read | — | Reads one page of a transcript, as timestamped turns with the speaker named. |
| 🟢 Read | — | Says whether a recording exists, how long it runs, and who can download it. Never returns the video. |
What it needs
Graph permissions (8):
Channel.ReadBasic.All,ChannelMessage.Read.All,Chat.Read,OnlineMeetingRecording.Read.All,OnlineMeetingTranscript.Read.All,OnlineMeetings.Read,Team.ReadBasic.All,User.ReadAdmin consent: ⚠️ Required for
ChannelMessage.Read.All,OnlineMeetingRecording.Read.All,OnlineMeetingTranscript.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
teams-chat
2 tools · Admin consent: not required
You can
List your Teams chats.
List the members of one chat.
Note: This preset cannot read a chat message.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists your chats, newest first. Shows the last message, the sender, and the read status. |
| 🟢 Read | — | Lists the members of one chat, with user id, name, email address, and roles. |
What it needs
Graph permissions (2):
Chat.Read,User.ReadAdmin consent: Not required.
User approval: None. No tool of this preset asks the user.
teams-messages
5 tools · Admin consent: ⚠️ required
You can
Search for a message anywhere, and read it in full.
List the newest messages of a chat.
Read the replies to a channel post.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists your chats, newest first. Shows the last message, the sender, and the read status. |
| 🟢 Read | — | Reads the newest messages of one chat. Can go further back with |
| 🟢 Read | — | Reads up to 50 replies to one channel post, oldest first. |
| 🟢 Read | — | Searches the text of every chat and channel message that you can see. |
| 🟢 Read | — | Reads one message in full, from a handle that another tool gave. |
What it needs
Graph permissions (3):
ChannelMessage.Read.All,Chat.Read,User.ReadAdmin consent: ⚠️ Required for
ChannelMessage.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
teams-channels
4 tools · Admin consent: ⚠️ required
You can
List your teams and their channels.
Read the posts in one channel.
Read the replies to one post.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists the teams that you are a member of. |
| 🟢 Read | — | Lists the channels of one team that you can access. |
| 🟢 Read | — | Reads the newest 50 posts of one channel, with their replies. |
| 🟢 Read | — | Reads up to 50 replies to one channel post, oldest first. |
What it needs
Graph permissions (4):
Channel.ReadBasic.All,ChannelMessage.Read.All,Team.ReadBasic.All,User.ReadAdmin consent: ⚠️ Required for
ChannelMessage.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
teams-transcripts
3 tools · Admin consent: ⚠️ required
You can
Find a meeting from its chat.
See whether the meeting has a transcript.
Read the transcript, one page at a time.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists your chats, newest first. Shows the last message, the sender, and the read status. |
| 🟢 Read | — | Says whether a meeting has a transcript. Gives a handle for each transcript. |
| 🟢 Read | — | Reads one page of a transcript, as timestamped turns with the speaker named. |
What it needs
Graph permissions (4):
Chat.Read,OnlineMeetingTranscript.Read.All,OnlineMeetings.Read,User.ReadAdmin consent: ⚠️ Required for
OnlineMeetingTranscript.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
teams-recordings
2 tools · Admin consent: ⚠️ required
You can
Find a meeting from its chat.
See whether a recording exists, how long it runs, and who can download it.
Note: The preset never returns the video.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists your chats, newest first. Shows the last message, the sender, and the read status. |
| 🟢 Read | — | Says whether a recording exists, how long it runs, and who can download it. Never returns the video. |
What it needs
Graph permissions (4):
Chat.Read,OnlineMeetingRecording.Read.All,OnlineMeetings.Read,User.ReadAdmin consent: ⚠️ Required for
OnlineMeetingRecording.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
teams-meetings
4 tools · Admin consent: ⚠️ required
You can
Find a meeting from its chat.
Read the transcript of the meeting.
See whether a recording exists, and who can download it.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists your chats, newest first. Shows the last message, the sender, and the read status. |
| 🟢 Read | — | Says whether a meeting has a transcript. Gives a handle for each transcript. |
| 🟢 Read | — | Reads one page of a transcript, as timestamped turns with the speaker named. |
| 🟢 Read | — | Says whether a recording exists, how long it runs, and who can download it. Never returns the video. |
What it needs
Graph permissions (5):
Chat.Read,OnlineMeetingRecording.Read.All,OnlineMeetingTranscript.Read.All,OnlineMeetings.Read,User.ReadAdmin consent: ⚠️ Required for
OnlineMeetingRecording.Read.All,OnlineMeetingTranscript.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
teams-write
8 tools · Admin consent: not required
You can
Find a chat or a channel.
Post a new message to a chat or to a channel, or reply in a thread.
Add or remove a reaction.
List the messages and the members of a chat.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists your chats, newest first. Shows the last message, the sender, and the read status. |
| 🟢 Read | — | Reads the newest messages of one chat. Can go further back with |
| 🟢 Read | — | Lists the members of one chat, with user id, name, email address, and roles. |
| 🟢 Read | — | Lists the teams that you are a member of. |
| 🟢 Read | — | Lists the channels of one team that you can access. |
| 🟠 Add | ✋ Always | Posts a plain-text message to a chat. Supports mentions, a subject, and an importance. |
| 🟠 Add | ✋ Always | Posts a message to a channel, or a reply in a thread. Supports mentions, a subject, and an importance. |
| 🔴 Change | ✋ Always | Adds or removes one reaction on a chat message, a channel post, or a reply. |
What it needs
Graph permissions (6):
Channel.ReadBasic.All,ChannelMessage.Send,Chat.Read,ChatMessage.Send,Team.ReadBasic.All,User.ReadAdmin consent: Not required.
User approval: Asks ✋ every time for
teams_send_chat_message,teams_send_channel_message,teams_react_to_message.
teams-write-files
13 tools · Admin consent: ⚠️ required · Builds on teams-write
You can
Do everything in
teams-write.Post a message with files that are already in SharePoint.
Find the file to attach, and list the drives that hold it.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | ✋ Always | Posts a message to a chat with files that are already in SharePoint. Uploads nothing. |
| 🟠 Add | ✋ Always | Posts a message to a channel with files that are already in SharePoint. Uploads nothing. |
| 🟢 Read | — | Searches the files and folders that you can see, across OneDrive and SharePoint. |
| 🟢 Read | — | Lists one level of one folder, sorted by name, date, or size. |
| 🟢 Read | — | Lists your drives, with a handle for each. |
What it needs
Graph permissions (7):
Channel.ReadBasic.All,ChannelMessage.Send,Chat.Read,ChatMessage.Send,Files.Read.All,Team.ReadBasic.All,User.ReadAdmin consent: ⚠️ Required for
Files.Read.All. A tenant administrator must grant consent before any user signs in.User approval: Asks ✋ every time for
teams_send_chat_message,teams_send_channel_message,teams_send_chat_message_with_files,teams_send_channel_message_with_files,teams_react_to_message.
teams-edit
12 tools · Admin consent: ⚠️ required · Builds on teams-write
You can
Do everything in
teams-write.Edit or delete a message that you sent.
Read the posts of a channel and the replies to a post, to find the message to change.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Reads the newest 50 posts of one channel, with their replies. |
| 🟢 Read | — | Reads up to 50 replies to one channel post, oldest first. |
| 🔴 Change | ✋ Always | Replaces the text of one message that you sent. |
| 🔴 Change | ✋ Always | Deletes one message that you sent. Teams shows it as deleted. This connector cannot restore it. |
What it needs
Graph permissions (9):
Channel.ReadBasic.All,ChannelMessage.Read.All,ChannelMessage.ReadWrite,ChannelMessage.Send,Chat.Read,Chat.ReadWrite,ChatMessage.Send,Team.ReadBasic.All,User.ReadAdmin consent: ⚠️ Required for
ChannelMessage.Read.All,ChannelMessage.ReadWrite. A tenant administrator must grant consent before any user signs in.User approval: Asks ✋ every time for
teams_send_chat_message,teams_send_channel_message,teams_react_to_message,teams_edit_message,teams_delete_message.
teams-meetings-write
6 tools · Admin consent: not required
You can
Find a meeting chat, and read one meeting with its attendance.
Create a Teams online meeting.
Change or delete a meeting that you organize.
List the members of a chat, to find the id of an attendee.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists your chats, newest first. Shows the last message, the sender, and the read status. |
| 🟢 Read | — | Lists the members of one chat, with user id, name, email address, and roles. |
| 🟢 Read | — | Reads one meeting and its attendance reports. Only the organizer gets attendance. |
| 🟠 Add | ✋ Always | Creates a Teams online meeting with the attendees that you name. It sends no invitation and uses no calendar. |
| 🔴 Change | ✋ Always | Changes the subject, the time, or the attendees of a meeting that you organize. |
| 🔴 Change | ✋ Always | Deletes a Teams online meeting that you organize. It never deletes a calendar event. |
What it needs
Graph permissions (5):
Chat.Read,OnlineMeetingArtifact.Read.All,OnlineMeetings.Read,OnlineMeetings.ReadWrite,User.ReadAdmin consent: Not required.
User approval: Asks ✋ every time for
teams_create_meeting,teams_update_meeting,teams_delete_meeting.
teams-chat-admin
6 tools · Admin consent: ⚠️ required · Builds on teams-chat
You can
Do everything in
teams-chat.Create a one-to-one chat or a group chat.
Add a member to a chat, or remove one.
Rename a group chat.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | ✋ Always | Creates a one-to-one chat or a group chat. It posts no message. |
| 🟠 Add | ✋ Always | Adds one person to a chat, with the |
| 🔴 Change | ✋ Always | Removes one member from a chat. Microsoft refuses this for a one-to-one chat. |
| 🔴 Change | ✋ Always | Changes the topic of a group chat. |
What it needs
Graph permissions (5):
Chat.Create,Chat.Read,Chat.ReadWrite,ChatMember.ReadWrite,User.ReadAdmin consent: ⚠️ Required for
ChatMember.ReadWrite. A tenant administrator must grant consent before any user signs in.User approval: Asks ✋ every time for
teams_create_chat,teams_add_chat_member,teams_remove_chat_member,teams_rename_chat.
teams-files
7 tools · Admin consent: ⚠️ required
You can
Find a channel, and the SharePoint folder that holds its files.
List that folder, and read one file.
Search for a file, and list your drives.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists the teams that you are a member of. |
| 🟢 Read | — | Lists the channels of one team that you can access. |
| 🟢 Read | — | Gives the SharePoint folder of one channel. It does not list the files. |
| 🟢 Read | — | Searches the files and folders that you can see, across OneDrive and SharePoint. |
| 🟢 Read | — | Lists one level of one folder, sorted by name, date, or size. |
| 🟢 Read | — | Lists your drives, with a handle for each. |
| 🟢 Read | — | Reads one file of 10 MB or less, in its original format or as PDF. |
What it needs
Graph permissions (4):
Channel.ReadBasic.All,Files.Read.All,Team.ReadBasic.All,User.ReadAdmin consent: ⚠️ Required for
Files.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
Outlook mail presets
Messages, folders, drafts, and sending.
outlook-read
10 tools · Admin consent: not required
You can
Find a message, and read it in full.
Walk the folder tree, list a folder, and read a whole thread.
List and read attachments.
Find the email address behind a name.
Read MailTips, and list the senders that have a fixed inbox tab.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Searches your mailbox, or a shared mailbox, with a KQL query. Filters by importance, flag, category, and attachments. |
| 🟢 Read | — | Reads one message in full. Lists its attachments and headers, but never their bytes. |
| 🟢 Read | — | Lists the attachments of one message, with name, size, and type. |
| 🟢 Read | — | Reads one mail attachment of 10 MB or less, with its real media type. |
| 🟢 Read | — | Lists one level of the mail folder tree, with a handle for each folder. |
| 🟢 Read | — | Finds the email address behind a display name. |
| 🟢 Read | — | Reads the messages of one conversation, with a short preview of each body. |
| 🟢 Read | — | Lists the newest messages of one folder. Filters by importance, flag, attachments, and category. |
| 🟢 Read | — | Reads the MailTips of recipients, for example an automatic reply or a full mailbox. Sends nothing. |
| 🟢 Read | — | Lists the senders that have a fixed inbox tab, Focused or Other. |
What it needs
Graph permissions (4):
Mail.Read,Mail.Read.Shared,People.Read,User.ReadAdmin consent: Not required.
User approval: None. No tool of this preset asks the user.
outlook-write
20 tools · Admin consent: not required · Builds on outlook-read
You can
Do everything in
outlook-read.Mark mail read, flag it, set its importance, and set its categories.
Move mail, and copy mail, between folders.
Create and rename mail folders.
Draft a new message, a reply, a reply to all, or a forward, and change a draft.
Set the inbox tab of a sender.
Note: This preset cannot send mail.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🔴 Change | 🤝 Shared mailbox | Sets the read status, the follow-up flag, the importance, and the categories of messages. |
| 🔴 Change | 🤝 Shared mailbox | Moves messages into another folder. Moving to Deleted Items is the only way to erase mail. |
| 🟠 Add | 🤝 Shared mailbox | Copies messages into another folder. The original stays. |
| 🟠 Add | 🤝 Shared mailbox | Creates one mail folder, at the top level or inside another folder. |
| 🟠 Add | 🤝 Shared mailbox | Renames one mail folder. Refused for a folder that every mailbox has, such as Inbox. |
| 🟠 Add | — | Sets the inbox tab, Focused or Other, for all future mail from one sender. |
| 🟠 Add | 🤝 Shared mailbox | Composes a new message into Drafts. It cannot send it and cannot add files. |
| 🟠 Add | 🤝 Shared mailbox | Composes a reply or a forward into Drafts. A forward keeps the attachments of the original. |
| 🟠 Add | 🤝 Shared mailbox | Composes a reply to everyone on one message into Drafts. |
| 🔴 Change | 🤝 Shared mailbox | Changes the subject, text, recipients, importance, or categories of one draft. |
What it needs
Graph permissions (6):
Mail.Read,Mail.Read.Shared,Mail.ReadWrite,Mail.ReadWrite.Shared,People.Read,User.ReadAdmin consent: Not required.
User approval: Asks 🤝 in some cases for
outlook_mark_mail,outlook_move_mail,outlook_copy_mail,outlook_create_folder,outlook_rename_folder,outlook_draft_mail,outlook_draft_reply,outlook_draft_reply_all,outlook_update_draft.
outlook-delete
21 tools · Admin consent: not required · Builds on outlook-write
You can
Do everything in
outlook-write.Move a mail folder, with all of its items and subfolders, to Deleted Items.
Note: Opt-in preset. No other preset holds this tool.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🔴 Change | ✋ Always | Moves one mail folder, with its items and subfolders, to Deleted Items. Never erases anything. |
What it needs
Graph permissions (6):
Mail.Read,Mail.Read.Shared,Mail.ReadWrite,Mail.ReadWrite.Shared,People.Read,User.ReadAdmin consent: Not required.
User approval: Asks ✋ every time for
outlook_delete_folder. Asks 🤝 in some cases foroutlook_mark_mail,outlook_move_mail,outlook_copy_mail,outlook_create_folder,outlook_rename_folder,outlook_draft_mail,outlook_draft_reply,outlook_draft_reply_all,outlook_update_draft.
outlook-send
21 tools · Admin consent: not required · Builds on outlook-write
You can
Do everything in
outlook-write.Send a draft, after the user approves the send.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🔴 Change | ✋ Always | Sends one draft. This is the only tool that puts mail on the wire. |
What it needs
Graph permissions (9):
Mail.Read,Mail.Read.Shared,Mail.ReadBasic,Mail.ReadWrite,Mail.ReadWrite.Shared,Mail.Send,Mail.Send.Shared,People.Read,User.ReadAdmin consent: Not required.
User approval: Asks ✋ every time for
outlook_send_draft. Asks 🤝 in some cases foroutlook_mark_mail,outlook_move_mail,outlook_copy_mail,outlook_create_folder,outlook_rename_folder,outlook_draft_mail,outlook_draft_reply,outlook_draft_reply_all,outlook_update_draft.
Outlook mailbox settings presets
Inbox rules, the automatic reply, and categories.
outlook-mailbox
3 tools · Admin consent: not required
You can
See the rules and the automatic reply that act on the mailbox.
List every category, with its name and color.
List the time zones that the mailbox supports.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Reads the inbox rules, the automatic reply, the category names, the time zone, and the working hours. |
| 🟢 Read | — | Lists every category of the mailbox, with its name and color. |
| 🟢 Read | — | Lists the time zones that the mailbox server supports. |
What it needs
Graph permissions (2):
MailboxSettings.Read,User.ReadAdmin consent: Not required.
User approval: None. No tool of this preset asks the user.
outlook-automate
6 tools · Admin consent: not required · Builds on outlook-mailbox
You can
Do everything in
outlook-mailbox.Turn the automatic reply on for a fixed period, or off.
Turn one inbox rule off.
Create a category.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | 🤝 When it turns the reply on | Turns the out-of-office reply on for a fixed period, or off. It never runs with no end date. |
| 🟠 Add | — | Turns one inbox rule off. It cannot turn a rule on or create one. |
| 🟠 Add | — | Creates one category, with a name and a color. |
What it needs
Graph permissions (3):
MailboxSettings.Read,MailboxSettings.ReadWrite,User.ReadAdmin consent: Not required.
User approval: Asks 🤝 in some cases for
outlook_set_automatic_reply.
outlook-rules
9 tools · Admin consent: not required · Builds on outlook-automate
You can
Do everything in
outlook-automate.Create, change, and erase an inbox rule.
Note: A rule can forward or redirect mail to other people. The tools ask the user to approve such a rule, and every erasure. Opt-in preset.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | 🤝 A forward or redirect rule | Creates one inbox rule. The delete action of a rule moves mail to Deleted Items. |
| 🟠 Add | 🤝 An enabled forward or redirect rule | Changes the name, order, state, conditions, exceptions, or actions of one inbox rule. |
| 🔴 Change | ✋ Always | Erases one inbox rule. This connector cannot restore it. No mail is erased. |
What it needs
Graph permissions (4):
Mail.ReadBasic,MailboxSettings.Read,MailboxSettings.ReadWrite,User.ReadAdmin consent: Not required.
User approval: Asks ✋ every time for
outlook_delete_mail_rule. Asks 🤝 in some cases foroutlook_set_automatic_reply,outlook_create_mail_rule,outlook_update_mail_rule.
Outlook calendar presets
Calendars, events, availability, rooms, and sharing.
outlook-calendar
12 tools · Admin consent: not required
You can
List every calendar that the mailbox reaches, and read what sits on one.
Check free time, and ask for suggested meeting times.
List the dates of a series, the reminders, and the calendar groups.
See who can see a calendar.
List and read the attachments of an event.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists the time zones that the mailbox server supports. |
| 🟢 Read | — | Lists every calendar that the mailbox reaches, with a handle for each. |
| 🟢 Read | — | Lists your calendar groups, with the calendars in each group. |
| 🟢 Read | — | Lists the people who can see one calendar that you own, with their roles. |
| 🟢 Read | — | Lists the occurrences on one calendar over a time window. |
| 🟢 Read | — | Lists the dates of one recurring series over a time window. |
| 🟢 Read | — | Reads one event in full, with every attendee and each reply. |
| 🟢 Read | — | Lists the attachments of one event, with name, size, and type. |
| 🟢 Read | — | Reads one event attachment of 10 MB or less, with its real media type. |
| 🟢 Read | — | Lists your event reminders over a time window. |
| 🟢 Read | — | Reads free and busy status, and working hours, of one or more mailboxes. Books nothing. |
| 🟢 Read | — | Asks Microsoft for meeting times that fit you and the attendees. Books nothing. |
What it needs
Graph permissions (4):
Calendars.Read,Calendars.Read.Shared,Calendars.ReadBasic,User.ReadAdmin consent: Not required.
User approval: None. No tool of this preset asks the user.
outlook-calendar-write
16 tools · Admin consent: not required · Builds on outlook-calendar
You can
Do everything in
outlook-calendar.Create an event, with attendees, rooms, or a series.
Change an event that you organize, or add a Teams meeting to it.
Cancel an event that you organize.
Accept, decline, or tentatively accept an invitation.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | 🤝 The event has attendees, a room, or a location | Creates one event on your own calendar and sends the invitations. Supports series and rooms. |
| 🟠 Add | 🤝 The event has attendees, or the change sets a location | Changes one event that you organize: time, location, body, attendees, and more. |
| 🔴 Change | 🤝 The event has attendees | Cancels one event that you organize. Mails a cancellation to the attendees. |
| 🟠 Add | 🤝 When it sends a response | Accepts, declines, or tentatively accepts an invitation that you received. |
What it needs
Graph permissions (5):
Calendars.Read,Calendars.Read.Shared,Calendars.ReadBasic,Calendars.ReadWrite,User.ReadAdmin consent: Not required.
User approval: Asks 🤝 in some cases for
outlook_create_event,outlook_update_event,outlook_cancel_event,outlook_respond_to_invite.
outlook-calendar-manage
21 tools · Admin consent: not required · Builds on outlook-calendar-write
You can
Do everything in
outlook-calendar-write.Forward an event.
Remove an event from its calendar.
Share a calendar, and stop a share.
Remove an empty calendar.
Note: Opt-in preset. No other preset holds these tools.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | ✋ Always | Forwards the meeting request of one event to new recipients. This connector cannot recall it. |
| 🔴 Change | ✋ Always | Removes one event that you organize from its calendar. Attendees get a cancellation. |
| 🟠 Add | ✋ Always | Shares one of your calendars with one person, with a role. |
| 🔴 Change | ✋ Always | Stops one share of a calendar of yours, also the share of a delegate. |
| 🔴 Change | ✋ Always | Removes one calendar that you own, only if it holds no event. |
What it needs
Graph permissions (5):
Calendars.Read,Calendars.Read.Shared,Calendars.ReadBasic,Calendars.ReadWrite,User.ReadAdmin consent: Not required.
User approval: Asks ✋ every time for
outlook_forward_event,outlook_delete_event,outlook_share_calendar,outlook_unshare_calendar,outlook_delete_calendar. Asks 🤝 in some cases foroutlook_create_event,outlook_update_event,outlook_cancel_event,outlook_respond_to_invite.
outlook-calendar-delegate
17 tools · Admin consent: not required · Builds on outlook-calendar-write
You can
Do everything in
outlook-calendar-write.Create an event on a calendar that another person delegated to you.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | ✋ Always | Creates an event on a calendar that another person delegated, sent under that person's name. |
What it needs
Graph permissions (6):
Calendars.Read,Calendars.Read.Shared,Calendars.ReadBasic,Calendars.ReadWrite,Calendars.ReadWrite.Shared,User.ReadAdmin consent: Not required.
User approval: Asks ✋ every time for
outlook_create_event_on_behalf. Asks 🤝 in some cases foroutlook_create_event,outlook_update_event,outlook_cancel_event,outlook_respond_to_invite.
outlook-calendar-rooms
17 tools · Admin consent: ⚠️ required · Builds on outlook-calendar-write
You can
Do everything in
outlook-calendar-write.Find a meeting room, with its address, capacity, and equipment.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists the meeting rooms of the organization, with address, capacity, floor, and equipment. |
What it needs
Graph permissions (6):
Calendars.Read,Calendars.Read.Shared,Calendars.ReadBasic,Calendars.ReadWrite,Place.Read.All,User.ReadAdmin consent: ⚠️ Required for
Place.Read.All. A tenant administrator must grant consent before any user signs in.User approval: Asks 🤝 in some cases for
outlook_create_event,outlook_update_event,outlook_cancel_event,outlook_respond_to_invite.
outlook-group-calendar
2 tools · Admin consent: not required
You can
Find a team.
List the events on the calendar of the Microsoft 365 group of that team.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists the teams that you are a member of. |
| 🟢 Read | — | Lists the events on the calendar of one Microsoft 365 group over a time window. |
What it needs
Graph permissions (3):
Calendars.Read,Team.ReadBasic.All,User.ReadAdmin consent: Not required.
User approval: None. No tool of this preset asks the user.
Outlook contacts presets
The default Contacts folder.
outlook-contacts
2 tools · Admin consent: not required
You can
List the contacts in your default Contacts folder.
Read one contact in full.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists the contacts in your default Contacts folder. Can filter by one email address. |
| 🟢 Read | — | Reads one contact in full, including postal addresses, birthday, and notes. |
What it needs
Graph permissions (2):
Contacts.Read,User.ReadAdmin consent: Not required.
User approval: None. No tool of this preset asks the user.
outlook-contacts-write
4 tools · Admin consent: not required · Builds on outlook-contacts
You can
Do everything in
outlook-contacts.Create a contact.
Change a contact.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | — | Creates one contact with names, email addresses, phone numbers, company, and job title. |
| 🔴 Change | — | Changes only the given fields of one contact. Cannot clear a name, company, job title, or mobile number. |
What it needs
Graph permissions (3):
Contacts.Read,Contacts.ReadWrite,User.ReadAdmin consent: Not required.
User approval: None. No tool of this preset asks the user.
SharePoint and OneDrive presets
Files, folders, sharing, and sites.
sharepoint-search
3 tools · Admin consent: ⚠️ required
You can
Find a file in OneDrive or on a SharePoint site.
List one level of a folder.
List your drives.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Searches the files and folders that you can see, across OneDrive and SharePoint. |
| 🟢 Read | — | Lists one level of one folder, sorted by name, date, or size. |
| 🟢 Read | — | Lists your drives, with a handle for each. |
What it needs
Graph permissions (2):
Files.Read.All,User.ReadAdmin consent: ⚠️ Required for
Files.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
sharepoint-read
4 tools · Admin consent: ⚠️ required · Builds on sharepoint-search
You can
Do everything in
sharepoint-search.Read one file, in its own format or as PDF.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Reads one file of 10 MB or less, in its original format or as PDF. |
What it needs
Graph permissions (2):
Files.Read.All,User.ReadAdmin consent: ⚠️ Required for
Files.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
sharepoint-write
11 tools · Admin consent: ⚠️ required · Builds on sharepoint-read
You can
Do everything in
sharepoint-read.Find the item behind a sharing link.
Create a folder or a text file.
Rename, move, and copy an item.
Move an item to the recycle bin.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Finds the file or folder that a sharing link opens. Changes nothing. |
| 🟠 Add | ✋ Always | Creates one empty folder inside a folder. |
| 🟠 Add | ✋ Always | Creates one new text file. It cannot replace a file or upload a binary file. |
| 🔴 Change | ✋ Always | Renames one file or folder. The item stays in its folder. |
| 🔴 Change | ✋ Always | Moves one file or folder into another folder of the same drive. |
| 🟠 Add | ✋ Always | Starts a copy of one file or folder, in the same drive or another drive. |
| 🔴 Change | ✋ Always | Moves one file or folder to the recycle bin. Never erases it permanently. |
What it needs
Graph permissions (3):
Files.Read.All,Files.ReadWrite.All,User.ReadAdmin consent: ⚠️ Required for
Files.Read.All,Files.ReadWrite.All. A tenant administrator must grant consent before any user signs in.User approval: Asks ✋ every time for
sharepoint_create_folder,sharepoint_create_text_file,sharepoint_rename_item,sharepoint_move_item,sharepoint_copy_item,sharepoint_delete_item.
sharepoint-share
13 tools · Admin consent: ⚠️ required · Builds on sharepoint-write
You can
Do everything in
sharepoint-write.Create a sharing link to an item.
Give the people that you name access to an item.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | ✋ Always | Creates a sharing link to one file or folder. Sends the link to nobody. |
| 🟠 Add | ✋ Always | Gives read or edit access to one file or folder to the people that you name. No tool takes access back. |
What it needs
Graph permissions (3):
Files.Read.All,Files.ReadWrite.All,User.ReadAdmin consent: ⚠️ Required for
Files.Read.All,Files.ReadWrite.All. A tenant administrator must grant consent before any user signs in.User approval: Asks ✋ every time for
sharepoint_create_folder,sharepoint_create_text_file,sharepoint_rename_item,sharepoint_move_item,sharepoint_copy_item,sharepoint_delete_item,sharepoint_create_share_link,sharepoint_invite.
sharepoint-sites
5 tools · Admin consent: ⚠️ required · Builds on sharepoint-read
You can
Do everything in
sharepoint-read.Find a SharePoint site by free text.
Note: This preset adds the permission Sites.Read.All. No other sharepoint- preset needs it.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Finds SharePoint sites by free text. It does not find files. |
What it needs
Graph permissions (3):
Files.Read.All,Sites.Read.All,User.ReadAdmin consent: ⚠️ Required for
Files.Read.All,Sites.Read.All. A tenant administrator must grant consent before any user signs in.User approval: None. No tool of this preset asks the user.
OneNote presets
Notebooks, sections, and pages.
onenote-read
8 tools · Admin consent: not required
You can
List notebooks, sections, and pages.
Read or preview a page.
Open a notebook from its web address.
Fetch an image or a file that a page embeds.
Tools
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟢 Read | — | Lists the notebooks that you own or that are shared with you, with their sections. |
| 🟢 Read | — | Finds pages by title, across notebooks or in one section. It does not search page text. |
| 🟢 Read | — | Reads the HTML of one page, as Microsoft stores it. |
| 🟢 Read | — | Gives a snippet of up to 300 characters of one page, and a preview image address. |
| 🟢 Read | — | Fetches one image or file that a page embeds. |
| 🟢 Read | — | Turns a OneNote web address into a notebook handle. |
| 🟢 Read | — | Lists the notebooks that you opened recently. |
| 🟢 Read | — | Lists the sections and section groups directly under a notebook or section group. |
What it needs
Graph permissions (2):
Notes.Read,User.ReadAdmin consent: Not required.
User approval: None. No tool of this preset asks the user.
onenote-write
19 tools · Admin consent: not required · Builds on onenote-read
You can
Do everything in
onenote-read.Create notebooks, sections, section groups, and pages.
Add to a page, edit it, and rename it.
Copy a page, a section, or a notebook, and poll the copy.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🟠 Add | 🤝 Shared notebook | Writes a new page into a section. No attachments or images. |
| 🟠 Add | 🤝 Shared notebook | Adds HTML to the end of one page. It cannot edit or erase existing content. |
| 🟠 Add | 🤝 A group or site notebook | Creates an empty notebook, for you, a Microsoft 365 group, or a SharePoint site. |
| 🟠 Add | 🤝 Shared notebook | Creates an empty section under a notebook or section group. |
| 🟠 Add | 🤝 Shared notebook | Creates an empty section group under a notebook or section group. |
| 🔴 Change | 🤝 Shared notebook, or always for a replace | Adds content next to an element of one page, or replaces one, with 1 to 20 commands. |
| 🔴 Change | 🤝 Shared notebook | Changes the title of one page. |
| 🟠 Add | 🤝 Shared notebook | Starts a copy of one page into another section. |
| 🟠 Add | 🤝 Shared notebook | Starts a copy of one section into another notebook or section group. |
| 🟠 Add | 🤝 A copy into a group | Starts a copy of a whole notebook into your OneDrive or a Microsoft 365 group. |
| 🟢 Read | — | Polls a copy operation for its result. |
What it needs
Graph permissions (4):
Notes.Create,Notes.Read,Notes.ReadWrite,User.ReadAdmin consent: Not required.
User approval: Asks 🤝 in some cases for
onenote_create_page,onenote_append_to_page,onenote_create_notebook,onenote_create_section,onenote_create_section_group,onenote_edit_page,onenote_rename_page,onenote_copy_page,onenote_copy_section,onenote_copy_notebook.
onenote-delete
20 tools · Admin consent: not required · Builds on onenote-write
You can
Do everything in
onenote-write.Erase one page outright.
Note: Opt-in preset. OneNote has no recycle bin, so an erased page is gone.
Tools added by this preset
Tool | Kind | User approval | What it does |
|---|---|---|---|
| 🔴 Change | ✋ Always | Erases one page outright. OneNote has no recycle bin. |
What it needs
Graph permissions (4):
Notes.Create,Notes.Read,Notes.ReadWrite,User.ReadAdmin consent: Not required.
User approval: Asks ✋ every time for
onenote_delete_page. Asks 🤝 in some cases foronenote_create_page,onenote_append_to_page,onenote_create_notebook,onenote_create_section,onenote_create_section_group,onenote_edit_page,onenote_rename_page,onenote_copy_page,onenote_copy_section,onenote_copy_notebook.
Permissions
Each tool needs one or more Microsoft Graph permissions. The preset sections and the tool reference name them. Microsoft's own reference lists what each permission grants.
Sign-in asks for permissions in this way:
A deployment asks for the union of the permissions of every active tool.
It asks one time, at sign-in. It never asks again for each call.
It never asks later for a permission that no tool requested at sign-in.
After sign-in, each call uses the one permission that it needs, for the signed-in user.
For the exact permission list of a deployment, run curl $PUBLIC_BASE_URL/manifest. For a deployment with the enabled key, merge the permissions of the named tools.
Admin consent
Some permissions need a tenant administrator to grant them before any user in that tenant can sign in. The preset sections and the tool reference mark these permissions with ⚠️. The marks show the rule of this deployment. For some permissions, this rule differs from the default consent rule that Microsoft lists. Microsoft's own overview explains this step in more detail.
Two tenant roles matter here:
Tenant D, or Tenant U. The tenant that owns the Entra App registration. Unique supports both: a customer's own dedicated tenant (Tenant D), or Unique's own shared tenant (Tenant U).
Tenant C. The customer's own tenant. It is always external to Tenant D or Tenant U, and it is where the customer's real users sign in.
This deployment always sets sign_in_audience to AzureADMultipleOrgs. A user from any tenant can then sign in, not only the tenant that owns the App registration.
A customer's own administrator, in Tenant C, must always grant admin consent:
Terraform's own grant, through the
service_principal_configurationinput, only ever covers the tenant that owns the App registration. It cannot reach Tenant C.To grant it, Tenant C's own administrator uses the Entra portal, or the
/admin/consentendpoint of the deployed server. The module's ownadmin_consent_urloutput gives the same link and works for any tenant.GET /admin/consentneeds no sign-in. It redirects to the Microsoft admin-consent page for this deployment's ownENTRA_TENANT_ID, client, and tool permissions. The redirect target isADMIN_CONSENT_REDIRECT_URI, which defaults to the defaultadmin_consent_redirect_uriof the module. If you change it in the module, change it here to the same value.The administrator sees the result as a new Enterprise Application in Tenant C. This is separate from the App registration, which stays in Tenant D or Tenant U.
Deployment
A deployment sets its tool surface under mcpConfig.tools, in the Helm chart's values file. It sets exactly one of two keys, preset or enabled. It never sets both, and it never leaves both unset.
mcpConfig:
tools:
preset: teams # or: enabled: get_me,teams_list_chatsThe preset key names one of the 36 presets in the preset index. The enabled key names an exact, comma-separated list of tool names instead. A deployment that needs a mix that no preset covers uses enabled, and names every wanted tool. Granting admin consent is a separate step, covered in Admin consent.
Terraform (in another repository) writes the Entra application registration. Argo (in another repository) writes the deployed pod's tool selection, through the chart values in this section. No automatic step compares these two. A mismatch is possible, and it produces no warning. A registration narrower than the pod fails every sign-in at the authorize step, with nothing in the pod's own logs to explain why.
The check is manual, and it is repeatable:
Run
curl $PUBLIC_BASE_URL/manifestagainst the deployed pod. It answers with the resolved tool selection and the exact permission list, in the tool registry's order.Run
terraform output tool_surfacein the Terraform module. It answers with the same shape: the preset, the tools, the permissions, and which permissions need admin consent, in the same order.Compare the two permission lists, line for line.
Two things can go wrong:
If the pod's list names a permission that the Terraform output does not, every sign-in fails at the authorize step.
If the Terraform output names more permissions than the pod uses, the tenant carries standing access that no tool spends.
Reference: every tool
This reference lists all 121 tools. Use it to build an enabled list, or to find the permissions of one tool.
Identity
Tool | Kind | Graph permissions | Admin consent | User approval |
|---|---|---|---|---|
| 🟢 Read |
| No | — |
Microsoft Teams
Tool | Kind | Graph permissions | Admin consent | User approval |
|---|---|---|---|---|
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟠 Write, adds |
| No | ✋ Always |
| 🟠 Write, adds |
| No | ✋ Always |
| 🟠 Write, adds |
| ⚠️ Yes | ✋ Always |
| 🟠 Write, adds |
| ⚠️ Yes | ✋ Always |
| 🔴 Write, changes or removes |
| No | ✋ Always |
| 🔴 Write, changes or removes, safe to repeat |
| ⚠️ Yes | ✋ Always |
| 🔴 Write, changes or removes |
| ⚠️ Yes | ✋ Always |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| No | — |
| 🟠 Write, safe to repeat |
| No | ✋ Always |
| 🔴 Write, changes or removes, safe to repeat |
| No | ✋ Always |
| 🔴 Write, changes or removes |
| No | ✋ Always |
| 🟠 Write, adds |
| No | ✋ Always |
| 🟠 Write, adds |
| ⚠️ Yes | ✋ Always |
| 🔴 Write, changes or removes |
| ⚠️ Yes | ✋ Always |
| 🔴 Write, changes or removes, safe to repeat |
| No | ✋ Always |
Outlook mail
Tool | Kind | Graph permissions | Admin consent | User approval |
|---|---|---|---|---|
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🔴 Write, changes or removes, safe to repeat |
| No | 🤝 Shared mailbox |
| 🔴 Write, changes or removes |
| No | 🤝 Shared mailbox |
| 🟠 Write, adds |
| No | 🤝 Shared mailbox |
| 🟠 Write, adds |
| No | 🤝 Shared mailbox |
| 🟠 Write, safe to repeat |
| No | 🤝 Shared mailbox |
| 🔴 Write, changes or removes |
| No | ✋ Always |
| 🟠 Write, safe to repeat |
| No | — |
| 🟠 Write, adds |
| No | 🤝 Shared mailbox |
| 🟠 Write, adds |
| No | 🤝 Shared mailbox |
| 🟠 Write, adds |
| No | 🤝 Shared mailbox |
| 🔴 Write, changes or removes, safe to repeat |
| No | 🤝 Shared mailbox |
| 🔴 Write, changes or removes |
| No | ✋ Always |
| 🟠 Write, safe to repeat |
| No | 🤝 When it turns the reply on |
| 🟠 Write, safe to repeat |
| No | — |
| 🟠 Write, adds |
| No | 🤝 A forward or redirect rule |
| 🟠 Write, safe to repeat |
| No | 🤝 An enabled forward or redirect rule |
| 🔴 Write, changes or removes, safe to repeat |
| No | ✋ Always |
| 🟢 Read |
| No | — |
| 🟠 Write, adds |
| No | — |
| 🟢 Read |
| No | — |
Outlook calendar
Tool | Kind | Graph permissions | Admin consent | User approval |
|---|---|---|---|---|
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟠 Write, adds |
| No | 🤝 The event has attendees, a room, or a location |
| 🟠 Write, adds |
| No | ✋ Always |
| 🟠 Write, adds |
| No | 🤝 The event has attendees, or the change sets a location |
| 🟠 Write, adds |
| No | ✋ Always |
| 🔴 Write, changes or removes |
| No | 🤝 The event has attendees |
| 🔴 Write, changes or removes, safe to repeat |
| No | ✋ Always |
| 🟠 Write, adds |
| No | 🤝 When it sends a response |
| 🟠 Write, adds |
| No | ✋ Always |
| 🔴 Write, changes or removes, safe to repeat |
| No | ✋ Always |
| 🔴 Write, changes or removes, safe to repeat |
| No | ✋ Always |
Outlook contacts
Tool | Kind | Graph permissions | Admin consent | User approval |
|---|---|---|---|---|
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟠 Write, adds |
| No | — |
| 🔴 Write, changes or removes, safe to repeat |
| No | — |
SharePoint and OneDrive
Tool | Kind | Graph permissions | Admin consent | User approval |
|---|---|---|---|---|
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟢 Read |
| ⚠️ Yes | — |
| 🟠 Write, adds |
| ⚠️ Yes | ✋ Always |
| 🟠 Write, adds |
| ⚠️ Yes | ✋ Always |
| 🔴 Write, changes or removes, safe to repeat |
| ⚠️ Yes | ✋ Always |
| 🔴 Write, changes or removes, safe to repeat |
| ⚠️ Yes | ✋ Always |
| 🟠 Write, adds |
| ⚠️ Yes | ✋ Always |
| 🔴 Write, changes or removes, safe to repeat |
| ⚠️ Yes | ✋ Always |
| 🟠 Write, safe to repeat |
| ⚠️ Yes | ✋ Always |
| 🟠 Write, adds |
| ⚠️ Yes | ✋ Always |
| 🟢 Read |
| ⚠️ Yes | — |
OneNote
Tool | Kind | Graph permissions | Admin consent | User approval |
|---|---|---|---|---|
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟠 Write, adds |
| No | 🤝 Shared notebook |
| 🟠 Write, adds |
| No | 🤝 Shared notebook |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟢 Read |
| No | — |
| 🟠 Write, adds |
| No | 🤝 A group or site notebook |
| 🟠 Write, adds |
| No | 🤝 Shared notebook |
| 🟠 Write, adds |
| No | 🤝 Shared notebook |
| 🔴 Write, changes or removes |
| No | 🤝 Shared notebook, or always for a replace |
| 🔴 Write, changes or removes, safe to repeat |
| No | 🤝 Shared notebook |
| 🟠 Write, adds |
| No | 🤝 Shared notebook |
| 🟠 Write, adds |
| No | 🤝 Shared notebook |
| 🟠 Write, adds |
| No | 🤝 A copy into a group |
| 🟢 Read |
| No | — |
| 🔴 Write, changes or removes, safe to repeat |
| No | ✋ Always |
Limitations
office-365-mcp replaces two other services: teams-mcp and outlook-semantic-mcp. The tables below name what a user gains and loses against each service. They list only differences that change the work of a user. Neither service has a formal deprecation date yet, and both remain in active development. This section compares the current state. It is not a finished handover.
Every call of office-365-mcp goes to Microsoft Graph at once. The server keeps no copy of mail or messages. It stores only an OAuth token.
Compared to teams-mcp
Only in teams-mcp
Capability | teams-mcp | office-365-mcp |
|---|---|---|
Capture a transcript or a recording into the knowledge base of Unique | Yes, as an opt-in. It needs a database, a message queue, and a public webhook. | No |
Only in office-365-mcp
Capability | office-365-mcp | teams-mcp |
|---|---|---|
Read a transcript in the chat | Yes, live. Microsoft erases a one-off transcript after about 60 days. | No, ingest only |
Read the data of a recording, or the attendance of a meeting | Yes. A recording gives metadata only. Only the organizer reads attendance. | No |
Read the replies in a channel thread | Yes, 50 replies of one post in one call | No, root posts only |
Read a chat further back in time | Yes, with | No, the newest 50 messages only |
Filter the list of chats by type or by topic | Yes | No |
Send a message with a mention, a subject, an importance, or a thread reply | Yes | No, plain text only |
Send a message with a file | Yes, if the file is already in SharePoint | No |
Edit, delete, or react to a message | Yes, edit and delete for own messages only | No |
Create a chat, change its members, or rename it | Yes | No |
Create, change, or delete a Teams meeting | Yes | No |
Find the SharePoint folder of a channel | Yes | No |
Different in both
Topic | office-365-mcp | teams-mcp |
|---|---|---|
Approval before a send | Yes, every time | No |
What the server needs | A token store only | A database and a message queue. Ingestion also needs a knowledge base and a public webhook. |
Compared to outlook-semantic-mcp
Only in outlook-semantic-mcp
Capability | outlook-semantic-mcp | office-365-mcp |
|---|---|---|
Search mail by meaning, ranked by relevance | Yes, in the mode that ingests mail | No, keyword search only. Microsoft sets the order of the results. |
Search the words inside an attachment | Yes, for PDF, Office, text, HTML, and Markdown files | No, the file name only |
Add a file to a draft | Yes, a file of the knowledge base, or inline content | No, the user adds it in Outlook |
Search several mailboxes in one call | Yes, the own mailbox and the delegated ones | No, one mailbox in each call |
Only in office-365-mcp
Capability | office-365-mcp | outlook-semantic-mcp |
|---|---|---|
Send a message | Yes, after the user approves it | No, draft only |
Reply, forward, or edit a draft | Yes | No, a new draft or a reply to all only |
Read an attachment file | Yes, a file of 10 MB or less | No, only the attachment text that a search matches |
Read a whole conversation across folders | Yes, in one call | No, one message at a time |
Mark a message, flag it, set its importance, move it, or copy it | Yes | No |
Create, rename, or delete a mail folder | Yes | No |
Read and change inbox rules, the automatic reply, and categories | Yes | No, categories are a search filter only |
Read and change contacts | Yes | No, a name lookup only |
Create a recurring event or an all-day event | Yes | No |
Add optional attendees or a meeting room to an event | Yes | No |
Delete or forward an event, or share a calendar | Yes | No |
Different in both
Topic | office-365-mcp | outlook-semantic-mcp |
|---|---|---|
Setup | A token store only. The user can work at once after sign-in. | A database, a message queue, and for ingestion a knowledge base and a public webhook |
Wait after sign-in | None | Results are incomplete until the first sync of the mailbox ends |
Copy of the mail | None. Every call reads live data. | A copy in the knowledge base for the retention window |
Write in a shared mailbox | Yes, with approval | A draft only |
Read a shared mailbox | Yes, with the | Yes, if an administrator turns on the scan of delegated access |
Calendar tools | On, with the tool set of the deployment | Off by default. An administrator turns them on with a switch. |
Limits that a user can meet
The tables in this section name limits that change what a user sees in a chat. A limit that only the server sees, such as a timeout or a retry count, is not in the tables. A limit that more calls can get around is not in the tables. When a tool reaches a limit, it tells the model. The model then tells the user.
SharePoint and OneDrive
Limit | What the user sees |
|---|---|
A file is larger than 10 MB | The tool refuses the file. It never sends part of a file. The model gives the user a link to open the file. |
A user wants a file that is not plain text | The tool creates only text files, such as |
A file with the same name exists | The tool cannot replace a file. No tool uploads a file. |
A user shares a file | A link gives view access or edit access, to the organization or to anyone. The tool sets no expiry and no password. No tool removes a link or an invitation. |
Outlook mail
Limit | What the user sees |
|---|---|
An attachment of a message or an event is larger than 10 MB | The tool refuses the attachment. It never sends part of a file. The user opens the message in Outlook. |
An attachment is a message, an event, or a cloud link | The tool refuses the attachment. The user opens it in Outlook. |
A user wants to send a message with a file | No tool adds a file to a draft. The user adds the file in Outlook before the send. A forward keeps the files of the original message. |
A user searches for the words inside an attachment | The search matches the file name only. A read returns the file in its own format, not as text. |
A mailbox forwards its mail | The tools cannot see a forward that is set on the mailbox. A list of rules with no forward does not prove that nobody forwards the mail. |
Outlook calendar
Limit | What the user sees |
|---|---|
A user cannot view the details of a shared calendar | Each event shows the time only. The subject and the body are empty. |
An event has a Teams meeting | A tool can add a Teams meeting to an event, but cannot remove it. A tool cannot change the existing text in the body of such an event. The user does this in Outlook. |
Outlook contacts
Limit | What the user sees |
|---|---|
A contact is in a folder other than the default folder | The tools do not reach it. They use the default Contacts folder only. |
A contact has a department, an address, a birthday, or a note | A tool reads these fields. A tool cannot write them. |
A user clears a name, a company, a job title, or a mobile number | The tool cannot clear them. The user clears them in Outlook. |
Microsoft Teams
Limit | What the user sees |
|---|---|
A channel has more than 50 posts | The tool reads the newest 50 posts. Microsoft limits channel reads to about one request each second, so older posts are out of reach. |
A post has more than 50 replies | The tool reads 50 replies and marks the list as incomplete. The rest is out of reach. |
A user sends a file in a message | The file must already be in SharePoint. No tool uploads a file. |
A meeting is old | Microsoft erases the transcripts of a one-off meeting about 60 days after the meeting. |
A tenant turns off transcripts | The tool cannot read them. A Teams administrator must turn them on. |
A transcript is larger than 100 MB | The tool refuses the transcript. |
OneNote
Limit | What the user sees |
|---|---|
A page is larger than 1 MB | The tool refuses the page. The model gives the user a link to open the page. |
An image or a file in a page is larger than 10 MB | The tool refuses it. The model gives the user a link to open the page. |
A user searches for a page | The search matches the page title only. It does not search the text of a page. |
A page is new | Microsoft can show an empty title for the page for days. The model finds the page by its section or its creation time. |
A notebook is on a SharePoint site or in a team | The tools reach it only with the id of the team or the site. A copy into or out of a site notebook is refused. |
All tools
Limit | What the user sees |
|---|---|
The chat client cannot ask the user | The tool refuses the actions that need approval. The user does them in the Microsoft 365 app. |
Microsoft limits the request rate | Microsoft limits requests for each tenant. The model waits, then tries again. |