M365 MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@M365 MCP Serverlist all Microsoft 365 groups and their members"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
M365 MCP Server
A Model Context Protocol (MCP) server for Microsoft 365 administration using the Microsoft Graph API.
🚀 Features
User Management: Create, read, update, delete users and their mailboxes
Microsoft 365 Groups: Full CRUD operations for Microsoft 365 Groups, including member and owner management
Shared Mailboxes: List and manage shared mailboxes (read-only via Graph API, PowerShell required for member management)
Mailbox Operations: Delegate mailboxes and convert user mailboxes to shared (PowerShell instructions provided)
Enhanced Error Handling: Comprehensive error reporting with troubleshooting guidance and Graph API limitation explanations
Related MCP server: M365 MCP
🛠️ Setup
1. Azure App Registration
Go to Azure Portal → "Azure Active Directory" → "App registrations"
Click "New registration"
Name your application
Supported account types: "Accounts in this organizational directory only"
Click "Register"
2. Configure Permissions
Go to "API permissions" in your app registration
Click "Add a permission" → "Microsoft Graph" → "Application permissions"
Add these required permissions:
User Management:
User.ReadWrite.All- Required for all user operations (create, read, update, delete users)Directory.ReadWrite.All- Required for user directory operations and license management
Group Management:
Group.ReadWrite.All- Required for Microsoft 365 Groups operations (create, manage members/owners)
Mailbox Operations:
MailboxSettings.ReadWrite.All- Required for mailbox settings and calendar permissions
License Management:
User.ReadWrite.All(already listed above) - Covers license assignment operations
Click "Grant admin consent for [Your Organization]"
3. Important Notes About Permissions
⚠️ Graph API Limitations:
Shared Mailboxes: Cannot add/remove members via Graph API - requires Exchange Online PowerShell
Mailbox Delegation: Cannot delegate mailbox access via Graph API - requires Exchange Online PowerShell
Distribution Lists: Cannot manage members via Graph API - requires Exchange Online PowerShell
Mailbox Type Conversion: Cannot convert mailbox types via Graph API - requires Exchange Online PowerShell
✅ What Works with Graph API:
User creation, updates, deletion
Microsoft 365 Groups management
Basic mailbox settings retrieval
License assignment and removal
User account enable/disable
4. Create Client Secret
Go to "Certificates & secrets" in your app registration
Click "New client secret"
Description:
MCP Server SecretExpiration: Choose appropriate duration
Copy the Value (not the ID) - this is your
CLIENT_SECRET
5. Get Credentials
Copy these values from your app registration:
Application (client) ID →
CLIENT_IDDirectory (tenant) ID →
TENANT_IDClient Secret Value →
CLIENT_SECRET
🚀 Installation
1. Install Dependencies
pip3 install -r requirements.txt2. Configure Environment
Create a .env file:
TENANT_ID=your_tenant_id_here
CLIENT_ID=your_client_id_here
CLIENT_SECRET=your_client_secret_here3. Run the Server
python3 m365_mcp_server.py🖥️ Claude Desktop Integration
Add this to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"m365-admin": {
"command": "python3",
"args": ["/path/to/your/m365-mcp/m365_mcp_server.py"],
"env": {
"TENANT_ID": "your_tenant_id_here",
"CLIENT_ID": "your_client_id_here",
"CLIENT_SECRET": "your_client_secret_here"
}
}
}
}🔍 Troubleshooting
PowerShell Requirements
Many operations require Exchange Online PowerShell:
Shared mailbox member management
Mailbox delegation
Distribution list member management
Mailbox type conversion
To install Exchange Online PowerShell:
Install-Module -Name ExchangeOnlineManagement
Connect-ExchangeOnlineCommon Error Codes
401 Unauthorized: Token expired or insufficient permissions
403 Forbidden: Missing API permissions or admin consent not granted
404 Not Found: Resource doesn't exist or email address is incorrect
400 Bad Request: Invalid request format or missing required properties
409 Conflict: Resource already exists
Authentication Issues
Check Environment Variables: Ensure all three variables are set
Verify App Registration: Confirm app exists and has correct permissions
Grant Admin Consent: Ensure admin consent is granted for all permissions
Check Client Secret: Verify secret is valid and not expired
API Permission Issues
Review Permissions: Ensure all required permissions are added:
User.ReadWrite.AllDirectory.ReadWrite.AllGroup.ReadWrite.AllMailboxSettings.ReadWrite.All
Check Permission Type: Use "Application permissions" not "Delegated permissions"
Grant Admin Consent: Click "Grant admin consent" in Azure Portal
Wait for Propagation: Changes may take up to 15 minutes to propagate
Graph API Limitations
Expected Behaviors (Not Errors):
Shared mailbox member management fails: This is expected - use PowerShell
Add-MailboxPermissionMailbox delegation fails: This is expected - use PowerShell
Add-MailboxPermissionDistribution list member management fails: This is expected - use PowerShell
Add-DistributionGroupMemberMailbox type conversion fails: This is expected - use PowerShell
Set-Mailbox -Type Shared
Common Issues
"pip command not found": Use
pip3instead ofpip"Permission denied" (403): Ensure admin consent is granted for all permissions
"Resource not found" (404): Check if the user/group exists and verify email addresses
"Unsupported query" (400): Usually indicates Graph API limitation - use PowerShell instead
"Authorization denied" (403): Check if the operation is supported by Graph API
Microsoft 365 Group membership restrictions: Some groups may have restricted membership management
Shared mailbox operations: Most shared mailbox operations require Exchange Online PowerShell
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/N8Maynard91/m365-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server