Google Workspace MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_CLIENT_ID | Yes | OAuth 2.0 client ID | |
| GOOGLE_TOKEN_PATH | No | Path to token JSON file | ~/.google-mcp/credentials.json |
| GOOGLE_TOKEN_SECRET | No | Google Secret Manager secret name for token fallback | google-mcp-oauth-tokens |
| GOOGLE_CLIENT_SECRET | Yes | OAuth 2.0 client secret |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| drive_searchC | Search for files in Google Drive using a query string |
| drive_readB | Read the content of a file from Google Drive. Exports Google Docs/Sheets/Slides as text/csv. |
| drive_listB | List files in a specific Google Drive folder |
| drive_file_infoC | Get detailed metadata about a file in Google Drive |
| drive_create_folderB | Create a new folder in Google Drive |
| drive_create_fileC | Create a new text file in Google Drive |
| drive_update_fileC | Update file metadata and/or content in Google Drive |
| drive_deleteA | Permanently delete a file from Google Drive |
| drive_trashB | Move a file to trash in Google Drive |
| drive_untrashB | Restore a file from trash in Google Drive |
| drive_copyC | Copy a file in Google Drive |
| drive_moveB | Move a file to a different folder in Google Drive |
| drive_shareC | Share a file with someone in Google Drive |
| drive_list_permissionsC | List sharing permissions on a file in Google Drive |
| drive_remove_permissionB | Remove a sharing permission from a file in Google Drive |
| drive_aboutA | Get Google Drive storage quota and user info |
| drive_upload_fileB | Upload a local file (binary or text) to Google Drive. Supports any file type. |
| drive_download_fileB | Download a file from Google Drive to a local path |
| drive_get_commentsB | List comments on a Google Drive file |
| drive_add_commentB | Add a comment to a Google Drive file |
| drive_export_fileA | Export a Google Workspace file (Doc, Sheet, Slides) to a different format (PDF, DOCX, CSV, PPTX, etc.) |
| drive_get_revisionsC | List revisions of a Google Drive file |
| drive_empty_trashA | Permanently delete all files in Google Drive trash |
| drive_get_changes_start_tokenA | Get the starting pageToken for listing future changes in Google Drive |
| drive_list_changesB | List changes to files in Google Drive since a given page token |
| drive_watch_changesC | Subscribe to changes in Google Drive via push notifications |
| drive_stop_channelB | Stop receiving push notifications for a channel |
| drive_get_commentA | Get a specific comment on a Google Drive file by ID |
| drive_update_commentB | Update the content of a comment on a Google Drive file |
| drive_delete_commentB | Delete a comment from a Google Drive file |
| drive_list_repliesC | List replies to a comment on a Google Drive file |
| drive_get_replyB | Get a specific reply to a comment on a Google Drive file |
| drive_create_replyB | Create a reply to a comment on a Google Drive file |
| drive_update_replyB | Update a reply to a comment on a Google Drive file |
| drive_delete_replyB | Delete a reply to a comment on a Google Drive file |
| drive_create_shared_driveB | Create a new shared drive in Google Drive |
| drive_get_shared_driveB | Get metadata of a shared drive in Google Drive |
| drive_list_shared_drivesC | List shared drives the user has access to |
| drive_update_shared_driveB | Update metadata of a shared drive (name, restrictions, etc.) |
| drive_delete_shared_driveA | Delete a shared drive (must be empty) |
| drive_hide_shared_driveC | Hide a shared drive from the default view |
| drive_unhide_shared_driveA | Restore a shared drive to the default view |
| drive_get_permissionA | Get a specific permission on a Google Drive file by permission ID |
| drive_update_permissionB | Update a permission on a Google Drive file (change role) |
| drive_get_revisionB | Get metadata of a specific revision of a Google Drive file |
| drive_update_revisionB | Update metadata of a revision (published, publishAuto, publishedOutsideDomain, keepForever) |
| drive_delete_revisionA | Delete a revision of a Google Drive file (cannot delete the last remaining revision) |
| drive_generate_idsA | Generate a set of file IDs that can be used in create or copy requests |
| drive_list_labelsB | List labels applied to a Google Drive file |
| drive_modify_labelsA | Modify (add, update, remove) labels on a Google Drive file |
| drive_watch_fileB | Subscribe to push notifications for changes to a specific Google Drive file |
| drive_list_access_proposalsA | List access proposals on a file (requests for access) |
| drive_get_access_proposalB | Get a specific access proposal by ID |
| drive_resolve_access_proposalB | Approve or deny an access proposal on a file |
| drive_list_appsB | List the user's installed Google Drive apps |
| drive_get_appA | Get a specific installed Drive app by ID |
| drive_get_operationA | Get the status of a long-running operation |
| calendar_list_eventsC | List upcoming Google Calendar events |
| calendar_search_eventsA | Search Google Calendar events by text query (searches summary, description, location, attendees) |
| calendar_create_eventC | Create a new Google Calendar event |
| calendar_update_eventB | Update an existing Google Calendar event |
| calendar_delete_eventB | Delete a Google Calendar event |
| calendar_list_calendarsB | List all Google Calendars accessible to the user |
| calendar_quick_addA | Create a Google Calendar event from natural language text (e.g. "Meeting tomorrow at 3pm") |
| calendar_get_eventA | Get detailed information about a specific Google Calendar event |
| calendar_move_eventB | Move a Google Calendar event from one calendar to another |
| calendar_recurring_instancesC | List instances of a recurring Google Calendar event |
| calendar_freebusyB | Check free/busy time for one or more Google Calendars |
| calendar_create_calendarC | Create a new Google Calendar |
| calendar_update_calendarB | Update a Google Calendar (name, description, time zone) |
| calendar_delete_calendarA | Delete a Google Calendar (cannot delete primary) |
| calendar_clearB | Clear all events from a Google Calendar (removes all events but keeps the calendar) |
| calendar_acl_listB | List access control rules (ACL) for a Google Calendar |
| calendar_acl_getA | Get a specific access control rule for a Google Calendar |
| calendar_acl_insertB | Create a new access control rule for a Google Calendar |
| calendar_acl_updateC | Update an existing access control rule for a Google Calendar |
| calendar_acl_deleteB | Delete an access control rule from a Google Calendar |
| calendar_acl_watchB | Watch for changes to ACL rules on a Google Calendar (push notifications) |
| calendar_list_getC | Get a specific calendar entry from the user's calendar list |
| calendar_list_insertB | Add an existing calendar to the user's calendar list |
| calendar_list_updateB | Update a calendar's settings in the user's calendar list (color, reminders, visibility) |
| calendar_list_deleteB | Remove a calendar from the user's calendar list |
| calendar_list_watchC | Watch for changes to the user's calendar list (push notifications) |
| calendar_stop_channelB | Stop receiving push notifications for a watch channel |
| calendar_get_colorsA | Get color definitions for Google Calendar (available colors for calendars and events) |
| calendar_import_eventA | Import an event into a Google Calendar (adds a private copy using iCalUID) |
| calendar_watch_eventsC | Watch for changes to events on a Google Calendar (push notifications) |
| calendar_get_settingA | Get a single Google Calendar user setting by name |
| calendar_list_settingsA | List all Google Calendar user settings |
| calendar_watch_settingsB | Watch for changes to Google Calendar user settings (push notifications) |
| calendar_get_calendarA | Get metadata for a specific Google Calendar by ID |
| contacts_listC | List Google Contacts or search by query |
| contacts_getB | Get a specific Google Contact by resource name |
| tasks_listA | List all Google Task lists |
| tasks_list_tasksB | List tasks in a specific task list |
| tasks_createB | Create a new Google Task |
| tasks_completeA | Mark a Google Task as completed |
| sheets_readB | Read data from a Google Spreadsheet |
| sheets_writeC | Write data to a Google Spreadsheet |
| contacts_createB | Create a new Google Contact |
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 240 tools
Most tools pair a service prefix with a specific resource and action, and the descriptions are detailed enough to separate lookalikes like gmail_trash/gmail_delete or drive_read/drive_export_file. A few pairs remain easy to confuse without reading descriptions, such as tasks_list vs tasks_list_tasks and sheets_batch_update vs sheets_batch_update_values, so it is not perfect.
Naming follows a predictable lowercase snake_case `<service>_<verb>_<noun>` pattern across Drive, Calendar, Gmail, Contacts, Tasks, Sheets, Docs, and Slides. The pattern is mostly consistent and readable, though a few names like gmail_profile and drive_about are non-verb deviations, and tasks_list vs tasks_list_tasks reads awkwardly.
240 tools is far beyond a practical MCP tool surface and creates an enormous selection problem for an agent. Even though the tools map to real Google APIs, a server with 50+ tools is inherently overwhelming and should be split into per-service servers.
Within the included services, coverage is deep: there are CRUD/lifecycle operations for files, calendar events, Gmail messages, contacts, tasks, spreadsheets, docs, and slides, plus permissions, settings, watch channels, drafts, labels, and batch operations. Minor gaps remain, such as no task list update, no direct Docs/Slides delete, and no Chat/Meet/Forms coverage, so it is strong but not exhaustive for all of Google Workspace.