Follow these steps to add this M365 MCP Server as a connector in Claude Desktop. All values below are pre-filled for this deployment.
Open Claude Desktop and go to Settings (top-right menu or Cmd ,)
Navigate to the Advanced tab and toggle on Developer Mode
A new Developer menu item will appear in the top navigation bar
Click Developer in the menu bar → Configure Third-Party Inference…
Go to the Connectors & Extensions tab
Click Add connector, then fill in the fields below and click Save
| Field | Value | |
|---|---|---|
| Name | M365 MCP Server | |
| URL | http://mcp.itelalabs.net/mcp | |
| Tenant ID | 8ecce40f-6c18-4c19-9aa7-c287c408d0f3 | |
| Authentication | OAuth 2.0 | |
| Client ID | e52d76e5-0bb1-45b4-8aa9-990227d6df70 | |
| Scope | api://91016ac2-7c06-480f-8473-2854a9d06501/access_as_user | |
| Redirect URI | http://mcp.itelalabs.net/callback |
In the connector's Capabilities section, toggle on Tool Use — it defaults to disabled.
Click Connect. A browser window will open for Microsoft sign-in.
After signing in you'll see a confirmation page and the window closes automatically.
401 Unauthorized even after successful sign-in.
By default Claude Desktop asks for approval on every tool call. Add the snippet below to
~/Library/Application Support/Claude/claude_desktop_config.json
to skip the prompt for these read-only tools, then restart Claude Desktop.
{
"mcpServers": {
"m365-mcp": {
"url": "http://mcp.itelalabs.net/mcp",
"autoApprove": [
"whoami",
"mail_search",
"mail_get_message",
"mail_list_folders",
"calendar_list_events",
"calendar_get_event",
"calendar_find_time",
"teams_list_chats",
"teams_search_messages",
"teams_get_channel_messages",
"sharepoint_search",
"onedrive_list",
"files_get_content"
]
}
}
}
| Tool | Description | Requires |
|---|---|---|
whoami | Get signed-in user profile | User.Read |
mail_search | Search emails by keyword | Mail.Read |
mail_get_message | Get full email content by ID | Mail.Read |
mail_list_folders | List mail folders with counts | Mail.Read |
calendar_list_events | List calendar events in date range | Calendars.Read |
calendar_get_event | Get event details by ID | Calendars.Read |
calendar_find_time | Find meeting times for attendees | Calendars.Read |
teams_list_chats | List Teams chats | Chat.Read |
teams_search_messages | Search Teams messages | Chat.Read |
teams_get_channel_messages | Get channel messages | ChannelMessage.Read.All |
sharepoint_search | Search SharePoint/OneDrive files | Files.Read.All |
onedrive_list | List OneDrive folder contents | Files.Read.All |
files_get_content | Get file metadata and content | Files.Read.All |
| Symptom | Fix |
|---|---|
| Tools are disabled / grayed out in Claude | Enable Tool Use in the connector Capabilities settings |
Untrusted client error | Verify the Client ID in the connector matches e52d76e5-0bb1-45b4-8aa9-990227d6df70 |
jwt audience invalid | Verify the Scope field is exactly api://91016ac2-7c06-480f-8473-2854a9d06501/access_as_user |
Missing scope / consent error | Re-authenticate after updating the scope; ask your admin to grant consent |
| Browser window doesn't close after sign-in | Close it manually — the connection is still established |