Stateless Microsoft 365 (Graph) MCP server: SharePoint, OneDrive, Mail, Calendar, Users, Groups, plus Office/PDF text extraction.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"keos-microsoft365-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# Microsoft 365 MCP Server An [MCP](https://modelcontextprotocol.io) server that exposes Microsoft 365 operations as tools, backed by Microsoft Graph — SharePoint, OneDrive, Mail, Calendar, Users & Directory, and Groups — plus text extraction from Office/PDF documents and mail attachments. It is **stateless** and **does not do any OAuth**: your application already holds a valid Microsoft Graph access token, and it supplies that token with each request. No re-authentication, no token exchange, no gateway. ## Why this exists If you already obtained a Microsoft Graph delegated access token (`aud = https://graph.microsoft.com`) via a 3LO flow in your app, you cannot feed that token into an On-Behalf-Of (OBO) exchange — Entra requires the OBO assertion to target a middle-tier app, not Graph itself. This server avoids the problem entirely by calling Graph directly with the token you already have. ## Install & run with uvx The server ships as a `uvx`-runnable package. [`uv`](https://docs.astral.sh/uv/) builds and runs it in an isolated environment on demand — no manual `pip install`. Once published to an index you can run it by name: ```bash uvx keos-microsoft365-mcp ``` ## Providing the access token The token is resolved per request in this order: 1. **Explicit argument** — pass `access_token` in the tool call arguments. 2. **Bearer header** — when running over HTTP, send `Authorization: Bearer <token>`. 3. **Environment** — `GRAPH_ACCESS_TOKEN` (or the legacy `SHAREPOINT_ACCESS_TOKEN`). The token must be a Microsoft Graph delegated access token (`aud = https://graph.microsoft.com`). Grant the scopes for the tools you use: | Area | Delegated scopes | |------|------------------| | SharePoint / OneDrive / Groups files | `Sites.Read.All` / `Sites.ReadWrite.All`, `Files.Read.All` / `Files.ReadWrite.All`, `Group.Read.All` | | Mail | `Mail.Read`, `Mail.ReadWrite`, `Mail.Send` | | Calendar | `Calendars.ReadWrite` | | Users & Directory | `User.Read.All`, `Directory.…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.