multi-gmail-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ACCOUNTS_DIR | No | Absolute or config-home-relative path to token files. | |
| MULTI_GMAIL_MCP_HOME | No | Base directory for credentials, tokens, and local data. Default: ~/.multi-gmail-mcp | |
| FOLLOWUP_REMINDERS_PATH | No | Absolute or config-home-relative reminder store file path. | |
| GOOGLE_CREDENTIALS_PATH | No | Absolute or config-home-relative path to OAuth credentials JSON file. | |
| GMAIL_REVIEW_MARKDOWN_DIR | No | Absolute or config-home-relative inbox export directory. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| multi_gmail_helpA | Shows setup and the recommended inbox workflow: fetch mode=list, triage metadata, get_thread one thread at a time, draft, send after approval. |
| helpA | Shows setup and the recommended inbox workflow: fetch mode=list, triage metadata, get_thread one thread at a time, draft, send after approval. |
| multi_gmail_connectA | Start Gmail login with |
| connectA | Start Gmail login with |
| multi_gmail_connect_finishC | Finish Gmail login after browser approval. Waits if needed; no manual code copy required. After success, run |
| connect_finishC | Finish Gmail login after browser approval. Waits if needed; no manual code copy required. After success, run |
| multi_gmail_setup_labelsA | Calls the Gmail API to create the configured user labels ( |
| setup_labelsA | Calls the Gmail API to create the configured user labels ( |
| multi_gmail_accountsA | Returns token file aliases (strings). Pass one as accountAlias on other tools when the MCP client shares one default session across chats. |
| accountsA | Returns token file aliases (strings). Pass one as accountAlias on other tools when the MCP client shares one default session across chats. |
| multi_gmail_set_signerB | Saves the display name used on reply drafts for this session, and optionally the Gmail follow-up label name. Call after login when the user says how they want to sign. Advanced: |
| set_signerA | Saves the display name used on reply drafts for this session, and optionally the Gmail follow-up label name. Call after login when the user says how they want to sign. Advanced: |
| multi_gmail_set_modeB | Choose |
| set_modeA | Choose |
| multi_gmail_statusB | Shows account connection, signer name, last inbox batch, due follow-ups, and local paths. Use this first when unsure what to do next. |
| statusB | Shows account connection, signer name, last inbox batch, due follow-ups, and local paths. Use this first when unsure what to do next. |
| multi_gmail_diagnosticsB | Verifies credentials path, accounts storage, reminders store, and active account binding, then suggests the next action. |
| diagnosticsC | Verifies credentials path, accounts storage, reminders store, and active account binding, then suggests the next action. |
| multi_gmail_fetchA | Recommended: mode=list (default) returns lightweight metadata for triage (subject, snippet, threadId). Snippets are not full email bodies — call get_thread(threadId) for each thread the user should read or reply to, and present message.text verbatim (do not summarize). Never load multiple full threads in one context. queryMode=inbox (default) prepends inbox review filters (in:inbox, exclude follow-up label). queryMode=raw passes query to Gmail unchanged — use for sent mail, archives, all-mail, and date-filtered analysis (e.g. in:sent after:2026/01/01). Legacy mode=full batch-loads bodies and auto-drafts every thread (token-heavy; avoid for normal inbox review). Nothing is sent automatically. |
| fetchA | Recommended: mode=list (default) returns lightweight metadata for triage (subject, snippet, threadId). Snippets are not full email bodies — call get_thread(threadId) for each thread the user should read or reply to, and present message.text verbatim (do not summarize). Never load multiple full threads in one context. queryMode=inbox (default) prepends inbox review filters (in:inbox, exclude follow-up label). queryMode=raw passes query to Gmail unchanged — use for sent mail, archives, all-mail, and date-filtered analysis (e.g. in:sent after:2026/01/01). Legacy mode=full batch-loads bodies and auto-drafts every thread (token-heavy; avoid for normal inbox review). Nothing is sent automatically. |
| multi_gmail_get_threadA | Load one Gmail thread at a time (use after fetch mode=list). format=full (default) returns plain-text message bodies. Use stripped=false to read the full email; stripped=true removes quoted reply history when drafting in multi-message threads. format=latest trims to first + latestN messages. Present message.text verbatim to the user — do not summarize. Call separately per thread. |
| get_threadA | Load one Gmail thread at a time (use after fetch mode=list). format=full (default) returns plain-text message bodies. Use stripped=false to read the full email; stripped=true removes quoted reply history when drafting in multi-message threads. format=latest trims to first + latestN messages. Present message.text verbatim to the user — do not summarize. Call separately per thread. |
| multi_gmail_archiveA | Archive a Gmail thread for the active account by removing the INBOX label. Use threadId from fetch, followup_due, or get_thread. |
| archiveA | Archive a Gmail thread for the active account by removing the INBOX label. Use threadId from fetch, followup_due, or get_thread. |
| multi_gmail_sendA | Send one approved reply. Requires |
| sendA | Send one approved reply. Requires |
| multi_gmail_send_newA | Send one approved new email. Use for campaigns and cold outreach — no |
| send_newA | Send one approved new email. Use for campaigns and cold outreach — no |
| multi_gmail_set_draftC | Save/update a Gmail draft reply for a thread without sending. Requires |
| set_draftB | Save/update a Gmail draft reply for a thread without sending. Requires |
| multi_gmail_followup_triggerB | Create follow-up reminders using |
| followup_triggerB | Create follow-up reminders using |
| multi_gmail_followup_dueC | List reminders due now for the active account and refresh thread state before review. Returns the refreshed full thread context for each due reminder. Always present the full draft to the user for proof-reading before any send action. Never call followup_send without explicit user approval. |
| followup_dueA | List reminders due now for the active account and refresh thread state before review. Returns the refreshed full thread context for each due reminder. Always present the full draft to the user for proof-reading before any send action. Never call followup_send without explicit user approval. |
| multi_gmail_followup_sendA | Send one approved follow-up reminder. Re-checks the thread first and blocks send if customer already replied. Optional overrides: |
| followup_sendA | Send one approved follow-up reminder. Re-checks the thread first and blocks send if customer already replied. Optional overrides: |
| multi_gmail_followup_cleanupA | Remove follow-up reminder(s) from the local store. Pass reminderIds, messageId, messageHeaderId, sourceThreadId, or followUpChainId. Use cancelChain: true with reminderIds to drop an entire chained sequence. Use deleteAll: true with confirm: true to clear all reminders for the account. Optionally removes the Gmail follow-up label when no reminders remain for a thread. |
| followup_cleanupA | Remove follow-up reminder(s) from the local store. Pass reminderIds, messageId, messageHeaderId, sourceThreadId, or followUpChainId. Use cancelChain: true with reminderIds to drop an entire chained sequence. Use deleteAll: true with confirm: true to clear all reminders for the account. Optionally removes the Gmail follow-up label when no reminders remain for a thread. |
| multi_gmail_fetch_draftsA | List drafts saved in Gmail Drafts folder. Separate from inbox. Use to review unsent drafts. |
| fetch_draftsA | List drafts saved in Gmail Drafts folder. Separate from inbox. Use to review unsent drafts. |
| multi_gmail_fetch_sentA | Deprecated — prefer multi_gmail_fetch with queryMode=raw and a Gmail query such as in:sent after:2026/01/01 before:2026/04/01 for filtered sent-mail analysis. This tool still lists the latest messages in Gmail Sent without date/query filters. |
| fetch_sentB | Deprecated — prefer multi_gmail_fetch with queryMode=raw and a Gmail query such as in:sent after:2026/01/01 before:2026/04/01 for filtered sent-mail analysis. This tool still lists the latest messages in Gmail Sent without date/query filters. |
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
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/japan08/MCP-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server