google-workspace-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_WORKSPACE_MCP_CLIENT_ID | No | OAuth client ID (Option A). Use with GOOGLE_WORKSPACE_MCP_CLIENT_SECRET to bypass credentials.json file. | |
| GOOGLE_WORKSPACE_MCP_CREDENTIALS | No | Path to the OAuth credentials.json file (overrides default location). | |
| GOOGLE_WORKSPACE_MCP_CLIENT_SECRET | No | OAuth client secret (Option A). Use with GOOGLE_WORKSPACE_MCP_CLIENT_ID to bypass credentials.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 |
|---|---|
| drive_search_filesA | Search for files and folders in Google Drive. Accepts either plain text (matched against file names) or a raw Drive query string for advanced filtering by MIME type, folder, date, etc. Returns:
str: JSON with keys |
| drive_get_file_metadataA | Get full metadata for a single Drive file or folder. Returns: str: JSON object with id, name, mimeType, size, modifiedTime, createdTime, webViewLink, parents, owners, and permissions summary. |
| drive_read_file_contentA | Read the text content of a Drive file directly into the conversation. Google Docs export as plain text, Google Sheets as CSV, Google Slides as plain text. Other text-based files (txt, md, csv, json, code files) are read directly. Binary files (images, PDFs, etc.) are not supported here — use drive_download_file to save them locally instead. Returns: str: The file's text content (truncated to max_chars), or an error message explaining why the file couldn't be read as text. |
| drive_upload_fileB | Upload a local file to Google Drive. Returns: str: JSON with the created file's id, name, mimeType, and webViewLink. |
| drive_create_folderA | Create a new folder in Google Drive. Returns: str: JSON with the created folder's id, name, and webViewLink. |
| drive_download_fileA | Download a Drive file to a local path, exporting Google-native files if needed. Returns: str: JSON with the saved local path and byte size, or an error message (e.g. if export_mime_type is required but missing). |
| drive_trash_fileA | Move a Drive file to the trash (recoverable, not permanent deletion). Returns: str: JSON confirming the file id and its new trashed status. |
| sheets_read_rangeA | Read cell values from a range in a Google Sheet. Returns:
str: JSON with |
| sheets_write_rangeA | Write values into a range, overwriting whatever is currently there. The number of rows/columns in Returns:
str: JSON with |
| sheets_append_valuesA | Append rows after the last row of existing data in a table/range. Unlike sheets_write_range, this never overwrites existing rows — the Sheets API finds the end of the data and inserts after it. Returns:
str: JSON with |
| sheets_clear_rangeA | Clear all values in a range, leaving cell formatting intact. Returns: str: JSON confirming the cleared range. |
| sheets_create_spreadsheetA | Create a new Google Sheets spreadsheet, optionally with named tabs. The new file lands in the account's 'My Drive' root; use drive_upload_file's sibling tools (e.g. a follow-up move) if it needs to live in a specific folder. Returns:
str: JSON with |
| sheets_list_tabsA | List all sheet tabs in a spreadsheet with their IDs and dimensions. Returns: str: JSON list of {sheet_id, title, index, row_count, column_count}. |
| docs_create_documentA | Create a new Google Doc, optionally with initial plain-text content. The new file lands in the account's 'My Drive' root. Returns:
str: JSON with |
| docs_read_documentA | Read the plain-text content of a Google Doc. Tables, images, and rich formatting are not preserved — only the text content of paragraphs is extracted, in reading order. Returns:
str: JSON with |
| docs_append_textA | Append plain text to the end of an existing Google Doc. Returns: str: JSON confirming the document_id and number of characters appended. |
| docs_replace_textA | Replace all occurrences of a text string throughout a Google Doc. Returns:
str: JSON with the number of replacements made ( |
| calendar_list_calendarsA | List all calendars the authenticated account can access. Returns: str: JSON list of {id, summary, primary, access_role}. |
| calendar_list_eventsA | List upcoming or date-ranged events on a calendar, optionally filtered by text. Returns: str: JSON list of events with id, summary, description, location, start, end, attendees, organizer, status, and htmlLink. |
| calendar_create_eventA | Create a new calendar event, optionally inviting attendees. Attendees receive an email invitation automatically from Google Calendar; there's no separate send step. Returns: str: JSON with the created event's id, htmlLink, and summary. |
| calendar_update_eventA | Update fields on an existing calendar event. Only provided fields change. Returns: str: JSON with the updated event's id, summary, start, and end. |
| calendar_delete_eventA | Permanently delete a calendar event (attendees are notified of cancellation). Returns: str: JSON confirming deletion. |
| gmail_search_messagesA | Search or list Gmail messages using Gmail's search syntax. Returns lightweight results (id, threadId, snippet, from, subject, date) — use gmail_get_message for the full body of a specific message. Returns: str: JSON list of message summaries. |
| gmail_get_messageA | Get the full content of a single Gmail message, including plain-text body. Returns: str: JSON with from, to, subject, date, body (plain text), and labels. |
| gmail_send_messageA | Send an email immediately from the authenticated Gmail account. This sends right away with no draft/confirmation step on the API side — confirm intent with the user before calling this tool. Returns: str: JSON with the sent message's id and threadId. |
| gmail_create_draftA | Create a draft email without sending it. Returns: str: JSON with the draft's id and message id. |
| gmail_list_labelsA | List all Gmail labels (system labels like INBOX plus user-created ones). Returns: str: JSON list of {id, name, type}. |
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/hoaaah/Google-Workspace-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server