ms-365-mcp-server

Softeria/ms-365-mcp-server

3.9

ms-365-mcp-server is hosted online, so all tools can be tested directly either in theInspector tabor in theOnline Client.

If you are the rightful owner of ms-365-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A Model Context Protocol (MCP) server for interacting with Microsoft 365 services through the Graph API.

Try ms-365-mcp-server with chat:

Tools

Functions exposed to the LLM to take actions

login

Authenticate with Microsoft using device code flow

logout

Log out from Microsoft account

verify-login

Check current Microsoft authentication status

list-accounts

List all available Microsoft accounts

select-account

Select a specific Microsoft account to use

remove-account

Remove a Microsoft account from the cache

get-chat

Retrieve a single chat (without its messages). This method supports federation. To access a chat, at least one chat member must belong to the tenant the request initiated from.

list-chat-messages

Retrieve the list of messages in a chat. This method supports federation. To list chat messages in application context, the request must be made from the tenant that the channel owner belongs to (represented by the tenantId property on the channel).

send-chat-message

Send a new chatMessage in the specified channel or a chat.

get-chat-message

Retrieve a single message or a message reply in a channel or a chat.

list-chat-message-replies

Replies for a specified message. Supports $expand for channel messages.

reply-to-chat-message

Create new navigation property to replies for chats

delete-onedrive-file

Delete navigation property items for drives

list-folder-files

Return a collection of DriveItems in the children relationship of a DriveItem. DriveItems with a non-null folder or package facet can have one or more child DriveItems.

download-onedrive-file-content

The content stream, if the item represents a file.

upload-file-content

The content stream, if the item represents a file.

list-excel-worksheets

Represents a collection of worksheets associated with the workbook. Read-only.

create-excel-chart

Creates a new chart.

format-excel-range

Update the navigation property format in drives

sort-excel-range

Update the navigation property sort in drives

get-excel-range

Invoke function range

get-drive-root-item

The root folder of the drive. Read-only.

get-current-user

Returns the user or organizational contact assigned as the user's manager. Optionally, you can expand the manager's chain up to the root node.

list-calendars

Get all the user's calendars (/calendars navigation property), get the calendars from the default calendar group or from a specific calendar group.

list-specific-calendar-events

The events in the calendar. Navigation property. Read-only.

create-specific-calendar-event

Use this API to create a new event in a calendar. The calendar can be one for a user, or the default calendar of a Microsoft 365 group.

get-specific-calendar-event

The events in the calendar. Navigation property. Read-only.

update-specific-calendar-event

Update the navigation property events in me

delete-specific-calendar-event

Delete navigation property events for me

get-calendar-view

Get the occurrences, exceptions, and single instances of events in a calendar view defined by a time range, from the user's default calendar, or from some other calendar of the user.

list-chats

Get chats from me

list-outlook-contacts

Get a contact collection from the default contacts folder of the signed-in user. There are two scenarios where an app can get contacts in another user's contact folder:

create-outlook-contact

Add a contact to the root Contacts folder or to the contacts endpoint of another contact folder.

get-outlook-contact

Retrieve the properties and relationships of a contact object. There are two scenarios where an app can get a contact in another user's contact folder:

update-outlook-contact

Update the properties of a contact object.

delete-outlook-contact

Delete a contact.

list-drives

Retrieve the list of Drive resources available for a target User, Group, or Site.

list-calendar-events

Get a list of event objects in the user's mailbox. The list contains single instance meetings and series masters. To get expanded event instances, you can get the calendar view, or get the instances of an event. Currently, this operation returns event bodies in only HTML format. There are two scenarios where an app can get events in another user's calendar:

create-calendar-event

Create an event in the user's default calendar or specified calendar. By default, the allowNewTimeProposals property is set to true when an event is created, which means invitees can propose a different date/time for the event. See Propose new meeting times for more information on how to propose a time, and how to receive and accept a new time proposal. You can specify the time zone for each of the start and end times of the event as part of their values, because the start and end properties are of dateTimeTimeZone type. First find the supported time zones to make sure you set only time zones that have been configured for the user's mailbox server. When an event is sent, the server sends invitations to all the attendees. Setting the location in an event An Exchange administrator can set up a mailbox and an email address for a resource such as a meeting room, or equipment like a projector. Users can then invite the resource as an attendee to a meeting. On behalf of the resource, the server accepts or rejects the meeting request based on the free/busy schedule of the resource. If the server accepts a meeting for the resource, it creates an event for the meeting in the resource's calendar. If the meeting is rescheduled, the server automatically updates the event in the resource's calendar. Another advantage of setting up a mailbox for a resource is to control scheduling of the resource, for example, only executives or their delegates can book a private meeting room. If you're organizing an event that involves a meeting location: Additionally, if the meeting location has been set up as a resource, or if the event involves some equipment that has been set up as a resource:

get-calendar-event

Get the properties and relationships of the specified event object. Currently, this operation returns event bodies in only HTML format. There are two scenarios where an app can get an event in another user's calendar: Since the event resource supports extensions, you can also use the GET operation to get custom properties and extension data in an event instance.

update-calendar-event

Update the properties of the event object.

delete-calendar-event

Removes the specified event from the containing calendar. If the event is a meeting, deleting the event on the organizer's calendar sends a cancellation message to the meeting attendees.

list-joined-teams

Get the teams in Microsoft Teams that the user is a direct member of.

list-mail-folders

Get the mail folder collection directly under the root folder of the signed-in user. The returned collection includes any mail search folders directly under the root. By default, this operation does not return hidden folders. Use a query parameter includeHiddenFolders to include them in the response. This operation does not return all mail folders in a mailbox, only the child folders of the root folder. To return all mail folders in a mailbox, each child folder must be traversed separately.

list-mail-folder-messages

Get all the messages in the specified user's mailbox, or those messages in a specified folder in the mailbox.

list-mail-messages

Get the messages in the signed-in user's mailbox (including the Deleted Items and Clutter folders). Depending on the page size and mailbox data, getting messages from a mailbox can incur multiple requests. The default page size is 10 messages. Use $top to customize the page size, within the range of 1 and 1000. To improve the operation response time, use $select to specify the exact properties you need; see example 1 below. Fine-tune the values for $select and $top, especially when you must use a larger page size, as returning a page with hundreds of messages each with a full response payload may trigger the gateway timeout (HTTP 504). To get the next page of messages, simply apply the entire URL returned in @odata.nextLink to the next get-messages request. This URL includes any query parameters you may have specified in the initial request. Do not try to extract the $skip value from the @odata.nextLink URL to manipulate responses. This API uses the $skip value to keep count of all the items it has gone through in the user's mailbox to return a page of message-type items. It's therefore possible that even in the initial response, the $skip value is larger than the page size. For more information, see Paging Microsoft Graph data in your app. Currently, this operation returns message bodies in only HTML format. There are two scenarios where an app can get messages in another user's mail folder:

create-draft-email

Create an open extension (openTypeExtension object) and add custom properties in a new or existing instance of a resource. You can create an open extension in a resource instance and store custom data to it all in the same operation, except for specific resources. The table in the Permissions section lists the resources that support open extensions.

get-mail-message

You can get a single resource instance expanded with a specific extended property, or a collection of resource instances that include extended properties matching a filter. Using the query parameter $expand allows you to get the specified resource instance expanded with a specific extended property. Use a $filter and eq operator on the id property to specify the extended property. This is currently the only way to get the singleValueLegacyExtendedProperty object that represents an extended property. To get resource instances that have certain extended properties, use the $filter query parameter and apply an eq operator on the id property. In addition, for numeric extended properties, apply one of the following operators on the value property: eq, ne,ge, gt, le, or lt. For string-typed extended properties, apply a contains, startswith, eq, or ne operator on value. The filter is applied to all instances of the resource in the signed-in user's mailbox. Filtering the string name (Name) in the id of an extended property is case-sensitive. Filtering the value property of an extended property is case-insensitive. The following user resources are supported: As well as the following group resources: See Extended properties overview for more information about when to use open extensions or extended properties, and how to specify extended properties.

delete-mail-message

Delete eventMessage.

list-mail-attachments

Retrieve a list of attachment objects.

add-mail-attachment

Use this API to create a new Attachment. An attachment can be one of the following types: All these types of attachment resources are derived from the attachment resource.

get-mail-attachment

Read the properties, relationships, or raw contents of an attachment that is attached to a user event, message, or group post. An attachment can be one of the following types: All these types of attachments are derived from the attachment resource.

delete-mail-attachment

Delete navigation property attachments for me

move-mail-message

Move a message to another folder within the specified user's mailbox. This creates a new copy of the message in the destination folder and removes the original message.

list-onenote-notebooks

Retrieve a list of notebook objects.

list-onenote-notebook-sections

Retrieve a list of onenoteSection objects from the specified notebook.

create-onenote-page

Create a new OneNote page in the default section of the default notebook. To create a page in a different section in the default notebook, you can use the sectionName query parameter. Example: ../onenote/pages?sectionName=My%20section The POST /onenote/pages operation is used only to create pages in the current user's default notebook. If you're targeting other notebooks, you can create pages in a specified section.

get-onenote-page-content

The page's HTML content.

list-onenote-section-pages

Retrieve a list of page objects from the specified section.

list-planner-tasks

Retrieve a list of plannertask objects assigned to a User.

send-mail

Send the message specified in the request body using either JSON or MIME format. When using JSON format, you can include a file attachment in the same sendMail action call. When using MIME format: This method saves the message in the Sent Items folder. Alternatively, create a draft message to send later. To learn more about the steps involved in the backend before a mail is delivered to recipients, see here.

list-todo-task-lists

Get a list of the todoTaskList objects and their properties.

list-todo-tasks

Get the todoTask resources from the tasks navigation property of a specified todoTaskList.

create-todo-task

Create a new task object in a specified todoTaskList.

get-todo-task

Read the properties and relationships of a todoTask object.

update-todo-task

Update the properties of a todoTask object.

delete-todo-task

Delete a todoTask object.

get-planner-plan

Retrieve the properties and relationships of a plannerplan object.

list-plan-tasks

Retrieve a list of plannerTask objects associated with a plannerPlan object.

create-planner-task

Create a new plannerTask.

get-planner-task

Retrieve the properties and relationships of plannerTask object.

update-planner-task

Update the properties of plannerTask object.

update-planner-task-details

Update the properties of plannerTaskDetails object.

search-query

Runs the query specified in the request body. Search results are provided in the response.

search-sharepoint-sites

List all available sites in an organization. Specific filter criteria and query options are also supported and described below: In addition, you can use a $search query against the /sites collection to find sites matching given keywords. If you want to list all sites across all geographies, refer to getAllSites. For more guidance about building applications that use site discovery for scanning purposes, see Best practices for discovering files and detecting changes at scale.

get-sharepoint-site

Retrieve properties and relationships for a site resource. A site resource represents a team site in SharePoint.

list-sharepoint-site-drives

The collection of drives (document libraries) under this site.

get-sharepoint-site-drive-by-id

The collection of drives (document libraries) under this site.

get-sharepoint-site-by-path

Invoke function getByPath

list-sharepoint-site-items

Used to address any item contained in this site. This collection can't be enumerated.

get-sharepoint-site-item

Used to address any item contained in this site. This collection can't be enumerated.

list-sharepoint-site-lists

Get the collection of lists for a site. Lists with the system facet are hidden by default. To list them, include system in your $select statement.

get-sharepoint-site-list

Returns the metadata for a list.

list-sharepoint-site-list-items

Get the collection of items in a list.

get-sharepoint-site-list-item

Returns the metadata for an item in a list.

get-sharepoint-sites-delta

Get newly created, updated, or deleted sites without having to perform a full read of the entire sites collection. A delta function call for sites is similar to a GET request, except that by appropriately applying state tokens in one or more of these calls, you can query for incremental changes in the sites. It allows you to maintain and synchronize a local store of a user's sites without having to fetch all the sites from the server every time. The application calls the API without specifying any parameters. The service begins enumerating sites and returns pages of changes to these sites, accompanied by either an @odata.nextLink or an @odata.deltaLink. Your application should continue making calls using the @odata.nextLink until there's an @odata.deltaLink in the response. After you receive all the changes, you can apply them to your local state. To monitor future changes, call the delta API by using the @odata.deltaLink in the previous response. Any resources marked as deleted should be removed from your local state.

get-team

Retrieve the properties and relationships of the specified team.

list-team-channels

Retrieve the list of channels in this team.

get-team-channel

Retrieve the properties and relationships of a channel. This method supports federation. Only a user who is a member of the shared channel can retrieve channel information.

list-channel-messages

Retrieve the list of messages (without the replies) in a channel of a team. To get the replies for a message, call the list message replies or the get message reply API. This method supports federation. To list channel messages in application context, the request must be made from the tenant that the channel owner belongs to (represented by the tenantId property on the channel).

send-channel-message

Send a new chatMessage in the specified channel.

get-channel-message

Retrieve a single message or a message reply in a channel or a chat.

list-team-members

Get the conversationMember collection of a team. The membership IDs returned by the server must be treated as opaque strings. The client shouldn't try to parse or make assumptions about these resource IDs. In the future, membership results can include users from various tenants, as indicated in the response. Clients should avoid assuming that all members exclusively belong to the current tenant.

list-users

List properties and relationships of the user objects.

list-shared-mailbox-folder-messages

The collection of messages in the mailFolder.

list-shared-mailbox-messages

The messages in a mailbox or folder. Read-only. Nullable.

get-shared-mailbox-message

The messages in a mailbox or folder. Read-only. Nullable.

send-shared-mailbox-mail

Send the message specified in the request body using either JSON or MIME format. When using JSON format, you can include a file attachment in the same sendMail action call. When using MIME format: This method saves the message in the Sent Items folder. Alternatively, create a draft message to send later. To learn more about the steps involved in the backend before a mail is delivered to recipients, see here.

Prompts

Interactive templates invoked by user choice

No prompts

Resources

Contextual data attached and managed by the client

No resources