m365-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| M365_ACCOUNT | No | The account name to use. If not set, the default account is used. | |
| M365_TIMEZONE | No | Timezone for calendar tools. Example: America/Chicago. | |
| M365_MCP_AUTH_DIR | No | Directory where OAuth tokens are stored. Defaults to ~/.m365-mcp/auth. | |
| M365_MCP_READ_ONLY | No | Set to 'true' to run in read-only mode. Must be set before authentication to request read-only scopes. Mutating tools are disabled. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| m365_mail_listC | List emails from your mailbox with optional folder, filter, and search |
| m365_mail_readA | Read a specific email by ID, including full body |
| m365_mail_sendB | Send an email from your account |
| m365_mail_replyC | Reply to an email |
| m365_mail_searchA | Search emails across all folders |
| m365_mail_moveA | Move an email to a different folder |
| m365_mail_deleteA | Delete an email (moves to Deleted Items) |
| m365_mail_mark_readA | Mark an email as read or unread |
| m365_mail_foldersA | List all mail folders with counts |
| m365_calendar_listA | List calendar events in a date range (or upcoming if no range) |
| m365_calendar_todayA | Show today's calendar events |
| m365_calendar_weekA | Show this week's calendar events grouped by day |
| m365_calendar_createB | Create a calendar event (with optional Teams meeting) |
| m365_calendar_updateC | Update an existing calendar event |
| m365_calendar_deleteB | Cancel/delete a calendar event |
| m365_calendar_availabilityB | Check free/busy availability for users |
| m365_contacts_listA | List contacts, optionally within a folder and filtered by one or more exact category names |
| m365_contacts_searchA | Search contacts by name, email, or company, optionally within a folder and filtered by exact categories |
| m365_contacts_readB | Read a contact's full details |
| m365_contacts_createA | Create a contact with names, multiple emails and phones, categories, addresses, and work or personal details |
| m365_contacts_updateA | Update or clear contact fields; use empty strings or arrays to clear supported values |
| m365_contacts_deleteA | Move a contact to Deleted Items |
| m365_contacts_categories_listA | List unique category names assigned to contacts in the default or selected folder, with usage counts |
| m365_contacts_folders_listA | List top-level contact folders or the direct children of one folder |
| m365_contacts_folder_createA | Create a child contact folder under an existing contact folder |
| m365_contacts_folder_updateB | Rename or move a top-level or direct-child contact folder |
| m365_contacts_folder_deleteA | Delete a non-default top-level or direct-child contact folder |
| m365_contacts_people_listA | Find relevance-ranked people for recipient selection using mailbox signals, the organization directory, or both; does not expose private Outlook Contact Lists |
| m365_files_listA | List files and folders in your OneDrive |
| m365_files_searchB | Search for files in your OneDrive |
| m365_files_readA | Read a file's content (text files only, max 50KB by default) |
| m365_files_infoA | Get file or folder metadata |
| m365_files_create_folderB | Create a new folder in OneDrive |
| m365_teams_chatsA | List your Teams chats |
| m365_teams_messagesA | Get messages from a Teams chat |
| m365_teams_sendB | Send a message to a Teams chat |
| m365_tasks_listsA | List your Microsoft To Do task lists |
| m365_tasks_listA | List tasks in a task list |
| m365_tasks_createB | Create a new task |
| m365_tasks_updateC | Update an existing task |
| m365_tasks_deleteC | Delete a task |
| m365_users_listA | List users in your organization (requires User.Read.All — may need admin consent) |
| m365_users_profileA | Get a user's profile (or your own if no user specified) |
| m365_users_managerA | Get a user's manager (or your own) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 44 tools
Tools are grouped by resource prefix (m365_mail, m365_calendar, etc.) and each has a specific action, making their purpose clear. A few pairs like m365_mail_list vs m365_mail_search and m365_contacts_list vs m365_contacts_people_list could be confused, but descriptions sufficiently clarify the differences.
All tool names follow the consistent pattern m365_<resource>_<action>, using snake_case throughout. Even special cases like m365_calendar_today and m365_calendar_week fit the pattern with a descriptive noun as the action. There are no mixed conventions or unpredictable naming styles.
With 44 tools, this is a large surface, but it covers many distinct Microsoft 365 domains (mail, calendar, contacts, tasks, files, teams, users). Each domain has a reasonable number of operations, so the count is justified for a broad integration server, though it is on the heavier side.
The tool set covers core workflows for mail, calendar, tasks, contacts, and basic file read/list operations. However, there are notable gaps: no file upload or delete, no Teams channel or meeting support, and limited user management (only read operations). These missing operations prevent full lifecycle coverage for several resources.