Skip to main content
Glama
bkbaheti

MCP Google Multi-Account Server

by bkbaheti

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOOGLE_CLIENT_IDNoYour own OAuth client ID
GOOGLE_CLIENT_SECRETNoYour own OAuth client secret
MCP_GOOGLE_LOG_LEVELNoLog level: debug, info, warn, error
MCP_GOOGLE_PASSPHRASENoPassphrase for encrypted token storage (fallback when keychain unavailable)
MCP_GOOGLE_CONFIG_PATHNoOverride default config file location

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

NameDescription
compose-emailGuided workflow for composing an email safely. Creates a draft, shows preview, and requires confirmation before sending.
reply-to-emailGuided workflow for replying to an existing email thread safely with proper threading.
review-draftsList all draft emails for an account and optionally send or delete them.
summarize-threadAI-assisted summarization of an email thread. Identifies main topic, key decisions, open questions, and action items.
smart-replyGet AI-suggested replies based on email context. Offers multiple response options from brief to detailed.
extract-action-itemsScan emails to find tasks, deadlines, and commitments. Returns structured list of action items.
categorize-emailsAnalyze uncategorized emails and suggest appropriate labels based on content and sender patterns.

Resources

Contextual data attached and managed by the client

NameDescription
accountsList all connected Google accounts with their scope tiers
cache-statsCache statistics including hit rate, size, and eviction counts

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/bkbaheti/google-multi-account-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server