MCP Google Multi-Account Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_CLIENT_ID | No | Your own OAuth client ID | |
| GOOGLE_CLIENT_SECRET | No | Your own OAuth client secret | |
| MCP_GOOGLE_LOG_LEVEL | No | Log level: debug, info, warn, error | |
| MCP_GOOGLE_PASSPHRASE | No | Passphrase for encrypted token storage (fallback when keychain unavailable) | |
| MCP_GOOGLE_CONFIG_PATH | No | Override default config file location |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| google_versionA | Get the MCP Google server version, git commit, and build date. Use this to verify which version is running. |
| google_list_accountsA | List all connected Google accounts |
| google_add_accountA | Add a new Google account via OAuth. Returns an authorization URL that you must show to the user. The user opens this URL in their browser to authorize. After authorization, use google_check_pending_auth to complete the process. Tiers: mail_readonly (default), mail_compose, mail_full, mail_settings, drive_readonly, drive_full, calendar_readonly, calendar_full, or all. |
| google_check_pending_authA | Check the status of a pending Google account authorization. Call this after the user has completed the OAuth flow in their browser. Returns the connected account info if successful. |
| google_reauth_accountA | Re-authenticate an existing Google account. Use this when a refresh token is invalidated (e.g., password change, revoked access, expired grant) or when you need to add/change scope tiers without losing the account ID, alias, description, or labels. Returns an authorization URL. After the user authorizes, call google_check_pending_auth with the sessionId. If no scope tier is given, the account's current scopes are reused. The authorized Google account must match the existing email; otherwise the reauth fails. |
| google_remove_accountB | Remove a Google account and revoke its tokens |
| google_set_account_labelsB | Set labels on a Google account (e.g., personal, work, school) |
| google_set_account_aliasA | Set a friendly alias on a Google account (e.g., "work", "personal"). Once set, you can use the alias instead of the account ID in all tool calls. Set to empty string to remove. |
| google_set_account_descriptionA | Set a human-readable description on a Google account (e.g., "Work - engineering team", "Personal Gmail"). This description appears in google_list_accounts output to help identify accounts. Set to empty string to remove. |
| gmail_search_messagesB | Search for messages in Gmail using Gmail search syntax (e.g., "from:user@example.com", "subject:hello", "is:unread") |
| gmail_get_messageA | Get a single Gmail message by ID with headers and body content |
| gmail_get_messages_batchA | Fetch multiple Gmail messages in a single call. More efficient than fetching individually. Limited to 50 messages per call. |
| gmail_get_threadA | Get a Gmail thread with all its messages |
| gmail_create_draftA | Create a draft email. The draft can be reviewed, updated, and sent later. Requires compose or full scope. |
| gmail_update_draftA | Update an existing draft email. Replaces the entire draft content. Requires compose or full scope. |
| gmail_get_draftA | Get a draft email with full content for preview before sending |
| gmail_send_draftA | Send a draft email. IMPORTANT: This will actually send the email. You MUST pass confirm: true to proceed. Requires compose or full scope. |
| gmail_delete_draftB | Delete a draft email |
| gmail_reply_in_threadA | Reply to an existing email thread. Creates a draft reply and optionally sends it. Requires compose or full scope. |
| gmail_list_labelsA | List all Gmail labels (system labels like INBOX, SENT, etc. and custom user labels). Requires full scope. |
| gmail_modify_labelsA | Add or remove labels from a Gmail message. Use label IDs (e.g., "INBOX", "STARRED", "IMPORTANT", or custom label IDs). Requires full scope. |
| gmail_batch_modify_labelsA | Apply label changes to multiple messages in one operation. More efficient than individual modifications. Limited to 1000 messages. Requires full scope. |
| gmail_create_labelA | Create a new Gmail label with optional color and visibility settings. Requires full scope. |
| gmail_update_labelA | Update a Gmail label (rename, change color, visibility). System labels cannot be modified. Requires full scope. |
| gmail_delete_labelA | Delete a Gmail label. Messages with this label will not be deleted, they will just lose the label. System labels cannot be deleted. Requires full scope. |
| gmail_mark_read_unreadA | Mark a Gmail message as read or unread. This is a shortcut for modifying the UNREAD label. Requires full scope. |
| gmail_archiveA | Archive a Gmail message by removing it from INBOX. The message remains in All Mail and can still be found via search. Requires full scope. |
| gmail_trashA | Move a Gmail message to Trash. The message will be permanently deleted after 30 days. Requires full scope. |
| gmail_untrashA | Restore a Gmail message from Trash back to the mailbox. Requires full scope. |
| gmail_list_attachmentsA | List all attachments in a Gmail message. Returns attachment IDs, filenames, MIME types, and sizes. Requires readonly scope. |
| gmail_get_attachmentA | Download an attachment from a Gmail message and save it to local disk. Use gmail_list_attachments first to get filenames. Returns file path and metadata (no binary data in response). Requires readonly scope. |
| gmail_create_draft_with_attachmentA | Create a draft email with file attachments. Each attachment can provide base64-encoded data directly OR a local file path (the server reads the file from disk). The draft can be reviewed and sent later. Requires compose or full scope. Max 25MB total attachment size. |
| gmail_list_filtersA | List all Gmail filters for an account. Filters automatically process incoming messages based on criteria. Requires settings scope. |
| gmail_create_filterA | Create a Gmail filter to automatically process incoming messages. Criteria define which messages match; actions define what happens to them. Requires settings scope and confirmation. |
| gmail_delete_filterA | Delete a Gmail filter by ID. Use gmail_list_filters to see existing filters. Requires settings scope and confirmation. |
| gmail_get_vacationA | Get the vacation auto-reply settings for an account. Shows whether vacation responder is enabled and its configuration. Requires settings scope. |
| gmail_set_vacationA | Configure the vacation auto-reply settings. Can enable or disable the vacation responder. Enabling requires confirmation. Requires settings scope. |
| gmail_bulk_save_attachmentsA | Download all attachments from one or more Gmail messages to a local directory. Returns a manifest of saved files. Requires readonly scope. |
| drive_list_shared_drivesA | List the Shared Drives (Team Drives) the user is a member of. Use the returned drive IDs as the folderId argument to drive_list_files to browse a Shared Drive, or as driveId on drive_search_files to scope a search. |
| drive_search_filesA | Search for files in Google Drive. Searches across My Drive and all Shared Drives the user is a member of by default; pass driveId to scope the search to a single Shared Drive (discover IDs with drive_list_shared_drives). Supports shorthand syntax: type:document, type:spreadsheet, type:pdf, type:folder, type:image, type:video, type:audio (converted to mimeType queries), and content:keyword (searches inside file contents via fullText). Also accepts raw Drive API query syntax (e.g., "name contains 'report'"). |
| drive_list_filesA | List files in a Google Drive folder. If no folderId is provided, lists files in the user's My Drive root. To list a Shared Drive's top level, pass the Shared Drive ID as folderId (discover IDs with drive_list_shared_drives). |
| drive_get_fileA | Get metadata for a Google Drive file (name, size, type, owners, sharing status, etc.) |
| drive_get_file_contentA | Get a preview of file content from Google Drive (default: first 10,000 characters). Returns truncated text with metadata (fileName, totalSize, truncated flag). For full content use drive_get_full_file_content. For large/binary files prefer drive_download_file to save to disk instead. |
| drive_get_full_file_contentA | WARNING: Returns the ENTIRE file content — can be very large and may overload your context window. Only use this when you genuinely need the complete file (e.g., for analysis or transformation). Prefer drive_get_file_content (preview) for browsing, or drive_download_file to save large files to disk. |
| drive_download_fileA | Download a file from Google Drive and save it to a local directory. Google Workspace files (Docs, Sheets, Slides) are exported to standard formats (txt, csv, etc.). |
| drive_upload_fileA | Upload a file to Google Drive. Provide content as UTF-8 text, base64-encoded binary (set isBase64: true), or a local file path (the server reads the file from disk). |
| drive_create_folderB | Create a new folder in Google Drive. |
| drive_move_fileA | Move a file to a different folder in Google Drive. |
| drive_copy_fileB | Create a copy of a file in Google Drive. Optionally specify a new name for the copy. |
| drive_rename_fileB | Rename a file in Google Drive. |
| drive_trash_fileA | Move a file to trash in Google Drive. |
| drive_share_fileA | Share a Google Drive file by creating a permission. Requires confirm: true as a safety gate since sharing exposes the file to others. |
| drive_update_permissionsA | Update an existing permission on a Google Drive file. Requires confirm: true as a safety gate since permission changes affect access control. |
| calendar_list_calendarsA | List all calendars for a Google account (primary, shared, subscribed). |
| calendar_list_eventsA | List events from a Google Calendar within a time range. Defaults to primary calendar. |
| calendar_get_eventA | Get full details for a specific Google Calendar event. |
| calendar_search_eventsA | Search for Google Calendar events by text query. Searches summary, description, location, and attendees. |
| calendar_freebusyA | Check free/busy status for one or more Google Calendars within a time range. |
| calendar_create_eventA | Create a new Google Calendar event. If attendees are included, requires confirm: true as a safety gate since it will send calendar invitations. |
| calendar_update_eventA | Update an existing Google Calendar event. Requires confirm: true if the event has attendees or attendees are being added, since it will send update notifications. |
| calendar_delete_eventA | Delete a Google Calendar event. Requires confirm: true if the event has attendees, since they will be notified of the cancellation. |
| calendar_rsvpB | Respond to a Google Calendar invitation (accept, decline, or tentatively accept). |
| calendar_move_eventB | Move a Google Calendar event to a different calendar. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| compose-email | Guided workflow for composing an email safely. Creates a draft, shows preview, and requires confirmation before sending. |
| reply-to-email | Guided workflow for replying to an existing email thread safely with proper threading. |
| review-drafts | List all draft emails for an account and optionally send or delete them. |
| summarize-thread | AI-assisted summarization of an email thread. Identifies main topic, key decisions, open questions, and action items. |
| smart-reply | Get AI-suggested replies based on email context. Offers multiple response options from brief to detailed. |
| extract-action-items | Scan emails to find tasks, deadlines, and commitments. Returns structured list of action items. |
| categorize-emails | Analyze uncategorized emails and suggest appropriate labels based on content and sender patterns. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| accounts | List all connected Google accounts with their scope tiers |
| cache-stats | Cache statistics including hit rate, size, and eviction counts |
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/bkbaheti/google-multi-account-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server