Google Workspace MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GWS_BIN | No | Path to the Google Workspace CLI (gws) binary. Use if it is not on PATH. | |
| GWS_SERVICES | No | Comma-separated list of services to enable (e.g., drive,calendar). Other services are not registered. | |
| GWS_MCP_TOKEN | No | Bearer token required for HTTP transport. | |
| GWS_READ_ONLY | No | Set to '1' to refuse every write operation. | |
| GOOGLE_WORKSPACE_CLI_CONFIG_DIR | No | Directory for gws config. Use to run multiple instances with different accounts. | |
| GOOGLE_WORKSPACE_CLI_KEYRING_BACKEND | No | Set to 'file' to use file-based keyring instead of OS keychain (needed on headless servers). |
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 |
|---|---|
| gmail_searchA | Search the mailbox with Gmail's own query syntax (from:, to:, subject:, has:attachment, newer_than:7d, is:unread). Returns message ids and snippets; use gmail_get_message for a full body. |
| gmail_get_messageC | One message in full, including the body and headers. |
| gmail_get_threadB | A whole conversation in order. Prefer this over fetching messages one by one when you need context. |
| gmail_create_draftA | Write a draft. It is NOT sent: it appears in Drafts for a person to review. This is the safe way to have an agent write email. |
| gmail_send_draftA | Send a draft that already exists. Separate from creating one on purpose: an agent drafts, a person sends. Cannot be undone. |
| gmail_modify_labelsA | Add or remove labels on a message. Use this to archive (remove INBOX), mark read (remove UNREAD) or triage. |
| gmail_list_labelsA | Every label with its id. Label ids are needed by gmail_modify_labels and are not the same as their display names. |
| drive_searchA | Find files with Drive query syntax (name contains 'x', mimeType='application/pdf', modifiedTime > '2026-01-01'). Returns id, name, type and link. |
| drive_get_fileB | Metadata for one file: name, type, size, owners, sharing and link. |
| drive_exportA | Read the CONTENT of a Google Doc, Sheet or Slide as text. drive_get_file returns metadata only, so this is the one to use when you need what is inside. |
| drive_create_folderA | Create a folder, optionally inside another. |
| drive_shareA | Grant someone access to a file. Sharing is visible to the other person immediately, so check the address before calling. |
| drive_trashA | Move a file to the trash. Recoverable for 30 days, unlike a permanent delete, which this tool deliberately does not do. |
| sheets_readB | Read a cell range, e.g. 'Sheet1!A1:D50'. Returns rows as arrays. |
| sheets_writeB | Overwrite a range with new values. Existing cells in that range are replaced. |
| sheets_appendA | Add rows to the end of a sheet without touching what is there. Prefer this over sheets_write when adding data. |
| sheets_getA | Spreadsheet structure: every sheet name, id, and dimensions. Read this before a range query so the sheet name is right. |
| sheets_createA | Create a new spreadsheet and return its id. |
| docs_getA | Read a Google Doc's full structured content. For plain prose, drive_export with text/markdown is usually easier to work with. |
| docs_createA | Create a new Google Doc with a title, and optionally an opening body of text. |
| docs_appendA | Add text to the end of a Doc without touching what is already there. |
| calendar_list_eventsA | Events in a window. Times are RFC3339, e.g. 2026-09-01T00:00:00Z. Defaults to the primary calendar. |
| calendar_create_eventA | Create an event. Adding attendees emails them immediately, so confirm the list before calling with any. |
| calendar_update_eventA | Change an existing event. Only the fields you pass are altered. |
| calendar_delete_eventA | Delete an event. Attendees are notified that it was cancelled, and it cannot be undone. |
| calendar_list_calendarsA | Every calendar this account can see, with its id. Needed before working on anything other than primary. |
| tasks_listsB | Every task list with its id. |
| tasks_listA | Tasks in a list. Completed ones are hidden unless you ask for them. |
| tasks_createA | Add a task. |
| tasks_completeC | Mark a task done. |
| slides_getB | A presentation's structure and the text on every slide. |
| slides_createA | Create an empty presentation and return its id. |
| forms_getC | A form's questions and settings. |
| forms_responsesC | Every response to a form. |
| contacts_searchB | Search your own contacts by name, email or company. |
| contacts_listB | All your contacts, paged. |
| workspace_rawA | Call any Google Workspace API method the curated tools do not cover. The CLI is generated from Google's discovery service, so this reaches roughly 400 methods across drive, gmail, sheets, docs, slides, calendar, tasks, people, chat, forms, keep, meet, script and admin-reports. Use workspace_schema first to learn the exact shape. |
| workspace_schemaA | The exact parameters and request body a method expects, straight from Google's discovery service. Read this before workspace_raw rather than guessing field names. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/navidmoazzez/google-workspace-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server