M365
FreeNot checkedMCP server for Microsoft 365 via the Microsoft Graph API, providing read-only access to profile, calendar, email, Teams chats, OneDrive files, and meeting trans
About
MCP server for Microsoft 365 via the Microsoft Graph API, providing read-only access to profile, calendar, email, Teams chats, OneDrive files, and meeting transcripts from any MCP client.
README
M365 MCP
npm version MIT License Node.js TypeScript CI
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-mcp
Claude 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 |
|---|---|---|
MS365_MCP_CLIENT_ID |
Yes | Azure AD application (client) ID |
MS365_MCP_TENANT_ID |
Yes | Azure AD tenant ID |
MS365_MCP_CLIENT_SECRET |
No | Azure AD client secret (confidential clients only) |
MS365_MCP_TIMEZONE |
No | Timezone for calendar (default: system timezone) |
MS365_MCP_REDIRECT_URL |
No | OAuth redirect URI (default: dynamic port, http://localhost:{port}/callback) |
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_URL - Certificates & 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 |
|---|---|
date |
Specific date (YYYY-MM-DD) |
start |
Start of range (ISO 8601) |
end |
End of range (ISO 8601) |
ms_mail
Read recent emails with optional keyword search.
| Parameter | Description |
|---|---|
search |
Keyword to filter emails |
count |
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 |
|---|---|
chat_id |
Specific chat thread ID |
count |
Number of items (1-25, default 10) |
ms_files
Browse or search OneDrive files.
| Parameter | Description |
|---|---|
path |
Folder path (e.g., /Documents) |
search |
Search across OneDrive |
count |
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 |
Date (YYYY-MM-DD) |
start |
Start of range (ISO 8601) |
end |
End of range (ISO 8601) |
transcript_id |
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 test
Contributing
See CONTRIBUTING.md for details.
License
MIT - Stu Mason
Install M365 in Claude Desktop, Claude Code & Cursor
unyly install m365-mcpInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add m365-mcp -- npx -y @masonator/m365-mcpFAQ
Is M365 MCP free?
Yes, M365 MCP is free — one-click install via Unyly at no cost.
Does M365 need an API key?
No, M365 runs without API keys or environment variables.
Is M365 hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install M365 in Claude Desktop, Claude Code or Cursor?
Open M365 on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Gmail
Read, send and search emails from Claude
by GoogleSlack
Send, search and summarize Slack messages
by SlackRunbear
No-code MCP client for team chat platforms, such as Slack, Microsoft Teams, and Discord.
Discord Server
A community discord server dedicated to MCP by [Frank Fiegel](https://github.com/punkpeye)
Compare M365 with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All communication MCPs
