gmail-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Web UI setup server port (default: 3000) | 3000 |
| GMAIL_CLIENT_ID | Yes | Google OAuth2 Client ID | |
| GMAIL_REDIRECT_URI | No | Override redirect URI (default: http://localhost:3000/oauth/callback) | http://localhost:3000/oauth/callback |
| GMAIL_CLIENT_SECRET | Yes | Google OAuth2 Client Secret | |
| GMAIL_REFRESH_TOKEN | Yes | Long-lived refresh token (from setup wizard) |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_emailsA | List emails from Gmail. Filter by labels and/or a search query. Returns sender, subject, date, and snippet for each message. |
| read_emailB | Read the full content of a specific email by its message ID, including headers and decoded body. |
| search_emailsA | Search Gmail using the standard Gmail search syntax. Returns matching emails with sender, subject, date, and snippet. |
| download_attachmentB | Download a specific attachment from a Gmail message. Returns the base64-encoded attachment data and its MIME type. |
| list_attachments_with_safetyA | List attachments for a message and provide policy-based safety assessment for each file. |
| validate_attachmentA | Validate one attachment against local safety policy (size, MIME type, extension, filename). |
| download_attachment_safeA | Safely download one validated attachment. Blocks risky files and enforces policy checks before returning data. |
| redact_text_localB | Redact sensitive content from provided text using local privacy pipeline (orchestrator with deterministic fallback). |
| read_email_with_privacyA | Read one email and return only privacy-redacted subject/snippet/body fields using the local privacy pipeline. |
| send_emailC | Send an email via the authenticated Gmail account. |
| create_draftA | Create a draft email in Gmail without sending it. |
| reply_to_emailA | Reply to an existing email thread. Automatically sets Reply-To headers and preserves the thread. |
| delete_emailA | Move an email to Trash. Pass permanent: true to permanently delete (irreversible). |
| mark_as_readA | Mark an email as read by removing the UNREAD label. |
| mark_as_unreadB | Mark an email as unread by adding the UNREAD label. |
| set_labelsA | Add and/or remove labels on an email. Use get_labels to obtain valid label IDs. |
| get_labelsA | List all Gmail labels (system labels like INBOX, SENT and user-created labels). Returns label IDs, names, and message counts. |
| get_profileA | Get the authenticated Gmail user profile: email address, total message count, and thread count. Useful to verify the connection. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Multiple tools have overlapping purposes: list_emails and search_emails both return message lists with similar fields, read_email and read_email_with_privacy both read a single email, and download_attachment/download_attachment_safe/validate_attachment all handle attachment retrieval with safety. The descriptions help distinguish them, but the boundaries are still unclear and could cause misselection.
Most tools follow a consistent verb_noun snake_case pattern (e.g., read_email, list_emails, send_email, get_profile). However, a few tools have irregular modifiers like '_with_safety', '_safe', '_local', and '_with_privacy', which breaks the uniformity slightly but does not create chaos.
18 tools falls in the heavy range and feels slightly bloated due to redundancy. For instance, list_emails and search_emails overlap, and the attachment safety pipeline has three distinct tools that could be consolidated. Each tool has a purpose, but the count could be trimmed without losing capability.
Core Gmail workflows (read, search, send, reply, delete, labels) are covered, but there are significant gaps: create_draft has no way to send or update drafts, and get_labels exists but there are no tools to create or delete labels. This leaves workflows with dead ends, such as creating a draft that cannot be sent via the same server.