Microsoft Graph MCP Server - Access Microsoft 365 from Claude, Cursor, and VS Code
Server has 24 tools with complete input schemas and descriptions. Naming follows verb_noun convention (search_tools, execute_tool, calendar_list_events, etc.). Descriptions are present and actionable (avg ~120 chars), exceeding the 20-char minimum. However, several critical gaps reduce quality: (1) Output schemas are not documented, tools return results but the response structure is not specified in the tool definitions, forcing LLMs to infer output shape. (2) Parameter descriptions lack constraint details (e.g., calendar_list_events accepts ISO 8601 dates but doesn't specify format in description). (3) No error handling guidance, tools don't describe what happens on failure or how to recover. (4) execute_tool is a meta-tool that accepts arbitrary parameters, creating a schema validation gap. (5) Some parameters like 'tenant' in execute_tool lack clear enum constraints despite being a known set. Strengths: consistent naming, all tools have descriptions, Zod schemas are properly typed in code.
Create a new calendar event for a user.
Delete a calendar event for a user.
Get the free/busy availability schedule for one or more users.
Get a specific calendar event by its ID for a given user.
List calendar events for a user within a specified date range using the calendarView endpoint.
Update an existing calendar event for a user.
Output schemas not documented. Tools return results but response structure is not specified in tool definitions. LLMs cannot plan downstream calls or extract required fields without inferring output shape.
execute_tool accepts arbitrary 'parameters' object without schema validation. This meta-tool pattern bypasses input validation and makes it impossible for LLMs to understand what parameters are valid for a given tool_name.
Parameter descriptions lack constraint details. Date parameters (startDateTime, endDateTime) specify ISO 8601 format in description but don't clarify timezone handling or whether times are required. Numeric limits (e.g., $top, limit) lack min/max bounds.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
Create a new contact for a user.
Delete a contact for a user.
Get a specific contact by ID for a given user.
List contacts for a user.
Update an existing contact for a user.
Execute a Microsoft Graph tool by name with the given parameters. Use search_tools first to discover available tools and their required parameters. When multiple Entra ID tenants are configured, pass 'tenant' to target a specific one (see tenants_list); otherwise the default tenant is used.
Get the download URL for a file in a user's OneDrive. Returns the pre-authenticated download URL.
Get metadata for a specific file or folder in a user's OneDrive by item ID.
List files and folders in a user's OneDrive. Defaults to the root folder if no path is specified.
Search for files and folders in a user's OneDrive by query string. Searches file names, metadata, and file content.
Create a sharing link for a file or folder in a user's OneDrive.
Upload a small file (up to 4 MB) to a user's OneDrive by providing the file content as a string.
Create a new group in the directory.
Get a specific group by its ID.
List groups in the organization with optional filtering and pagination.
List members of a specific group.
Add or remove a member from a group.
Search available Microsoft Graph tools. Use category filter for best results.
No error handling guidance. Tools don't describe failure modes, recovery steps, or what to do if a user/resource is not found. Error responses will not guide LLM recovery.
Destructive operations (calendar_delete_event, contacts_delete, groups_manage_members with 'remove') lack confirmation or dry-run support. Agents can delete resources without a safety gate.