google-workspace-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GWM_HOME | No | Config home directory. Defaults to $XDG_CONFIG_HOME/google-workspace-mcp, else ~/.config/google-workspace-mcp/. | |
| GWM_ACCOUNTS | No | Per-instance account scope: a comma-list of slugs from the registry or an inline JSON map. Omit to expose every account in the registry. | |
| GWM_TOKENS_DIR | No | Directory for per-account token files. Defaults to <config-home>/tokens/. | |
| GWM_CREDENTIALS | No | Path to the OAuth client secret file. Defaults to <config-home>/credentials.json. | |
| GWM_ACCOUNTS_FILE | No | Path to the account registry file. Defaults to <config-home>/accounts.json. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| accounts_listA | List configured accounts and whether each has a token file on disk. |
| gmail_sendA | Send an email immediately from the given account. |
| gmail_draft_createC | Create a Gmail draft. Returns {id, message: {...}}. |
| gmail_draft_updateC | Overwrite an existing draft's contents. |
| gmail_draft_sendC | Send an existing draft. |
| gmail_draft_deleteC | Permanently delete a draft (the thing the default connector can't do). |
| gmail_drafts_listC | List drafts. |
| gmail_searchB | Search messages with Gmail's query syntax (e.g. 'from:foo subject:bar'). |
| gmail_message_getC | Fetch one message. |
| gmail_message_trashB | Move a message to Trash (reversible for 30 days). |
| gmail_message_modifyC | Add/remove labels on a message (e.g. mark read by removing UNREAD). |
| gmail_labels_listC | List all labels for the account. |
| gmail_label_createA | Create a label. Nested labels use 'Parent/Child' names; create each parent level first. Idempotent: an existing label is returned as-is. |
| gmail_thread_getC | Fetch a whole thread (all messages). |
| gmail_attachment_downloadA | Download one attachment to a local path. Get |
| calendar_listC | List all calendars the account can access. |
| calendar_events_listC | List events. |
| calendar_event_getC | Fetch one event. |
| calendar_event_createB | Create an event. |
| calendar_event_updateB | Patch an existing event — only the fields you pass are changed. |
| calendar_event_deleteC | Delete an event. |
| drive_searchB | List/search files. |
| drive_file_getC | Get a file's full metadata. |
| drive_file_downloadB | Download a file. For Google Docs/Sheets/Slides, pass |
| drive_file_uploadB | Upload a local file to Drive. |
| drive_file_moveC | Move a file to a new folder. |
| drive_file_renameD | Rename a file. |
| drive_file_trashC | Move a file to trash (reversible). |
| drive_folder_createC | Create a new folder. |
| drive_file_shareC | Share a file with someone by email. |
| drive_file_link_accessA | Toggle "anyone with the link" access on a file the account owns. |
| tasklist_listA | List the account's task lists (each has an id + title). |
| tasklist_createC | Create a new task list. |
| tasklist_deleteB | Delete a task list and all its tasks. Irreversible. |
| task_listB | List tasks in a list. Find ids via tasklist_list; '@default' is the account's default list. |
| task_getC | Fetch a single task. |
| task_createA | Create a task. |
| task_updateA | Patch a task's fields. status='completed' completes it (or use task_complete). |
| task_completeB | Mark a task completed (shortcut for status='completed'). |
| task_deleteC | Delete a task. Irreversible. |
| task_moveB | Reposition a task: under |
| contacts_listB | List saved contacts. Pass |
| contacts_searchB | Search saved contacts by name/email/phone. |
| contact_getC | Fetch one contact by its resourceName (e.g. 'people/c12345...'). |
| contacts_batch_getA | Fetch many contacts at once by resourceName (up to 200 per call) — one
round trip instead of N |
| other_contacts_listA | List 'other contacts' — people you've corresponded with (e.g. emailed) but never saved to Google Contacts. High-value for a CRM: it surfaces real ties missing from the address book. Paginated like contacts_list. |
| contact_groups_listC | List the account's contact groups — Google's native labels/segments (e.g. 'Family', 'Work'). These map cleanly to CRM tags/circles. |
| contact_group_getB | Fetch one contact group with its member resourceNames. Pair the returned
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 48 tools
Most tools are clearly separated by service and action, and the descriptions clarify overlaps like gmail_send vs gmail_draft_send or drive_file_get vs drive_search. The main confusion points are task_list vs tasklist_list and singular/plural contact tools, but these are still distinguishable with the descriptions.
All names are snake_case and generally readable, but conventions vary between service_action (gmail_send, drive_search, calendar_list) and service_resource_action (gmail_message_get, drive_file_get, calendar_event_update). Singular/plural inconsistencies (contacts_list vs contact_get, gmail_labels_list vs gmail_label_create) and the near-identical task_list/tasklist_list reduce predictability.
48 tools is very heavy for a single MCP server, even one spanning five Google Workspace services. While many tools are useful, the count is near the extreme end and includes convenience/niche tools such as task_complete, contacts_batch_get, and drive_file_link_access.
Gmail, Calendar, Drive, and Tasks have solid lifecycle coverage for common workflows, including create/update/delete and search/list operations. However, Contacts is essentially read-only with no create/update/delete, and there are notable secondary gaps such as Gmail label deletion/update and Calendar creation/deletion.