gmail-multi-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GMAIL_MCP_HOME | No | Config/token folder. The default is ~/.config/gmail-multi-mcp. | ~/.config/gmail-multi-mcp |
| GMAIL_MCP_READ_ONLY | No | Set to 1 to hide every write tool (send, draft, labels, trash) for all accounts | |
| GMAIL_MCP_CREDENTIALS | No | Path to the OAuth client 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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List all connected Gmail accounts with their alias and read-only status. |
| search_emailsA | Search email using Gmail search syntax (e.g. 'is:unread from:bob newer_than:7d'). Args: query: Gmail search query. Empty returns the newest messages. account: Email or alias. Omit to search ALL connected accounts. max_results: Max messages per account (1-50). |
| read_emailB | Read one email in full (headers, plain-text body, attachment list). |
| read_threadC | Read every message in a conversation thread, oldest first. |
| list_labelsC | List labels (system and user-created) for an account. |
| send_emailA | Send an email from the given account. Confirm content with the user first. Args: account: Sender account (email or alias). to: Comma-separated recipients. subject: Subject. May be empty when replying (uses 'Re: '). body: Plain-text body. reply_to_message_id: Message id to reply to; keeps the thread intact. |
| create_draftB | Save an email as a draft in the given account (not sent). |
| modify_labelsB | Add/remove labels by name or id. Examples: mark read = remove ['UNREAD']; archive = remove ['INBOX']; star = add ['STARRED']. |
| trash_emailB | Move a message to Trash (recoverable for 30 days). |
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 9 tools
Each tool has a fairly distinct purpose: reading, searching, sending, drafting, trashing, and label management are all clearly separated. The only mild overlap is between modify_labels (which can apply TRASH/UNREAD labels) and trash_email, plus list_labels vs modify_labels, but descriptions make the intended use clear.
All nine tools follow a strict verb_noun snake_case pattern (list_accounts, search_emails, read_email, read_thread, list_labels, modify_labels, trash_email, send_email, create_draft). No camelCase or vague verbs mixed in.
Nine tools is a well-scoped surface for a multi-account Gmail server, covering the core mailbox operations without bloat. Every tool maps to a distinct mailbox workflow.
Core lifecycle is well covered: list/search/read/read thread, send, draft, trash, and label management across accounts. Minor gaps remain — no attachment download, no permanent delete (only trash), and no explicit forward or mark-spam/unspam tool, though these can be approximated with existing tools.