msgraph-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MICROSOFT_SCOPES | No | Space-separated delegated permissions (default: User.Read Mail.ReadWrite Mail.Send Calendars.ReadWrite Calendars.ReadWrite.Shared People.Read) | |
| MICROSOFT_CLIENT_ID | Yes | Azure app registration client ID (required) | |
| MICROSOFT_TENANT_ID | No | Tenant ID: 'organizations', 'common', or a specific tenant GUID (default: common) | |
| MAX_ATTACHMENT_INLINE_SIZE | No | Max attachment size (bytes) for inline base64 (default: 1572864) | |
| MICROSOFT_TOKEN_CACHE_PATH | No | Path to the local MSAL token cache (default: .data/msal_token_cache.json) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| auth_statusA | Show current Microsoft auth configuration and cached accounts. When running inside the MCP Lambda wrapper framework, reports framework-managed authentication status instead of local MSAL state. |
| start_authA | Start Microsoft authentication. In Lambda mode, returns an OAuth authorization URL. In local mode, starts the device-code flow. |
| finish_authA | Complete Microsoft authentication after user approval. In Lambda mode, this is not needed — call auth_status instead. In local mode, completes the device-code flow. |
| list_foldersA | List mail folders. Pass parent_folder_id to list subfolders (check child_folder_count to know if subfolders exist). |
| list_messagesA | List recent mail messages from a folder, newest first. Pass |
| get_messageB | Get a full read-only view of a specific mail message. |
| update_messageB | Update message properties: read/unread, follow-up flag (flagged/complete/notFlagged), or color categories. |
| move_messageC | Move a message to another folder. Requires Mail.ReadWrite permission. |
| delete_messageC | Delete a message or move it to Deleted Items. Requires Mail.ReadWrite permission. |
| search_messagesC | Search messages using Microsoft Graph message search. |
| bulk_manage_messagesA | Bulk-manage messages with filtering. Supports dry-run, delete, move, and mark-read actions. By default ( The response reports coverage honestly: |
| list_calendarsB | List readable calendars. Pass user_id for shared calendars (e.g. another user's email or object ID). |
| list_eventsC | List events from a calendar in a time range. Pass user_id for shared calendars. |
| get_eventB | Get full details for a specific calendar event. Pass user_id for shared calendars. |
| send_messageA | Compose and send an email (no attachments). Defaults to dry-run (preview only). Set dry_run=False to actually send. To send with attachments, use create_draft + add_attachment_to_draft + manage_draft instead. |
| reply_to_messageA | Reply to a message. Defaults to dry-run (preview only). Set dry_run=False to actually send. |
| forward_messageA | Forward a message. Defaults to dry-run (preview only). Set dry_run=False to actually send. |
| create_draftB | Create a draft email (saved to Drafts folder). Use this when you need to add attachments before sending, or want to build a message over multiple steps. Then use manage_draft to send. |
| manage_draftA | Update and/or send a previously created draft. Provide fields to update, set send=True to send. Use after create_draft and optionally add_attachment_to_draft. |
| get_attachmentsA | Get attachments for a message. Without attachment_id: list all metadata. With attachment_id: download that attachment (base64 if under 1.5 MB). |
| add_attachment_to_draftC | Attach a file (base64-encoded) to a draft message. |
| create_folderB | Create a new mail folder, optionally under a parent folder. |
| list_aliasesC | List email aliases (send-from addresses) for the authenticated user. |
| create_eventB | Create a new calendar event. Pass user_id for shared calendars. |
| update_eventC | Update an existing calendar event. Pass user_id for shared calendars. |
| delete_eventB | Delete or cancel a calendar event. Pass user_id for shared calendars. |
| respond_to_eventC | Respond to a meeting invite. Pass user_id for shared calendars. |
| check_availabilityB | Check calendar availability. mode='free_busy': get free/busy schedule. mode='suggest': suggest meeting times. |
| search_peopleB | Search for people by name to find their email addresses. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jspv/msgraph-email-calendar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server