Multi-account MCP for Gmail, Calendar, Drive, Docs, and Sheets — 61 tools, token-efficient, macOS Keychain-backed
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
cal_create_event
create event, optional Google Meet link
-
cal_delete_event
delete
-
cal_freebusy
check busy windows for scheduling
-
cal_list_calendars
list all calendars
-
cal_list_events
list upcoming events (compact by default, verbose=True for full)
-
cal_respond
accept/decline/tentative
-
cal_update_event
partial-update fields
-
docs_append
append text to end of body
-
docs_create
new Doc, optional initial body and parent folder
-
docs_export
export to markdown / pdf / docx / rtf / plain
-
docs_insert_at
insert text at a specific index
-
docs_read
flat text by default; structured=True for full Docs API tree
-
docs_replace_text
find-and-replace, returns count replaced
-
docs_suggestions_accept_all
accept all suggestions (rewrites Doc)
-
docs_suggestions_list
list pending tracked-change suggestions
-
docs_suggestions_reject_all
reject all suggestions (rewrites Doc)
-
drive_comment_add
add a comment, optional anchor
-
drive_comment_reply
reply to a comment
-
drive_comment_resolve
mark a comment resolved
-
drive_comments_list
list comments on any Drive file (Doc/Sheet/Slide/upload)
-
drive_create_folder
create a folder under an optional parent
-
drive_list_folder
direct children of a folder ('root' for My Drive)
-
drive_move
change parent folder
-
drive_permission_delete
revoke a permission
-
drive_permission_list
list everyone with access to a file
-
drive_permission_update
change a grantee's role
-
drive_read_file
metadata by default; include_content=True for body
-
drive_rename
rename a file or folder
-
drive_search
free-text or raw Drive q-syntax. Metadata-only response.
-
drive_share
grant reader/commenter/writer/etc. access by email
-
drive_shared_drives_list
list shared drives this account accesses
-
drive_trash
soft delete (recoverable)
-
drive_untrash
restore from Trash
-
drive_upload
upload a local file, optional convert_to_google
-
gmail_archive
batch archive (remove INBOX)
-
gmail_draft
create a draft
-
gmail_label_apply
batch add/remove labels
-
gmail_labels_list
list all labels
-
gmail_read
read one message or full thread. Bodies opt-in.
-
gmail_reply
reply (preserves thread + headers), optional reply_all
-
gmail_search
search with Gmail operators. Compact response.
-
gmail_send
send mail, optional from_alias for Send-As identities
-
gmail_sendas_list
list Send-As identities on this mailbox
-
gmail_trash
batch move to trash
-
gws_account_add
browser OAuth flow, adds a new authorized mailbox
-
gws_account_list
list authorized accounts + default
-
gws_account_remove
remove local credential (doesn't revoke Google-side)
-
sheets_add_sheet
add a new tab to an existing workbook
-
sheets_append
append rows below existing data
-
sheets_batch_read
multi-range read in one API call
-
sheets_batch_write
multi-range write in one API call
-
sheets_clear_range
clear values (formatting preserved)
-
sheets_conditional_format_add
add a conditional formatting rule
-
sheets_create
new workbook, optional parent folder
-
sheets_list_sheets
list tabs with row/col dimensions
-
sheets_named_range_add
create a named range
-
sheets_named_range_delete
delete a named range
-
sheets_named_ranges_list
list named ranges in a workbook
-
sheets_read_range
read A1 range. FORMULA / UNFORMATTED_VALUE options.
-
sheets_write_range
overwrite a range. USER_ENTERED parses formulas.
analyzed commit 909d074 · analyzer v18 · 3h ago
danger signals3
- over-broad OAuth scopehttps://www.googleapis.com/auth/driveadelaidasofia-google-workspace-mcp-909d074/accounts.py:47
"https://www.googleapis.com/auth/drive", - over-broad OAuth scopehttps://www.googleapis.com/auth/documentsadelaidasofia-google-workspace-mcp-909d074/accounts.py:48
"https://www.googleapis.com/auth/documents", - over-broad OAuth scopehttps://www.googleapis.com/auth/spreadsheetsadelaidasofia-google-workspace-mcp-909d074/accounts.py:49
"https://www.googleapis.com/auth/spreadsheets",
filesystem 6
- fs adelaidasofia-google-workspace-mcp-909d074/accounts.py :17
from pathlib import Path - fs adelaidasofia-google-workspace-mcp-909d074/docs_tools.py :11
import pathlib - fs adelaidasofia-google-workspace-mcp-909d074/drive_tools.py :15
import pathlib - fs adelaidasofia-google-workspace-mcp-909d074/gmail_tools.py :17
import pathlib - fs adelaidasofia-google-workspace-mcp-909d074/hooks/install-ping.py :14
from pathlib import Path - fs adelaidasofia-google-workspace-mcp-909d074/server.py :19
from pathlib import Path
network 1
- net adelaidasofia-google-workspace-mcp-909d074/hooks/install-ping.py :13
import urllib.request
secrets 1
- secrets adelaidasofia-google-workspace-mcp-909d074/accounts.py :30
import keyring
tool registrations 61
- gws_account_add adelaidasofia-google-workspace-mcp-909d074/server.py :41
- gws_account_list adelaidasofia-google-workspace-mcp-909d074/server.py :52
- gws_account_remove adelaidasofia-google-workspace-mcp-909d074/server.py :64
- gmail_search adelaidasofia-google-workspace-mcp-909d074/server.py :76
- gmail_read adelaidasofia-google-workspace-mcp-909d074/server.py :99
- gmail_send adelaidasofia-google-workspace-mcp-909d074/server.py :119
- gmail_draft adelaidasofia-google-workspace-mcp-909d074/server.py :147
- gmail_reply adelaidasofia-google-workspace-mcp-909d074/server.py :164
- gmail_labels_list adelaidasofia-google-workspace-mcp-909d074/server.py :184
- gmail_label_apply adelaidasofia-google-workspace-mcp-909d074/server.py :190
- gmail_archive adelaidasofia-google-workspace-mcp-909d074/server.py :203
- gmail_trash adelaidasofia-google-workspace-mcp-909d074/server.py :211
- gmail_sendas_list adelaidasofia-google-workspace-mcp-909d074/server.py :218
- cal_list_calendars adelaidasofia-google-workspace-mcp-909d074/server.py :229
- cal_list_events adelaidasofia-google-workspace-mcp-909d074/server.py :235
- cal_create_event adelaidasofia-google-workspace-mcp-909d074/server.py :261
- cal_update_event adelaidasofia-google-workspace-mcp-909d074/server.py :290
- cal_delete_event adelaidasofia-google-workspace-mcp-909d074/server.py :315
- cal_freebusy adelaidasofia-google-workspace-mcp-909d074/server.py :329
- cal_respond adelaidasofia-google-workspace-mcp-909d074/server.py :346
- drive_search adelaidasofia-google-workspace-mcp-909d074/server.py :368
- drive_read_file adelaidasofia-google-workspace-mcp-909d074/server.py :393
- drive_list_folder adelaidasofia-google-workspace-mcp-909d074/server.py :417
- drive_create_folder adelaidasofia-google-workspace-mcp-909d074/server.py :430
- drive_upload adelaidasofia-google-workspace-mcp-909d074/server.py :440
- drive_move adelaidasofia-google-workspace-mcp-909d074/server.py :461
- drive_rename adelaidasofia-google-workspace-mcp-909d074/server.py :473
- drive_share adelaidasofia-google-workspace-mcp-909d074/server.py :483
- drive_trash adelaidasofia-google-workspace-mcp-909d074/server.py :507
- drive_untrash adelaidasofia-google-workspace-mcp-909d074/server.py :517
- drive_permission_list adelaidasofia-google-workspace-mcp-909d074/server.py :523
- drive_permission_update adelaidasofia-google-workspace-mcp-909d074/server.py :529
- drive_permission_delete adelaidasofia-google-workspace-mcp-909d074/server.py :549
- drive_shared_drives_list adelaidasofia-google-workspace-mcp-909d074/server.py :562
- drive_comments_list adelaidasofia-google-workspace-mcp-909d074/server.py :571
- drive_comment_add adelaidasofia-google-workspace-mcp-909d074/server.py :585
- drive_comment_reply adelaidasofia-google-workspace-mcp-909d074/server.py :600
- drive_comment_resolve adelaidasofia-google-workspace-mcp-909d074/server.py :613
- docs_create adelaidasofia-google-workspace-mcp-909d074/server.py :630
- docs_read adelaidasofia-google-workspace-mcp-909d074/server.py :643
- docs_append adelaidasofia-google-workspace-mcp-909d074/server.py :661
- docs_insert_at adelaidasofia-google-workspace-mcp-909d074/server.py :671
- docs_replace_text adelaidasofia-google-workspace-mcp-909d074/server.py :685
- docs_export adelaidasofia-google-workspace-mcp-909d074/server.py :700
- docs_suggestions_list adelaidasofia-google-workspace-mcp-909d074/server.py :721
- docs_suggestions_accept_all adelaidasofia-google-workspace-mcp-909d074/server.py :732
- docs_suggestions_reject_all adelaidasofia-google-workspace-mcp-909d074/server.py :743
- sheets_create adelaidasofia-google-workspace-mcp-909d074/server.py :759
- sheets_list_sheets adelaidasofia-google-workspace-mcp-909d074/server.py :771
- sheets_add_sheet adelaidasofia-google-workspace-mcp-909d074/server.py :780
- sheets_read_range adelaidasofia-google-workspace-mcp-909d074/server.py :795
- sheets_write_range adelaidasofia-google-workspace-mcp-909d074/server.py :815
- sheets_append adelaidasofia-google-workspace-mcp-909d074/server.py :834
- sheets_clear_range adelaidasofia-google-workspace-mcp-909d074/server.py :855
- sheets_batch_read adelaidasofia-google-workspace-mcp-909d074/server.py :867
- sheets_batch_write adelaidasofia-google-workspace-mcp-909d074/server.py :881
- sheets_named_ranges_list adelaidasofia-google-workspace-mcp-909d074/server.py :899
- sheets_named_range_add adelaidasofia-google-workspace-mcp-909d074/server.py :908
- sheets_named_range_delete adelaidasofia-google-workspace-mcp-909d074/server.py :927
- sheets_conditional_format_add adelaidasofia-google-workspace-mcp-909d074/server.py :939
- sheets_data_validation_add adelaidasofia-google-workspace-mcp-909d074/server.py :971
declared dependencies 5
- fastmcp@>=3.4.2
- google-auth@>=2.53.0
- google-auth-oauthlib@>=1.4.0
- google-api-python-client@>=2.197.0
- keyring@>=25.7.0