Composing, replying and sorting put this past the read-only Graph connectors, and having calendar and file search behind the same sign-in is what makes a single request — find the thread, book the follow-up, locate the attachment — one conversation. The tenant admin requirement is the real gate: without it, the app registration cannot get the scopes.
An MCP server that gives Claude Desktop access to your Microsoft 365 mail, calendar and files using the Microsoft Graph API, authenticating through an Azure-registered application with device-code sign-in and a persisted token cache.
- Mail — compose, respond, sort, search, filter and analyse the inbox
- Calendar — find invites, list events, and compose, update and send events
- OneDrive — search files and read file metadata
- SharePoint — load drives, search files and read file metadata
Built to run locally on macOS with Claude Desktop, and it needs an Azure-registered application: the Graph scopes involved, such as `Mail.Read` and `Calendars.Read`, are not user-consentable in most organisations, so you need admin access to an Azure tenant to register it. Create an `auth_cache` folder in the project root and a `.env` holding `AZURE_CLIENT_ID`, `AZURE_TENANT_ID` and `AZURE_GRAPH_SCOPES`; file services need further values. Set up with `uv venv` and `uv sync`, debug with `mcp dev main.py` before wiring it into Claude, then register the documented `uv run` command with an absolute path. On first run device-code sign-in writes `auth_record.json` into `auth_cache`. Package version 0.1.0. MIT.
