Gmail MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gmail_list_accountsA | List all configured Gmail accounts and their authentication status |
| gmail_switch_accountA | Switch the active Gmail account for this session. All subsequent tool calls use this account by default unless overridden. |
| gmail_authenticateB | Authenticate a Gmail account via OAuth. Opens a browser for Google consent. |
| gmail_search_messagesC | Legacy search returning an array of Gmail message metadata using Gmail query syntax. |
| gmail_search_emailsA | Paginated rich Gmail search. Prefer this for triage because it returns messages, nextPageToken, and resultSizeEstimate. |
| gmail_read_messageA | Read a specific Gmail message by ID, including full body content |
| gmail_batch_read_messagesA | Read explicit shortlisted Gmail message IDs. Use after search when snippets are insufficient. |
| gmail_read_threadB | Read a Gmail thread. Pass thread_id for legacy behavior, or id plus id_type=message/thread. max_messages returns the most recent N messages. |
| gmail_list_labelsA | List all Gmail labels for an account |
| gmail_create_labelA | Create a Gmail label, or return the existing label if one already has this name. |
| gmail_create_filterB | Create a Gmail filter. Label names must already exist and are resolved to label IDs. |
| gmail_list_filtersA | List all Gmail filters for an account |
| gmail_delete_filterB | Delete one Gmail filter by its filter ID |
| gmail_apply_labels_to_messagesB | Apply or remove Gmail labels on explicit message IDs. Does not accept queries. |
| gmail_archive_messagesA | Archive explicit Gmail message IDs by removing INBOX. Does not accept queries. |
| gmail_stage_trash_messagesA | Stage explicit messages for Trash. Must be confirmed with gmail_confirm_trash_messages. |
| gmail_confirm_trash_messagesB | Confirm and move previously staged messages to Trash using the confirmation code. |
| gmail_prepare_bulk_label_queryA | Preview and stage a capped query-based bulk label operation. Nothing changes until gmail_confirm_bulk_label_operation. |
| gmail_confirm_bulk_label_operationB | Confirm a staged bulk label operation using the confirmation code. |
| gmail_create_draftA | Create a draft email (does NOT send it) |
| gmail_list_draftsC | List Gmail drafts with summarized metadata. |
| gmail_update_draftA | Update an existing Gmail draft. Omitted fields preserve current values. Drafts with attachments are rejected. |
| gmail_create_forward_draftB | Create draft forwards for source messages. Source attachments are not preserved in v1. |
| gmail_get_profileA | Get Gmail profile info for an account (message/thread counts) |
| gmail_send_draftA | Stage a draft for sending. Returns a preview and confirmation code. The draft is NOT sent until gmail_confirm_send. |
| gmail_confirm_sendA | Confirm and send a previously staged draft. Code expires after 60 seconds. |
| gmail_download_attachmentA | Download an email attachment to a sandboxed quarantine directory. Returns local path, SHA-256 hash, and image flag. |
| drive_search_docsB | Search Google Docs visible to an account by title using Drive metadata only. |
| drive_get_file_metadataA | Get Google Drive file metadata visible to an account. Does not download file content. |
| drive_list_commentsA | List comments on a Google Drive file visible to an account. Uses existing narrow Drive access and does not broaden scopes. |
| drive_list_revisionsB | List coarse Drive revisions for a file visible to an account. For native Docs, this is not the full editor version history. |
| docs_read_documentA | Read text and tables from a Google Doc visible to an account. |
| drive_create_folderA | Create a Google Drive folder visible to an account. Uses the narrow drive.file scope. |
| drive_upload_fileA | Upload an explicit local file to Google Drive for an account. Uses the narrow drive.file scope. |
| drive_create_text_docA | Create a native Google Doc from plain text in Google Drive. Uses the narrow drive.file scope. |
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 35 tools
Most tools have clearly distinct purposes, but there is some overlap between gmail_search_messages and gmail_search_emails, and between archive/trash workflows. Descriptions help differentiate, but ambiguity remains for agents.
All tools follow a consistent verb_noun snake_case pattern with domain prefixes (gmail_, drive_, docs_). Naming is predictable and readable across the entire set.
35 tools is high, but it combines Gmail and Google Drive/Docs functionality. The count could be reduced by merging similar operations (e.g., staging/confirmation pairs), but it remains within acceptable bounds for the combined scope.
Common Gmail operations are covered (search, read, send, labels, filters, archive, trash), but missing permanent deletion and direct marking of read/unread. Drive/Docs coverage is basic (search, metadata, read, create, upload) but lacks editing and broader file operations.