MCP server for Microsoft Graph Teams integration, with meeting creation (Teams join links + calendar meetings)
Strong foundation with 20 well-named tools, comprehensive schemas, and clear descriptions. All tools have input schemas with type definitions and parameter descriptions. Tool names follow verb_noun convention (get_, list_, create_, send_, delete_, update_, search_). Descriptions average ~120 chars, meeting the 10-1024 char baseline. However, some parameter descriptions lack actionable constraints (e.g., 'List of user mentions' without format guidance), and output schemas are not explicitly documented. Error handling is present but generic. Missing idempotency guidance for write operations and confirmation patterns for destructive tools (delete_chat_message, delete_channel_message).
Check the authentication status of the Microsoft Graph connection. Returns whether the user is authenticated and shows their basic profile information.
Create a scheduled Microsoft Teams meeting as an Outlook calendar event with invitees. Sends invitations to attendees and returns the Teams join link. Use this for real scheduled meetings; use create_meeting for a quick ad-hoc link.
Create a new chat conversation (1:1 or group chat) with specified participants.
Create an ad-hoc Microsoft Teams online meeting and return its join link (joinWebUrl). Does not send invitations or create a calendar event — use create_calendar_meeting for that. Start/end times are optional; omit them for a meeting that can be joined anytime.
Delete a message from a team channel.
Destructive tools (delete_chat_message, delete_channel_message) lack confirmation/dry-run pattern and recovery guidance. Descriptions do not warn of irreversibility or suggest undo steps.
Parameter descriptions for array types (mentions, attachments, members, attendees) lack format/structure guidance. E.g., 'List of user mentions' does not specify object schema, required fields, or example structure.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'Returns chat topics, types, and participant information') but do not specify field names, types, or structure. LLMs cannot plan downstream calls without knowing response shape.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Delete a message from a chat conversation.
Retrieve recent messages from a specific team channel. Returns message content, sender information, and timestamps.
Retrieve recent messages from a specific chat conversation. Returns message content, sender information, and timestamps.
Fetch join information for an existing online meeting, including the Teams join link and meeting details.
List all channels in a specific team. Returns channel names, descriptions, and IDs.
List all members of a specific team. Returns member names, roles, and IDs.
Get detailed information about a specific user by email or user ID. Returns profile information including display name, job title, department, and contact details.
List all recent chats (1:1 conversations and group chats) that the current user participates in. Returns chat topics, types, and participant information.
List all teams that the current user is a member of. Returns team names, descriptions, and IDs.
List users in the organization with optional search/filter. Returns user names, emails, and basic profile information.
Search for messages across Teams and Chats using Microsoft Graph Search API. Returns matching messages with context.
Send a message to a specific team channel. Supports plain text, HTML, and Markdown formatting. Optionally attach files.
Send a message to a specific chat. Supports plain text, HTML, and Markdown formatting. Optionally attach files.
Update the content of a previously sent channel message.
Update the content of a previously sent chat message.
Write operations (send_chat_message, send_channel_message, create_meeting, create_calendar_meeting, update_chat_message, update_channel_message) lack idempotency guidance. No mention of idempotent keys, retry safety, or duplicate prevention.
Error handling not visible in tool definitions. No guidance on retryable vs. fatal errors, user-fixable errors, or recovery steps (e.g., 'User not found, try search_users() first').