{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-microsoft-365","slug":"microsoft-365","name":"Microsoft 365","type":"mcp","url":"https://github.com/softeria/ms-365-mcp-server","page_url":"https://unfragile.ai/microsoft-365","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-microsoft-365__cap_0","uri":"capability://tool.use.integration.unified.microsoft.365.api.abstraction.via.graph","name":"unified-microsoft-365-api-abstraction-via-graph","description":"Exposes the entire Microsoft 365 ecosystem (Office, Outlook, Excel, Teams, SharePoint) through a single MCP server interface that translates tool calls into Microsoft Graph API requests. The server acts as a protocol bridge, converting MCP tool schemas into authenticated Graph API calls and marshaling responses back as structured data, eliminating the need for clients to handle OAuth, API versioning, or endpoint routing directly.","intents":["I want to query and manipulate Microsoft 365 data from my LLM agent without managing authentication or API complexity","I need a single integration point to access mail, calendar, files, and documents across Office 365","I want to build multi-step workflows that coordinate actions across Outlook, Excel, and SharePoint"],"best_for":["LLM agent developers building enterprise automation workflows","Teams building AI assistants that need read/write access to Office 365 tenants","Organizations migrating from REST API direct calls to MCP-based tool orchestration"],"limitations":["Requires Azure AD app registration and Graph API permissions scoped per tenant — cannot work with personal Microsoft accounts without enterprise setup","No built-in caching layer — each MCP call translates to a live Graph API request, adding latency for repeated queries","Rate limiting inherited from Microsoft Graph API (throttling at 2000 requests per 10 seconds per app) — no client-side batching abstraction","Depends on Graph API feature availability — newer Office 365 features may lag behind native client support"],"requires":["Azure AD tenant with admin consent for Graph API scopes","Microsoft Graph API credentials (client ID, client secret, or managed identity)","MCP-compatible client (Claude Desktop, LLM frameworks with MCP support)","Network access to graph.microsoft.com endpoints"],"input_types":["tool call parameters (JSON schema-based)","email addresses, calendar IDs, file paths, SharePoint site URLs","structured query filters (date ranges, recipient lists, file types)"],"output_types":["structured JSON (mail messages, calendar events, file metadata)","file content (Office documents, attachments as base64 or streams)","operation confirmations (success/failure with error codes)"],"categories":["tool-use-integration","enterprise-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-microsoft-365__cap_1","uri":"capability://tool.use.integration.email.and.mailbox.operations.via.graph","name":"email-and-mailbox-operations-via-graph","description":"Enables reading, searching, filtering, and composing emails through Microsoft Graph's Mail API endpoints. The server translates MCP tool calls into Graph Mail resource queries (messages, folders, attachments) with support for OData filtering, pagination, and attachment handling. Supports both read operations (list, search, get message details) and write operations (send, draft, move to folders) with automatic handling of MIME encoding and attachment streaming.","intents":["I want to search my mailbox for emails matching specific criteria (sender, subject, date range) and extract structured data","I need to send emails programmatically from an LLM agent with attachments and formatting","I want to organize emails by moving them between folders or marking as read/unread based on agent decisions"],"best_for":["Developers building email-aware AI assistants (customer support bots, email triage agents)","Teams automating email workflows (forwarding, categorization, response generation)","Enterprise automation requiring mailbox access across multiple users"],"limitations":["Attachment handling limited to files under 4MB per Graph API constraints — larger files require chunked upload via OneDrive integration","Email search uses Graph's KQL (Keyword Query Language) which has different syntax than Exchange Server search — complex queries may require translation","No real-time push notifications — polling-based monitoring requires repeated API calls","Draft emails created via Graph API cannot be edited in Outlook clients until sent or explicitly synced"],"requires":["Graph API Mail.Read or Mail.ReadWrite scope (depending on read-only vs. write operations)","User mailbox accessible via authenticated Graph session","SMTP relay not required — Graph API handles message composition and sending"],"input_types":["email addresses (recipient lists)","search queries (KQL syntax or natural language converted to KQL)","message bodies (plain text or HTML)","file attachments (binary or base64-encoded)"],"output_types":["email message objects (sender, subject, body, timestamp, read status)","attachment metadata (filename, size, MIME type, download URLs)","folder lists and message counts","send/move operation confirmations"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-microsoft-365__cap_2","uri":"capability://tool.use.integration.calendar.and.event.management.via.graph","name":"calendar-and-event-management-via-graph","description":"Provides read and write access to Outlook calendars through Microsoft Graph's Calendar API, enabling agents to query events, create meetings, update attendees, and manage availability. The server translates MCP calls into Graph Calendar resource operations with support for recurring events, time zones, and attendee management. Handles calendar queries with date/time filtering, conflict detection, and automatic timezone normalization across different user locales.","intents":["I want to check calendar availability and find free time slots for scheduling meetings","I need to create calendar events programmatically with attendees, locations, and reminders","I want to query events within a date range and extract meeting details for downstream processing"],"best_for":["Developers building meeting scheduling assistants and calendar automation","Teams implementing AI-driven availability checking and conflict resolution","Enterprise workflows requiring cross-user calendar coordination"],"limitations":["Recurring event expansion requires client-side logic — Graph API returns recurrence rules (RRULE) but not expanded instances, requiring custom date math","Timezone handling depends on user's Outlook settings — ambiguous times may be interpreted differently across regions","No real-time calendar sync — changes made in Outlook clients may take seconds to reflect in Graph API queries","Attendee response tracking is read-only — cannot programmatically accept/decline on behalf of users"],"requires":["Graph API Calendars.Read or Calendars.ReadWrite scope","User mailbox with Outlook calendar configured","Attendee email addresses must be resolvable in the tenant's directory"],"input_types":["date/time ranges (ISO 8601 format with timezone)","event titles, descriptions, locations","attendee email addresses","recurrence rules (RRULE format or natural language)"],"output_types":["calendar event objects (title, start/end time, attendees, location, organizer)","availability windows (free/busy time blocks)","event creation/update confirmations with event IDs","attendee response status"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-microsoft-365__cap_3","uri":"capability://tool.use.integration.file.and.document.access.via.onedrive.sharepoint","name":"file-and-document-access-via-onedrive-sharepoint","description":"Enables reading, listing, uploading, and managing files stored in OneDrive and SharePoint through Microsoft Graph's Drive API. The server translates MCP calls into Graph Drive resource operations with support for file metadata queries, content streaming, folder hierarchies, and version history. Handles file operations including listing directory contents, downloading file content (with streaming for large files), uploading new files, and managing permissions and sharing links.","intents":["I want to list files in a OneDrive or SharePoint folder and extract metadata for processing","I need to download file content (documents, spreadsheets) and parse it for data extraction","I want to upload generated documents or reports to OneDrive/SharePoint programmatically"],"best_for":["Developers building document-aware AI agents that need to read/write Office files","Teams automating document management workflows (classification, archival, sharing)","Enterprise systems requiring programmatic access to shared document repositories"],"limitations":["Large file downloads (>100MB) require streaming implementation — Graph API doesn't support resumable downloads natively","Office document parsing requires separate libraries (e.g., python-docx, openpyxl) — MCP server returns raw file content, not parsed structure","Permission changes propagate asynchronously — sharing link creation may take seconds to become accessible","No built-in full-text search — file discovery requires iterating folder hierarchies or using Graph Search API separately"],"requires":["Graph API Files.Read or Files.ReadWrite scope","OneDrive or SharePoint site accessible to authenticated user","File paths or drive IDs for target locations"],"input_types":["file paths (relative to OneDrive root or SharePoint site)","drive IDs and item IDs","file content (binary or text for uploads)","folder paths for directory listing"],"output_types":["file metadata (name, size, modified date, MIME type, owner)","file content (binary stream or text)","folder listings (recursive or single-level)","sharing links and permission objects","version history metadata"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-microsoft-365__cap_4","uri":"capability://tool.use.integration.excel.workbook.operations.via.graph","name":"excel-workbook-operations-via-graph","description":"Provides programmatic access to Excel workbooks stored in OneDrive/SharePoint through Microsoft Graph's Excel API, enabling agents to read cell values, update ranges, query tables, and execute calculations. The server translates MCP calls into Graph Excel resource operations with support for named ranges, table queries, and formula evaluation. Handles workbook sessions for transactional updates and supports both read operations (get values, query tables) and write operations (update ranges, append rows).","intents":["I want to read data from an Excel workbook and extract structured information for analysis","I need to update Excel cells or append rows programmatically based on agent decisions","I want to query Excel tables and use the results in downstream LLM processing"],"best_for":["Developers building data-aware AI agents that integrate with Excel-based workflows","Teams automating spreadsheet updates and data entry","Enterprise systems using Excel as a data source for AI-driven decision making"],"limitations":["Excel API operates on cloud-hosted workbooks only — local Excel files require OneDrive/SharePoint upload first","Complex formulas and VBA macros are not executed — Graph API returns calculated values only for simple formulas","Concurrent editing conflicts require manual resolution — Graph API doesn't provide automatic conflict detection for overlapping range updates","Large workbooks (>50MB) may timeout — Graph API has request timeout limits that affect bulk operations"],"requires":["Graph API Files.ReadWrite scope for Excel workbooks","Excel workbook stored in OneDrive or SharePoint (not local file)","Workbook must be in .xlsx format (not legacy .xls)"],"input_types":["workbook file paths or drive item IDs","worksheet names","cell ranges (A1 notation or named ranges)","table names","cell values (numbers, text, formulas)"],"output_types":["cell values (raw or calculated)","table data (rows as structured objects)","range metadata (dimensions, data types)","update confirmations with affected cell counts"],"categories":["tool-use-integration","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-microsoft-365__cap_5","uri":"capability://tool.use.integration.teams.chat.and.message.operations","name":"teams-chat-and-message-operations","description":"Enables reading and sending messages in Microsoft Teams channels and direct messages through Microsoft Graph's Teams API. The server translates MCP calls into Graph Teams resource operations with support for message queries, thread replies, and message formatting. Handles team/channel discovery, message history retrieval with pagination, and message composition with support for rich text formatting and @mentions.","intents":["I want to read messages from Teams channels and extract information for processing","I need to send messages to Teams channels or direct messages programmatically","I want to query message history within a date range or search for specific conversations"],"best_for":["Developers building Teams-integrated AI assistants and chatbots","Teams automating notification and alert workflows","Enterprise systems requiring programmatic access to Teams communication"],"limitations":["Message editing and deletion not supported via Graph API — only creation and read operations available","Rich formatting (cards, adaptive cards) requires manual JSON construction — no abstraction layer for complex message layouts","Real-time message delivery not guaranteed — Graph API is polling-based, not push-based","Channel discovery limited to teams the authenticated user is member of — cannot enumerate all organizational channels"],"requires":["Graph API Chat.Read or Chat.ReadWrite scope","User membership in target Teams and channels","Team and channel IDs or names resolvable in the tenant"],"input_types":["team IDs and channel IDs","message text (plain text or HTML)","date ranges for message history queries","user mentions (@mentions with email addresses)"],"output_types":["message objects (sender, timestamp, content, thread ID)","channel and team metadata","message history (paginated results)","send confirmations with message IDs"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-microsoft-365__cap_6","uri":"capability://tool.use.integration.multi.tenant.oauth.and.credential.management","name":"multi-tenant-oauth-and-credential-management","description":"Implements OAuth 2.0 authentication and token management for Microsoft Graph API access, supporting both single-tenant and multi-tenant application scenarios. The server handles token acquisition, refresh, and caching, with support for different credential types (client credentials, delegated user permissions). Manages Azure AD app registration details and automatically routes requests to the correct tenant based on authenticated user context.","intents":["I want to authenticate my MCP client to Microsoft 365 without managing OAuth tokens manually","I need to support multiple tenants with different Azure AD configurations","I want to ensure tokens are refreshed automatically without interrupting agent workflows"],"best_for":["Developers building multi-tenant SaaS applications with M365 integration","Teams deploying MCP servers across multiple organizations","Enterprise IT automating credential management for AI agents"],"limitations":["Token refresh requires network access to Azure AD endpoints — offline operation not supported","Credential storage is in-memory by default — no built-in persistence, requires external secret management (Azure Key Vault, etc.)","Tenant discovery requires explicit configuration — cannot auto-discover all tenants a user has access to","Consent flow requires interactive browser-based authentication — service-to-service scenarios need pre-configured app permissions"],"requires":["Azure AD app registration with Graph API permissions configured","Client ID and client secret (or managed identity for Azure deployments)","Redirect URI configured in Azure AD for OAuth callback","Network access to login.microsoftonline.com and graph.microsoft.com"],"input_types":["Azure AD tenant ID or domain name","client credentials (client ID, client secret)","user email address (for delegated auth)"],"output_types":["OAuth access tokens (JWT format)","token expiration metadata","authentication status confirmations"],"categories":["tool-use-integration","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-microsoft-365__cap_7","uri":"capability://tool.use.integration.error.handling.and.graph.api.exception.translation","name":"error-handling-and-graph-api-exception-translation","description":"Translates Microsoft Graph API errors and exceptions into human-readable MCP error responses, providing context-specific guidance for common failure scenarios. The server maps Graph API HTTP status codes and error codes (e.g., 'ErrorAccessDenied', 'ErrorItemNotFound') to actionable error messages that help agents understand why operations failed and suggest remediation steps. Handles rate limiting, permission errors, and transient failures with appropriate retry logic.","intents":["I want my agent to understand why a Graph API call failed and take corrective action","I need clear error messages that distinguish between permission issues, missing resources, and transient failures","I want the MCP server to automatically retry transient failures without exposing retry logic to the agent"],"best_for":["Developers building resilient AI agents that handle M365 API failures gracefully","Teams implementing error monitoring and alerting for M365 integrations","Enterprise systems requiring detailed audit trails of API failures"],"limitations":["Graph API error messages are sometimes generic — distinguishing between 'permission denied' and 'resource not found' requires additional API calls","Retry logic is exponential backoff only — no intelligent retry strategies for specific error types","Rate limiting errors don't include retry-after headers in all cases — clients may need to implement adaptive backoff","Transient failures (network timeouts, service unavailability) are not always distinguishable from permanent errors"],"requires":["MCP client capable of handling structured error responses","Logging infrastructure to capture error details for debugging"],"input_types":["Graph API HTTP responses (status codes, error bodies)"],"output_types":["structured error objects (error code, message, remediation suggestions)","retry metadata (retry-after duration, backoff strategy)"],"categories":["tool-use-integration","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":29,"verified":false,"data_access_risk":"high","permissions":["Azure AD tenant with admin consent for Graph API scopes","Microsoft Graph API credentials (client ID, client secret, or managed identity)","MCP-compatible client (Claude Desktop, LLM frameworks with MCP support)","Network access to graph.microsoft.com endpoints","Graph API Mail.Read or Mail.ReadWrite scope (depending on read-only vs. write operations)","User mailbox accessible via authenticated Graph session","SMTP relay not required — Graph API handles message composition and sending","Graph API Calendars.Read or Calendars.ReadWrite scope","User mailbox with Outlook calendar configured","Attendee email addresses must be resolvable in the tenant's directory"],"failure_modes":["Requires Azure AD app registration and Graph API permissions scoped per tenant — cannot work with personal Microsoft accounts without enterprise setup","No built-in caching layer — each MCP call translates to a live Graph API request, adding latency for repeated queries","Rate limiting inherited from Microsoft Graph API (throttling at 2000 requests per 10 seconds per app) — no client-side batching abstraction","Depends on Graph API feature availability — newer Office 365 features may lag behind native client support","Attachment handling limited to files under 4MB per Graph API constraints — larger files require chunked upload via OneDrive integration","Email search uses Graph's KQL (Keyword Query Language) which has different syntax than Exchange Server search — complex queries may require translation","No real-time push notifications — polling-based monitoring requires repeated API calls","Draft emails created via Graph API cannot be edited in Outlook clients until sent or explicitly synced","Recurring event expansion requires client-side logic — Graph API returns recurrence rules (RRULE) but not expanded instances, requiring custom date math","Timezone handling depends on user's Outlook settings — ambiguous times may be interpreted differently across regions","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.41,"ecosystem":0.39999999999999997,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:03.578Z","last_scraped_at":"2026-05-03T14:00:15.503Z","last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=microsoft-365","compare_url":"https://unfragile.ai/compare?artifact=microsoft-365"}},"signature":"cazJwVrV/GKMoepKYw+SZSCxjH2NMdzoC/aXHhlhkYzxkw3v/xuiLqk/1OOVnkVXq8HjCnWzl1u6dA6Bkmz2Dg==","signedAt":"2026-06-21T23:44:32.111Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/microsoft-365","artifact":"https://unfragile.ai/microsoft-365","verify":"https://unfragile.ai/api/v1/verify?slug=microsoft-365","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}