M365 MCP
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 MCPshow my calendar events for today"
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
MCP server for Microsoft 365 via the Microsoft Graph API. Read-only access to your profile, calendar, email, Teams chats, OneDrive files, and meeting transcripts from any MCP client.
Installation
Claude Code
claude mcp add m365-mcp -e MS365_MCP_CLIENT_ID=your-client-id -e MS365_MCP_TENANT_ID=your-tenant-id -- npx -y @masonator/m365-mcpClaude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"m365-mcp": {
"command": "npx",
"args": ["-y", "@masonator/m365-mcp"],
"env": {
"MS365_MCP_CLIENT_ID": "your-azure-ad-client-id",
"MS365_MCP_TENANT_ID": "your-azure-ad-tenant-id"
}
}
}
}First Run
On first use, the server opens your browser to sign in with Microsoft. After granting consent, tokens are stored locally at ~/.config/m365-mcp/tokens.json (permissions 600) and refreshed automatically.
Environment Variables
Variable | Required | Description |
| Yes | Azure AD application (client) ID |
| Yes | Azure AD tenant ID |
| No | Azure AD client secret (confidential clients only) |
| No | Timezone for calendar (default: system timezone) |
| No | OAuth redirect URI (default: dynamic port, |
Azure AD Setup
Register an application in Azure AD with these settings:
App registration > New registration
Redirect URI:
http://localhost(Web platform) — or set a fixed URI viaMS365_MCP_REDIRECT_URLCertificates & secrets > New client secret
API permissions > Add the following delegated permissions:
User.ReadCalendars.ReadMail.ReadChat.ReadFiles.ReadOnlineMeetingTranscript.Read.AllSites.Read.All
Tools
ms_auth_status
Check connection status. If not connected, opens browser to sign in.
ms_profile
Fetch your Microsoft 365 profile — display name, email, job title, office location.
ms_calendar
Fetch calendar events. Defaults to today.
Parameter | Description |
| Specific date (YYYY-MM-DD) |
| Start of range (ISO 8601) |
| End of range (ISO 8601) |
ms_mail
Read recent emails with optional keyword search.
Parameter | Description |
| Keyword to filter emails |
| Number of emails (1-25, default 10) |
ms_chat
Read Teams chats. Without chat_id lists recent chats; with chat_id returns messages from that thread.
Parameter | Description |
| Specific chat thread ID |
| Number of items (1-25, default 10) |
ms_files
Browse or search OneDrive files.
Parameter | Description |
| Folder path (e.g., |
| Search across OneDrive |
| Max items (1-50, default 20) |
ms_transcripts
Fetch Teams meeting transcripts. Returns previews (~3000 chars) with a transcript_id for drill-down to the full transcript.
Parameter | Description |
| Date (YYYY-MM-DD) |
| Start of range (ISO 8601) |
| End of range (ISO 8601) |
| ID from a previous list call for full content |
Development
git clone https://github.com/StuMason/m365-mcp.git
cd m365-mcp
npm install
npm run build
npm testContributing
See CONTRIBUTING.md for details.
License
MIT - Stu Mason
This server cannot be installed
Maintenance
Latest Blog Posts
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/StuMason/m365-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server