{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_yp88zrrcnyvt","handle":"mcp-microsoft-graph-auth","url":"https://wellknown.network/agents/mcp-microsoft-graph-auth","links":{"self":"https://wellknown.network/agents/mcp-microsoft-graph-auth/record.json","html":"https://wellknown.network/agents/mcp-microsoft-graph-auth","markdown":"https://wellknown.network/agents/mcp-microsoft-graph-auth/record.md","api":"https://wellknown.network/api/v1/agents/mcp-microsoft-graph-auth","status":"https://wellknown.network/api/v1/agents/mcp-microsoft-graph-auth/status","claim":"https://wellknown.network/agents/mcp-microsoft-graph-auth/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/mcp-microsoft-graph-auth/claim.json","badge":"https://wellknown.network/agents/mcp-microsoft-graph-auth/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/mcp-microsoft-graph-auth/history","tools":"https://wellknown.network/api/v1/agents/mcp-microsoft-graph-auth/tools"},"ard":{"identifier":"urn:air::server:mcp-microsoft-graph-auth","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"mcp-microsoft-graph-auth","summary":"Shared Microsoft Graph auth helpers (Device Code, token cache, BYO client) for MCP servers.","description":"<!--\nSPDX-License-Identifier: MIT OR Apache-2.0\nSPDX-FileCopyrightText: 2026 XMV Solutions GmbH\nSPDX-FileContributor: David Koller <david.koller@xmv.de>\n-->\n\n# mcp-microsoft-graph-auth\n\nShared Microsoft Graph authentication helpers for [MCP](https://modelcontextprotocol.io) servers.\n\n[![PyPI version](https://img.shields.io/pypi/v/mcp-microsoft-graph-auth.svg)](https://pypi.org/project/mcp-microsoft-graph-auth/)\n[![CI](https://github.com/XMV-Solutions-GmbH/mcp-microsoft-graph-auth/actions/workflows/ci.yml/badge.svg)](https://github.com/XMV-Solutions-GmbH/mcp-microsoft-graph-auth/actions/workflows/ci.yml)\n[![Python](https://img.shields.io/pypi/pyversions/mcp-microsoft-graph-auth.svg)](https://pypi.org/project/mcp-microsoft-graph-auth/)\n[![License: MIT OR Apache-2.0](https://img.shields.io/badge/License-MIT_OR_Apache--2.0-blue.svg)](LICENSE-MIT)\n\n## Why this exists\n\n[`mcp-server-sharepoint`](https://github.com/XMV-Solutions-GmbH/sharepoint-mcp) and [`mcp-server-outlook`](https://github.com/XMV-Solutions-GmbH/outlook-mcp) (and likely future siblings — Teams, OneDrive, …) all need the same auth machinery against Microsoft Graph: OAuth Device Code flow, token cache with sensible storage backends, optional service-principal mode, multi-profile support.\n\nThis library factors that machinery out so each MCP server adds only what's specific to its API surface (scopes + tool names), not yet another reimplementation of Device Code + token storage.\n\n## What's in the box\n\n- **`device_code`** — primitives for the OAuth 2.0 Device Code flow against Microsoft Identity v2.0 (`request_device_code`, `poll_for_token`, `refresh_access_token`).\n- **`service_principal`** — client-credentials grant for unattended automation (CI runners, scheduled jobs).\n- **`token_store`** — three pluggable storage backends:\n  - **OS keyring** (macOS Keychain / Windows Credential Locker / Linux Secret Service) when available.\n  - **Plain file** mode 0600 (`~/.cache/<your-app>/<profile>/token.json`) — same c…","publisher":null,"homepage":"https://github.com/XMV-Solutions-GmbH/mcp-microsoft-graph-auth","repository":"https://github.com/XMV-Solutions-GmbH/mcp-microsoft-graph-auth/blob/main/CHANGELOG.md","version":"0.1.2","license":null,"protocols":["mcp"],"tags":["device-code","mcp","microsoft-graph","model-context-protocol","oauth"],"pricing":null,"endpoints":[{"url":"pypi:mcp-microsoft-graph-auth","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi"}},"derived":{"capabilities":[{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":1,"provenance":"derived"},{"slug":"infra.devices","name":"Devices & IoT","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"declared"},{"slug":"security.secrets","name":"Secrets Management","confidence":0.859,"provenance":"derived"}],"categories":["infra","knowledge","security"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"mcp-microsoft-graph-auth","registry":"pypi","observedAt":"2026-10-28T12:22:48.883Z","publishedAt":"2026-05-12T10:45:19.703761Z","latestVersion":"0.1.2"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"mcp-microsoft-graph-auth","url":"https://pypi.org/project/mcp-microsoft-graph-auth/","firstSeenAt":"2026-09-10T02:23:48.632Z","fetchedAt":"2026-10-28T12:20:58.410Z","normalizedAt":"2026-10-28T12:20:58.410Z"}]},"firstSeenAt":"2026-09-10T02:23:48.632Z","updatedAt":"2026-10-28T12:22:48.883Z"}