Teams MCP - Flows
2 min read
User Connection Flow
Everything starts when a user connects to the MCP server. This triggers OAuth authentication. After authentication, the user can start the KB integration via the start_kb_integration tool to begin receiving meeting notifications.


OAuth Scopes Required: See Microsoft Graph Permissions for detailed justification.
Important: Microsoft access and refresh tokens are never sent to the client. They are received by the server, encrypted, and stored securely. After the Microsoft OAuth flow completes, the server issues opaque JWT tokens to the client for MCP authentication.
Microsoft OAuth Setup Flow
The following sequence shows the complete Microsoft OAuth authentication flow with detailed token handling:

Microsoft Token Refresh Flow
Microsoft tokens are refreshed on-demand when the Graph API returns a 401 error:

Subscription Lifecycle
Subscriptions are renewed (not recreated) before they expire. If renewal fails for any reason, the subscription is deleted and the user must reconnect to the MCP server to re-authenticate.


Subscription Scheduling:
Subscriptions are set to expire at a configured UTC hour (default: 3 AM)
This batches all renewals to a single time window
Daily renewal ensures token validity is checked consistently
Minimum 2-hour subscription lifetime required for lifecycle notifications
If renewal fails: Subscription is deleted and user must reconnect to MCP server
See Microsoft Graph Webhooks - Lifecycle Notifications for details
Transcript Processing Flow
When a meeting transcript becomes available, Microsoft Graph sends a webhook notification. The recording is fetched if available (correlated by contentCorrelationId).


Webhook Validation:
Microsoft Graph sends a
clientStatevalue with each notificationThe server validates this matches the secret configured during subscription creation
Invalid
clientStateresults in request rejection
Recording Handling:
Recording fetch uses
contentCorrelationIdto find the matching recording for a transcriptIf the recording is not available, only the transcript is captured
Recording failures are logged but don't fail transcript processing
Recordings are stored with
SKIP_INGESTIONmode (no RAG processing)Both transcript and recording share the same
content_correlation_idin metadata
Access Control:
Meeting organizer receives write + read access
Meeting participants receive read access
Users are resolved by email or username in Unique platform
Related Documentation
Architecture - System components and infrastructure
Security - Encryption, PKCE, and threat model
Microsoft Graph Permissions - Required scopes and least-privilege justification
Standard References
Microsoft Graph API - Graph API overview
Microsoft Graph Webhooks - Webhook documentation
Microsoft Graph Subscriptions - Subscription API reference