Multi-account MCP for Gmail, Calendar, Drive, Docs, and Sheets — 61 tools, token
Multi-account MCP for Gmail, Calendar, Drive, Docs, and Sheets — 61 tools, token-efficient, macOS…
Connector by adelaidasofia · GitHub account verified by the MCP Registry
Install
Works with Claude Desktop. Read the repository before you give any tool access to your data.
MCP bundle (.mcpb): open it with Claude Desktop.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 18 read · 34 write · 8 delete · 3 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Downloaded binary
Tools by what they do 63
Read from the source code; the running server may list different tools.
Read 18 · Look things up without changing anything.
cal_freebusycal_list_calendarscal_list_eventsdocs_readdocs_suggestions_listdrive_list_folderdrive_permission_listdrive_read_filedrive_searchgmail_attachments_listgmail_readgmail_search
Show 6 more tools
gmail_sendas_listgws_account_listsheets_batch_readsheets_list_sheetssheets_named_ranges_listsheets_read_range
Write 34 · Create, change, send or run things.
cal_create_eventcal_update_eventdocs_appenddocs_createdocs_insert_atdocs_replace_textdocs_suggestions_accept_alldocs_suggestions_reject_alldrive_comment_adddrive_comment_replydrive_comment_resolvedrive_comments_list
Show 22 more tools
drive_create_folderdrive_movedrive_permission_updatedrive_renamedrive_sharedrive_shared_drives_listdrive_untrashdrive_uploadgmail_attachment_savegmail_draftgmail_labels_listgmail_replygmail_sendgmail_trashgws_account_addsheets_add_sheetsheets_appendsheets_batch_writesheets_createsheets_data_validation_addsheets_named_range_addsheets_write_range
Delete 8 · Delete, drop, revoke or wipe things.
cal_delete_eventdrive_permission_deletedrive_trashgmail_archivegmail_label_applygws_account_removesheets_clear_rangesheets_named_range_delete
Not yet classified 3 · We could not tell from the name and description.
cal_responddocs_exportsheets_conditional_format_add
Network hosts it talks to 10
accounts.google.com· found in codecode.claude.com· found in codedocs.google.com· found in codegit-scm.com· found in codegithub.com· found in install command, codegoogleapis.com· found in codemyaccount.google.com· found in codemyceliumai.co· found in codeoauth2.googleapis.com· found in codesupport.google.com· found in code
Files it touches
~/.claude/.mcp.json/etc/localtime- Your home directory (~)
- Any path the agent passes to its tools
Tools (63)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
cal_create_eventCreate a calendar event. Args: start, end: ISO 8601 (or 'now'/'today'/'tomorrow'). Written without a UTC offset ('2026-08-18T09:00:00') they mean that wall-clock time in time_zone, which is almost always what a person means. Include an offset ('...T09:00:00-04:00') to pin an exact instant. attendees: Guest emails, invited as required guests. optional_attendees: Guest emails invited as optional guests. Works on its own or alongside attendees; an address in both lists is invited once, as optional. time_zone: IANA name, e.g. 'America/Caraca…
cal_delete_eventDelete an event.
cal_freebusyCheck busy windows for one or more calendars (for scheduling). Args: emails: List of calendar IDs / emails. Defaults to ['primary']. time_zone: IANA name. Times with no UTC offset are read in this zone, which defaults to the machine's own.
cal_list_calendarsList all calendars visible to this account.
cal_list_eventsList events on a calendar. Args: time_min: ISO 8601 or 'now'/'today'/'tomorrow'. A time with no UTC offset, and 'today'/'tomorrow', mean local time in time_zone. time_max: ISO 8601. If omitted, uses time_min + days_ahead. query: Free-text search within event titles/descriptions. verbose: Include description, attendees, recurrence, conference data. time_zone: IANA name, e.g. 'America/Caracas'. Defaults to the machine's own zone (override with the GWS_TIME_ZONE environment variable).
cal_respondRespond to an event invite. Args: response: 'accepted' | 'declined' | 'tentative'.
cal_update_eventPartial-update an event. Only pass fields you want to change. start/end follow the same rule as cal_create_event: no UTC offset means that wall-clock time in time_zone, which defaults to the machine's own zone. Args: attendees_add: Emails to invite as required guests. A guest already on the event is left as they are, optional or not. attendees_add_optional: Emails to invite as optional guests. A guest already on the event is switched to optional and keeps their RSVP. attendees_remove: Emails to take off the event. Applied after both add lists.
docs_appendAppend text to the end of a Doc body.
docs_createCreate a new Google Doc. Optional initial body text.
docs_exportExport a Doc to a formatted output file. Default is markdown (headers, bold, lists preserved). Preferred over docs_read when you need formatted content rather than stripped plain text. For programmatic access to document structure (paragraphs, runs), use docs_read with structured=True. Args: mime: 'text/markdown' (default) | 'text/plain' | 'application/pdf' | 'application/rtf' | 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' (.docx)
docs_insert_atInsert text at a specific character index within the Doc body. Index 1 = start of body. Use docs_append instead when adding to the end — it calculates the index automatically.
docs_readRead a Google Doc as flat plain text (formatting stripped) or as the full Docs API structural tree (paragraphs, text runs, tables) with structured=True. For formatted output (markdown, PDF, docx), use docs_export instead. Use structured=True for programmatic access to document structure.
docs_replace_textFind-and-replace text across the entire Doc. Returns count replaced.
docs_suggestions_accept_allAccept ALL pending suggestions by rewriting the Doc. DESTRUCTIVE — rewrites the entire document body; formatting metadata is lost. No per-suggestion accept via API. Call docs_suggestions_list first to review what will be accepted.
docs_suggestions_listList pending suggestions (tracked changes) in a Doc. Per-suggestion accept/reject isn't supported by Docs API; use docs_suggestions_accept_all or docs_suggestions_reject_all.
Show 48 more tools
docs_suggestions_reject_allReject ALL pending suggestions by rewriting the Doc. DESTRUCTIVE — rewrites the entire document body; suggestions are permanently discarded. No per-suggestion reject via API. Call docs_suggestions_list first to review what will be discarded.
drive_comment_addAdd a sidebar comment (annotation) to a Drive file — not text to the document body. Works on Docs, Sheets, Slides, PDFs, etc. To add text to a Doc's body, use docs_append or docs_insert_at.
drive_comment_replyReply to an existing comment.
drive_comment_resolveMark a comment as resolved.
drive_comments_listList comments on any Drive file (Doc/Sheet/Slide/uploaded).
drive_create_folderCreate a new folder. If parent_id is None, creates at My Drive root.
drive_list_folderList direct children of a folder. Use 'root' for My Drive root.
drive_moveMove a file to a different folder.
drive_permission_deleteRevoke a permission on a file. DESTRUCTIVE — removes someone's access immediately. Get permission_id from drive_permission_list first.
drive_permission_listList all permissions (who has access) on a file.
drive_permission_updateChange the access role of someone who already has a permission on this file. Requires a permission_id — get it first from drive_permission_list. To grant access to someone new, use drive_share instead. Args: role: 'reader' | 'commenter' | 'writer' | 'fileOrganizer' | 'organizer' | 'owner'.
drive_read_fileRead a Drive file. Metadata by default; content is opt-in. Args: include_content: If True, fetch content. Google-native files export to text/csv/plain by default; override with export_mime. For Google Docs where you want markdown or docx output, use docs_export instead. export_mime: e.g. 'text/markdown' (Docs), 'application/pdf', or 'text/csv' (Sheets). Ignored for non-Google files. max_chars: Cap on returned content. Default 50k.
drive_renameRename a file or folder.
drive_searchSearch Drive files. Returns compact metadata (no content). Args: query: Free text (wrapped as name/fullText contains) OR raw Drive q-syntax if it contains '=' or 'contains' (e.g. "mimeType='application/pdf' and modifiedTime > '2026-04-01T00:00:00'"). limit: 1-100. Default 10. order_by: 'modifiedTime desc' | 'name' | 'createdTime desc' | etc. drive_id: Shared drive ID. Default: My Drive + shared-with-me.
drive_shareGrant access to a file for someone who does not yet have a permission entry. Creates a new permission. Requires their email address. To change the role of someone who already has access, use drive_permission_update instead. Args: role: 'reader' | 'commenter' | 'writer' | 'fileOrganizer' | 'organizer' | 'owner'. send_notification: If True, Google emails the grantee about the share.
drive_shared_drives_listList shared drives this account can access.
drive_trashMove a file to Trash (soft delete, recoverable for 30 days). DESTRUCTIVE. Args: dry_run: If True, show what would be trashed without actually trashing it.
drive_untrashRestore a file from Trash.
drive_uploadUpload a local file to Drive. Args: convert_to_google: If True, .docx/.csv/.xlsx/.pptx etc. convert to Google-native formats (Docs/Sheets/Slides) on upload.
gmail_archiveArchive messages: removes INBOX label but keeps them in All Mail, permanently searchable. No deletion. Use this to declutter without destroying. Use gmail_trash for soft-delete (messages auto-purged after 30 days).
gmail_attachment_saveDownload one attachment to a local file and return its path, so the caller can read it directly (PDF, image, docx, ...). Call gmail_attachments_list first for attachment_id and filename. Saves under ~/.claude/google-workspace-mcp/downloads unless dest_dir is given.
gmail_attachments_listList a message's attachments: filename, mime type, size, and the attachment_id gmail_attachment_save needs. Metadata only, no download.
gmail_draftCreate a draft. Does not send. Args: body: Plain text or HTML. A body that opens with an HTML tag (e.g. "<p>") becomes an HTML email with a plain-text fallback; any other body stays plain text.
gmail_label_applyAdd or remove labels on messages. Batch up to 1000 per call.
gmail_labels_listList all labels on the account.
gmail_readRead a single message or full thread. Strips HTML to text by default. Args: message_id: Gmail message id from gmail_search. keep_html: If True, return raw HTML body. Default: strip to plain text. full_thread: If True, return all messages in the thread.
gmail_replyReply to a message. DESTRUCTIVE — sends immediately, same blast radius as gmail_send. Preserves thread + headers. Args: body: Plain text or HTML. A body that opens with an HTML tag (e.g. "<p>") becomes an HTML email with a plain-text fallback; any other body stays plain text. dry_run: If True, show what WOULD be sent without sending.
gmail_searchSearch Gmail messages. Returns compact shape (no body) — call gmail_read for body. Args: query: Gmail search operators, e.g. 'from:someone@example.com after:2026/04/01 is:unread'. account: Email address; defaults to configured default account. limit: 1-50. Default 10. include_spam_trash: Include SPAM/TRASH in results. label_filter: List of label names to filter by (e.g. ['INBOX', 'starred']).
gmail_sendSend an email. DESTRUCTIVE — irreversible once sent. Args: body: Plain text or HTML. A body that opens with an HTML tag (e.g. "<p>") becomes an HTML email with a plain-text fallback; any other body stays plain text. from_alias: Send-as identity (e.g. 'ops@example.com'). The authenticated `account` must have this alias configured in Gmail. Use gmail_sendas_list to see available aliases. dry_run: If True, return what WOULD be sent without calling the API. Use this to verify recipient, subject, and body before committing.
gmail_sendas_listList Send-As identities for this account (the aliases it can send as).
gmail_trashMove messages to Trash. Soft delete: auto-purged after 30 days, not easily searchable. Use gmail_archive to remove from inbox without any deletion risk.
gws_account_addAuthorize a new Google account via browser OAuth. Stores the refresh token in the OS keyring (service: google-workspace-mcp) -- Keychain on macOS, Credential Manager on Windows, Secret Service on Linux. Requires the OAuth client: GWS_CLIENT_ID + GWS_CLIENT_SECRET in the environment, or client_secret.json next to server.py. See SETUP.md.
gws_account_listList all authorized Google accounts and which one is the default.
gws_account_removeRevoke local storage for an account. (Does not revoke Google-side; do that at https://myaccount.google.com/permissions.)
sheets_add_sheetAdd a new tab (sheet) to an existing workbook.
sheets_appendAppend rows below the existing data in a range or sheet. Args: range_a1: Table range or sheet name (e.g. 'Sheet1!A:D' or 'Sheet1'). insert_data: 'INSERT_ROWS' (shifts down) | 'OVERWRITE'.
sheets_batch_readRead multiple ranges in one API call. Cheaper than N sheets_read_range.
sheets_batch_writeWrite multiple ranges in one API call. Args: updates: List of {range: 'Sheet1!A1:B2', values: [[...], [...]]}.
sheets_clear_rangeClear cell values in a range. Leaves formatting intact.
sheets_conditional_format_addAdd a conditional formatting rule. Args: condition_type: 'NUMBER_GREATER' | 'NUMBER_LESS' | 'TEXT_CONTAINS' | 'TEXT_EQ' | 'DATE_AFTER' | 'CUSTOM_FORMULA' | 'BLANK' | 'NOT_BLANK'. condition_values: Values for the condition (e.g. ['100'] or ['=A1>B1']). bg_color / text_color: {'red': 0-1, 'green': 0-1, 'blue': 0-1}.
sheets_createCreate a new Google Sheets workbook.
sheets_data_validation_addSet data validation on a range. Args: condition_type: 'ONE_OF_LIST' (dropdown) | 'NUMBER_GREATER' | 'NUMBER_BETWEEN' | 'DATE_IS_VALID' | 'TEXT_IS_EMAIL' | 'TEXT_IS_URL' | 'CUSTOM_FORMULA'. condition_values: e.g. ['yes','no','maybe'] for ONE_OF_LIST. strict: If True, reject invalid input; if False, warn only.
sheets_list_sheetsList all tabs in a workbook with their dimensions.
sheets_named_range_addCreate a named range (zero-based indices, end-exclusive). Get sheet_id from sheets_list_sheets.
sheets_named_range_deleteDelete a named range by id.
sheets_named_ranges_listList all named ranges in a workbook.
sheets_read_rangeRead a range of cells. Returns 2D array of values. Args: range_a1: A1 notation — 'Sheet1!A1:D100' or 'Sheet1' for full tab. value_render: 'FORMATTED_VALUE' | 'UNFORMATTED_VALUE' | 'FORMULA'.
sheets_write_rangeWrite a 2D array of values to a range. Overwrites existing cells. Args: value_input: 'USER_ENTERED' (parses formulas + dates) | 'RAW' (literal).
Signals
- Stars
- 3
- Forks
- 3
- Open issues
- 0
- Last commit
- Oct 22, 2026 (7 days ago)
- Last release
- May 20, 2026 (5 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.adelaidasofia/google-workspace-mcp- Version
- 0.1.0
- Auth
- API key
- Packages
- mcpb https://github.com/adelaidasofia/google-workspace-mcp/releases/download/v0.1.0/google-workspace-mcp.mcpb
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
More from adelaidasofia
- 0.567score
Instagram MCP
adelaidasofia
Official, multi-account Instagram Graph API MCP: read, publish, analytics, comments, DMs.
ConnectorAFreshness: ALocal★ 11↓ 57/wkClaude Code +5 - 0.561score
WhatsApp MCP
adelaidasofia
WhatsApp MCP by adelaidasofia
ConnectorAFreshness: ALocal★ 6↓ 36/wkClaude Code +5 - 0.533score
FastMCP server for Apollo
adelaidasofia
FastMCP server for Apollo.io — 22 tools: sequences, campaign health, mailbox warmup, enrichment,…
ConnectorAFreshness: ALocal★ 3Claude Desktop - 0.527score
Multi-workspace Slack MCP server with draft+confirm safety, vault auto-export, a
adelaidasofia
Multi-workspace Slack MCP server with draft+confirm safety, vault auto-export, and triple-mode…
ConnectorAFreshness: ALocal★ 2Claude Desktop - 0.527score
macOS-only MCP server that exposes iMessage chat
adelaidasofia
macOS-only MCP server that exposes iMessage chat.db to Claude and exports per-chat history to an…
ConnectorAFreshness: ALocal★ 2Claude Desktop - 0.510score
Linear MCP (multi-workspace, PAT auth)
adelaidasofia
Multi-workspace Linear MCP — PAT auth, 57 tools + 3 prompts, substrate enforcement, drop-in.
ConnectorBFreshness: BLocal★ 2↓ 33/wkClaude Code +5
Cite this page
Multi-account MCP for Gmail, Calendar, Drive, Docs, and Sheets — 61 tools, token. Agent Mart. https://agentmart.dev/connectors/adelaidasofia-google-workspace-mcp (last updated 2026-10-25)