Install
$ agentstack add mcp-stumason-m365-mcp ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
M365 MCP
[](https://www.npmjs.com/package/@masonator/m365-mcp) [](LICENSE) [](https://nodejs.org) [](https://www.typescriptlang.org/) [](https://github.com/StuMason/m365-mcp/actions/workflows/ci.yml)
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](CONTRIBUTING.md) for details.
License
[MIT](LICENSE) - Stu Mason
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: StuMason
- Source: StuMason/m365-mcp
- License: MIT
- Homepage: https://stumason.dev
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.