google-workspace-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GWM_HOME | No | Override config home directory. Defaults to $XDG_CONFIG_HOME/google-workspace-mcp or ~/.config/google-workspace-mcp | |
| GWM_ACCOUNTS | No | Comma-separated list of account slugs or inline JSON map to expose. Omit to expose all accounts from registry. | |
| GWM_TOKENS_DIR | No | Override directory for per-account token files. | |
| GWM_CREDENTIALS | No | Override path to OAuth client credentials JSON file. | |
| GWM_ACCOUNTS_FILE | No | Override path to account registry JSON file. |
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 the configured Google accounts and whether each token still works. |
| gmail_sendA | Send an email immediately from the given account. |
| gmail_draft_createA | Create a Gmail draft. Returns {id, message: {...}}. |
| gmail_draft_updateA | 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_update_contentA | Replace an existing file's contents in place. The file keeps its ID,
link and sharing, and the previous contents stay in Drive's revision
history. Use this rather than |
| 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 |
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 42 tools
Most tools are cleanly separated by service and resource (gmail_message_get vs gmail_thread_get vs gmail_attachment_download), and the descriptions are detailed enough to guide selection. The notable exceptions are tasklist_list vs task_list, which are easy to mix up, and task_complete being a redundant shortcut for task_update.
Names consistently use snake_case with a service prefix and mostly follow the domain_resource_action pattern (gmail_message_get, calendar_event_create, drive_file_trash, task_update). Minor deviations such as gmail_search, drive_search, calendar_list, and the plural gmail_drafts_list / calendar_events_list break the pattern slightly, but the overall convention remains predictable.
42 tools is heavy, but the server spans four product areas (Gmail, Calendar, Drive, Tasks) plus account management, so most tools correspond to a distinct operation and each service cluster is 6-14 tools. Still, the total exceeds the comfortable range, and a few tools like task_complete and drive_file_link_access add redundancy or niche surface area.
Core lifecycles are well covered: Gmail send/draft/search/labels/threads, Calendar event CRUD, Drive upload/download/update/move/trash/share, and Tasks list/task CRUD plus move and complete. Minor gaps remain, such as no label update/delete, no Drive permission revocation, and no tasklist rename/update, but most common workflows can be completed without workarounds.