@mcp-z/mcp-gmail
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for HTTP transport (used for OAuth callback URL). | |
| AUTH_MODE | No | Authentication mode: loopback (default), service-account, or dcr. | |
| REDIRECT_URI | No | Redirect URI for OAuth. Omit for local loopback; set to public /oauth/callback for cloud. | |
| DCR_STORE_URI | No | URI for DCR registration storage (default: file://). | |
| TOKEN_STORE_URI | No | URI for OAuth token storage (default: file:// under ~/.mcp-z/). | |
| GOOGLE_CLIENT_ID | No | Your Google OAuth client ID. Required for loopback OAuth and DCR modes. | |
| GOOGLE_CLIENT_SECRET | No | Your Google OAuth client secret. Required for loopback OAuth and DCR modes. | |
| GOOGLE_SERVICE_ACCOUNT_KEY_FILE | No | Path to the Google service account JSON key file. |
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": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| categories-listA | List Gmail category labels (CATEGORY_*) with IDs and descriptions. |
| label-addB | Add a label to a Gmail message |
| label-deleteA | Delete Gmail labels permanently (irreversible). System labels (INBOX, SENT, etc.) cannot be deleted. |
| labels-listA | List Gmail labels for label: query syntax. Case-sensitive. |
| message-getA | Get a Gmail message by ID with flexible field selection |
| message-mark-readA | Mark a Gmail message as read |
| message-move-to-trashA | Move Gmail messages to trash (recoverable). |
| message-respondB | Send a reply to a Gmail message |
| message-searchB | Search Gmail messages using structured query objects with flexible field selection. |
| message-sendC | Send an email message through Gmail |
| messages-export-csvA | Export Gmail messages to CSV with streaming pagination. Returns file URI. Use query-syntax prompt for query reference. |
| account-meA | Show current mcp-gmail user identity. Returns email, alias (if set), and session expiry information. |
| account-switchA | Use mcp-gmail account (smart mode). If email/alias provided and already linked, switches to it without triggering OAuth. If not linked or no email provided, triggers OAuth browser flow to add account. Returns account email, whether it was newly added, and total account count. |
| account-removeA | Remove mcp-gmail account and delete stored tokens permanently. If removing the active account, the first remaining account becomes active. Requires email or alias parameter. |
| account-listA | List all linked mcp-gmail accounts with their aliases and active status. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| draft-email | Draft an email response |
| query-syntax | Reference guide for Gmail query syntax |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Most tools are clearly scoped by resource prefix (message-, label-, account-), but categories-list and labels-list both surface label-like data and could be confused. message-send and message-respond also overlap slightly, though the descriptions clarify the reply behavior.
Names follow a consistent resource-action pattern with lowercase hyphenation, such as message-get, label-add, and account-list. Minor inconsistencies exist: labels-list and messages-export-csv use plurals while label-add and message-get use singular, and account-me uses a pronoun instead of a verb.
15 tools sits at the top of the well-scoped range, but each tool covers a meaningful operation across accounts, labels, and messages. There is no obvious filler or redundancy that makes the set feel bloated.
Core message operations are covered well (send, get, search, reply, trash, mark-read), but the label lifecycle is incomplete: there is no way to create a label, and label-add has no counterpart for removing a label from a message. Trash also lacks a restore operation.