Gmail Multi-Inbox MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for SSE mode (automatically switches to SSE if present) | |
| MCP_TRANSPORT | No | Force HTTP/SSE mode (set to 'sse') | |
| GMAILMCPCONFIG_DIR | No | Custom directory for storing account data | |
| GMAIL_MCP_CONFIG_DIR | No | Legacy custom directory for storing account data |
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_accountsA | List all configured Gmail inbox accounts and their authentication/health status. |
| read_emailsB | Read emails from one account or aggregate across all enabled accounts when account is omitted. |
| search_emailsA | Search Gmail using query syntax. Omitting account searches all enabled inboxes and merges results. |
| search_drive_filesA | Search Google Drive file metadata. Omitting account searches all enabled accounts and merges results. |
| get_email_threadA | Get a full email thread for one account (account required). Each message lists attachment metadata (filename, attachment_id, size). To read attachment content — PDF text, DOCX, XLSX, images via OCR — call get_all_attachments with the Gmail message ID shown as "Gmail ID" in each message. |
| get_labelsA | List labels for one account (account required). |
| mark_as_readB | Mark messages as read in one account (account required). |
| add_labelsB | Add labels to messages in one account (account required). |
| remove_labelsA | Remove labels from messages in one account (account required). |
| archive_emailsA | Archive messages in one account by removing INBOX label (account required). |
| trash_emailsB | Move messages to trash in one account (account required). |
| create_labelB | Create a new Gmail label in one account (account required). |
| delete_labelB | Delete a Gmail label in one account (account required). |
| block_senderA | Block a sender by creating a Gmail filter (same mechanism as Gmail's native "Block" button). Optionally also trashes existing mail from that sender. |
| list_blocked_sendersA | List all Gmail filters for an account. Use to find filter_id for unblock_sender, or to audit what is being auto-trashed/archived/spammed. |
| unblock_senderA | Remove a Gmail filter. Specify either filter_id (exact match) or sender (matches filters whose "from" criteria equals this value). |
| unsubscribe_from_emailA | Unsubscribe from a mailing list by invoking the List-Unsubscribe header (RFC 2369/8058). Same mechanism as Gmail's native "Unsubscribe" button. Falls back to mailto:. Returns method used. |
| mute_threadA | Mute a conversation: archives the thread now and (with scope="subject") installs a subject-based filter so future replies auto-archive. Approximates Gmail's client-side mute. |
| create_draftB | Create a draft email in one account (account required). |
| delete_draftsA | Permanently delete one or more drafts in one account (account required). Draft IDs are returned by create_draft or list_drafts. |
| send_draftA | Send an existing Gmail draft by draft ID. Returns message_id and thread_id. Use list_drafts to find draft IDs sorted oldest-first. |
| list_draftsA | List drafts in an account sorted oldest-first by internalDate. Returns draft_id (for send_draft/delete_drafts), message_id, thread_id, subject, to, and internalDate. |
| search_draftsA | Search drafts by Gmail query string. Returns draft_id (for send_draft/delete_drafts), message_id, thread_id, subject, to, and snippet. Use instead of search_emails when you need to delete or send a found draft. |
| send_emailC | Send an email from one account (account required). |
| begin_account_authB | Start OAuth onboarding for an account. Accepts credentials JSON or a path to credentials.json. |
| finish_account_authA | Complete OAuth onboarding by exchanging authorization code and storing token.json. |
| get_attachmentA | Fetch a single attachment by id. Use when you only need one specific file. For all attachments at once, use get_all_attachments instead. Requires the Gmail message ID ("Gmail ID" from get_email_thread) and the attachment_id. Saves to ~/Downloads/mcp-attachments/ and returns extracted text for PDF, DOCX, XLSX, PPTX, text, and images via OCR. |
| get_all_attachmentsA | Call this whenever a thread or email shows attachments. Fetches and extracts content from all attachments in one shot: PDF (text extraction), DOCX, XLSX, PPTX, images (OCR). Use the Gmail message ID ("Gmail ID" from get_email_thread output) — NOT the thread ID. Saves each file to ~/Downloads/mcp-attachments/ and returns extracted text. |
| list_drive_filesA | List Google Drive files. Omitting account aggregates across all enabled accounts. Optionally filter by folder or text query. |
| get_drive_fileA | Get full metadata for a specific Google Drive file including size, parents, export links. |
| get_drive_file_contentA | Download a Drive file and extract its text content. Google Docs/Sheets/Slides are exported to Office formats then parsed. PDFs, images, and text files are also supported. |
| upload_drive_fileB | Upload a local file to Google Drive. |
| create_drive_folderC | Create a new folder in Google Drive. |
| update_drive_fileB | Update a Drive file — rename it, move it between folders, star/unstar, or update its description. |
| trash_drive_fileB | Move a Google Drive file to trash. |
| share_drive_fileA | Share a Google Drive file by adding a permission. |
| sheets_getA | Get Google Sheets spreadsheet metadata: title, sheet tabs, row/column counts. |
| sheets_readA | Read cell values from a Google Sheet range (e.g., "Sheet1!A1:D10" or "A1:D10" for the first sheet). |
| sheets_writeA | Write values to a Google Sheet range. Overwrites existing values in the specified range. |
| sheets_appendA | Append rows to a Google Sheet after the last row with data. |
| sheets_createA | Create a new Google Sheets spreadsheet. |
| sheets_add_tabB | Add a new sheet tab to an existing spreadsheet. |
| sheets_rename_tabB | Rename a sheet tab in a spreadsheet. |
| sheets_delete_tabB | Delete a sheet tab from a spreadsheet. |
| sheets_formatB | Apply formatting to a range of cells: bold, italic, font size, background/text color, alignment, number format, wrap strategy. |
| sheets_add_chartB | Create a chart in a Google Sheet from a data range. |
| sheets_insert_dimensionB | Insert rows or columns into a sheet at a specified position. |
| sheets_delete_dimensionB | Delete rows or columns from a sheet. |
| docs_getA | Get the full text content and title of a Google Doc. |
| docs_createB | Create a new Google Doc. |
| docs_appendA | Append text to the end of a Google Doc. Optionally apply a heading style and bold/italic. |
| docs_replace_textB | Find and replace all occurrences of text throughout a Google Doc. |
| docs_insert_tableA | Insert an empty table at the end of a Google Doc. |
| docs_apply_styleB | Apply a heading or paragraph style to a text range in a Google Doc by character indices. |
| list_calendarsA | List all Google Calendars for one or all enabled accounts. |
| list_eventsA | List calendar events. Omitting account aggregates across all enabled accounts. Supports time range and text search. |
| get_eventB | Get full details of a single calendar event. |
| create_eventA | Create a new calendar event. Use start_date_time/end_date_time for timed events or start_date/end_date for all-day events. |
| update_eventA | Update an existing calendar event. Only provided fields are changed. |
| delete_eventB | Delete a calendar event. |
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/tszaks/ghub'
If you have feedback or need assistance with the MCP directory API, please join our Discord server