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 |
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
} |
| 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