Google Workspace MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_OAUTH_CLIENT_ID | Yes | Your Google OAuth client ID from Google Cloud Console | |
| GOOGLE_OAUTH_CLIENT_SECRET | Yes | Your Google OAuth client secret from Google Cloud Console |
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 |
|---|---|
| gmail_searchA | Search Gmail messages. Uses Gmail query syntax: 'is:unread', 'from:user@example.com', 'subject:meeting has:attachment', 'after:2026/01/01', etc. Empty query returns recent messages. |
| gmail_read_messageB | Read the full content of a Gmail message by its ID. |
| gmail_read_threadA | Read all messages in a Gmail thread by its thread ID. |
| gmail_sendB | Send an email. Supports plain text and HTML, CC/BCC, and threading for replies. |
| gmail_draftA | Create a Gmail draft. All fields are optional for work-in-progress drafts. |
| gmail_list_labelsA | List all Gmail labels (system and user-created). |
| gmail_modify_labelsA | Modify labels on a message. Use to archive (remove INBOX), mark read (remove UNREAD), star (add STARRED), etc. |
| gmail_send_draftB | Send an existing Gmail draft. |
| gmail_get_attachmentB | Download a Gmail attachment and return its base64 data. |
| gmail_trashB | Move a Gmail message to the trash. |
| gmail_untrashB | Remove a Gmail message from the trash. |
| gmail_create_labelC | Create a new Gmail label. |
| gmail_delete_labelC | Delete a Gmail label. |
| gmail_list_filtersA | List all Gmail filters. |
| gmail_create_filterB | Create a Gmail filter. criteria: {from, to, subject, query, hasAttachment}. action: {addLabelIds, removeLabelIds, forward}. |
| gmail_delete_filterC | Delete a Gmail filter. |
| gmail_get_vacationA | Get current Gmail vacation/auto-reply settings. |
| gmail_set_vacationC | Set Gmail vacation/auto-reply responder. |
| calendar_list_calendarsA | List all calendars the user has access to. |
| calendar_get_eventsA | Get calendar events. Filter by time range (RFC3339 format) and/or text search. |
| calendar_create_eventB | Create a calendar event. Use RFC3339 datetimes for timed events or YYYY-MM-DD for all-day. Set add_google_meet=True to auto-generate a Google Meet link. |
| calendar_update_eventB | Update an existing calendar event. Only provided fields are changed. |
| calendar_delete_eventC | Delete a calendar event. |
| calendar_freebusyB | Query free/busy info for calendars. Returns busy time blocks. |
| calendar_list_recurring_instancesC | List instances of a recurring event. |
| calendar_quick_addB | Create an event from natural language (e.g. 'Lunch with John tomorrow at noon'). |
| meet_create_spaceA | Create a new Google Meet meeting space. Returns meeting URI and code. |
| meet_get_spaceA | Get details about a Google Meet meeting space by its resource name (e.g. 'spaces/abc-defg-hij'). |
| meet_list_participantsA | List participants and their sessions for a conference record (e.g. 'conferenceRecords/abc-defg-hij'). |
| meet_get_artifactsA | Get recordings, transcripts, and transcript entries for a conference record. |
| meet_end_conferenceB | End an active conference in a meeting space. |
| meet_list_conference_recordsB | List past conference records (meeting history). |
| meet_list_participant_sessionsB | List sessions for a specific participant in a conference. |
| drive_searchA | Search Google Drive files. Uses Drive query syntax: 'name contains "report"', 'mimeType="application/pdf"', etc. |
| drive_read_fileA | Read the text content of a Drive file (Google Docs/Sheets/Slides exported, or raw text files). |
| drive_create_fileC | Create a new file in Drive. Set as_google_doc=True to create a Google Doc. |
| drive_list_folderB | List contents of a Drive folder. |
| drive_share_fileB | Share a Drive file. Roles: 'reader', 'writer', 'commenter'. |
| drive_create_folderC | Create a folder in Google Drive. |
| drive_copy_fileC | Copy a file in Google Drive. |
| drive_exportA | Export a Google Workspace file to a format (PDF, DOCX, CSV, XLSX, PPTX, PNG, etc). |
| drive_add_commentC | Add a comment to a Drive file. |
| drive_list_commentsB | List comments on a Drive file. |
| drive_list_revisionsB | List file revisions (version history). |
| drive_list_permissionsB | List sharing permissions on a file. |
| drive_delete_permissionB | Remove a sharing permission from a file. |
| drive_trashA | Move a file to the trash. |
| drive_untrashC | Restore a file from the trash. |
| docs_createA | Create a new Google Doc with optional initial text content. |
| docs_readA | Read the full text content of a Google Doc. |
| docs_append_paragraphA | RECOMMENDED way to add a heading/title/subtitle/body paragraph: appends one fully-styled paragraph to the end of the doc in a single call, no character-index math needed. style: NORMAL_TEXT (body), TITLE, SUBTITLE, HEADING_1..HEADING_6. |
| docs_insert_paragraphA | Insert one fully-styled paragraph at a specific index, no separate style call needed. Prefer docs_append_paragraph if you're just adding to the end (no index required there). style: NORMAL_TEXT (body), TITLE, SUBTITLE, HEADING_1..HEADING_6. |
| docs_insert_textA | Insert text at a specific position in a Google Doc. Index 1 = beginning. |
| docs_find_replaceB | Find and replace text in a Google Doc. |
| docs_append_textC | Append text to the end of a Google Doc. |
| docs_insert_tableB | Insert a table into a Google Doc. |
| docs_insert_imageB | Insert an image into a Google Doc from a URL. |
| docs_format_textB | Apply formatting (bold, italic, underline, font size, color) to a text range in a Google Doc. |
| docs_set_paragraph_styleC | Apply a paragraph-level named style — heading, title, subtitle, or normal text — to a range in a Google Doc. style: NORMAL_TEXT, TITLE, SUBTITLE, HEADING_1..HEADING_6. |
| docs_insert_bulletsC | Apply bullet or numbered list formatting to paragraphs in a Google Doc. |
| docs_insert_page_breakC | Insert a page break in a Google Doc. |
| docs_delete_textC | Delete a range of content from a Google Doc. |
| docs_set_alignmentB | Set paragraph alignment for a text range. alignment: START, CENTER, END, JUSTIFIED. |
| docs_insert_linkB | Turn an existing range of text into a hyperlink. |
| docs_batch_updateA | Apply a list of raw Docs API batchUpdate requests in one round-trip — combine many edits (text, styling, tables, images) into a single atomic call instead of many tool calls. |
| docs_insert_table_rowB | Insert a row into an existing table. table_start_index is the table's character startIndex. |
| docs_delete_table_rowC | Delete a row from an existing table. |
| docs_insert_table_columnC | Insert a column into an existing table. |
| docs_delete_table_columnB | Delete a column from an existing table. |
| docs_add_headerB | Create a header for a doc. Use docs_insert_segment_text to add content to it. |
| docs_add_footerA | Create a footer for a doc. Use docs_insert_segment_text to add content to it. |
| docs_insert_segment_textB | Insert text into a header/footer/footnote segment (segment_id from docs_add_header/footer). |
| docs_set_marginsA | Set page margins (in points). Omit any side to leave it unchanged. |
| sheets_readA | Read values from a Google Sheet. Use A1 notation for ranges (e.g. 'Sheet1!A1:D10'). |
| sheets_writeC | Write values to a Google Sheet. Values is a 2D array like [['Name','Age'],['Alice',30]]. |
| sheets_appendB | Append rows to a Google Sheet after existing data. |
| sheets_createA | Create a new Google Spreadsheet with optional custom sheet/tab names. |
| sheets_clearB | Clear values from a range in a Google Sheet. |
| sheets_get_infoA | Get spreadsheet metadata — title, sheets/tabs, row and column counts. |
| sheets_batch_updateA | Write to multiple ranges in one request. data: [{"range": "A1", "values": [[...]]}]. |
| sheets_add_sheetB | Add a new sheet/tab to a spreadsheet. |
| sheets_delete_sheetA | Delete a sheet/tab (by numeric sheet ID, not name). |
| sheets_merge_cellsB | Merge cells in a sheet. Indices are 0-based, end is exclusive. |
| sheets_add_chartC | Add a chart. Types: BAR, LINE, AREA, COLUMN, SCATTER, COMBO, STEPPED_AREA. |
| sheets_add_conditional_formatC | Add conditional formatting. rule_type: NUMBER_GREATER, TEXT_CONTAINS, CUSTOM_FORMULA, BLANK, etc. |
| sheets_format_cellsB | Format cells — background/text color, bold, italic, font size, number format (e.g. '0.00%', 'yyyy-mm-dd'). |
| sheets_insert_dimensionC | Insert blank rows or columns, shifting content. dimension: 'ROWS' or 'COLUMNS'. |
| sheets_delete_dimensionA | Delete rows or columns, shifting remaining content. dimension: 'ROWS' or 'COLUMNS'. |
| sheets_freeze_panesA | Freeze header rows/columns so they stay visible while scrolling. |
| sheets_sort_rangeB | Sort a range of cells by a column. sort_column is an absolute 0-based column index. |
| sheets_set_data_validationB | Add data validation (dropdown, checkbox, number/text/date constraint) to a cell range. rule_type: ONE_OF_LIST, CHECKBOX, NUMBER_BETWEEN, NUMBER_GREATER, TEXT_CONTAINS, DATE_IS_VALID. |
| sheets_add_named_rangeC | Create a named range in a spreadsheet. |
| sheets_raw_batch_updateA | Apply a list of raw Sheets API batchUpdate requests in one round-trip — combine many structural/formatting edits into a single atomic call instead of many tool calls. |
| sheets_update_bordersB | Set cell borders. sides: top, bottom, left, right, innerHorizontal, innerVertical. |
| sheets_auto_resizeB | Auto-resize rows or columns to fit their content. dimension: 'ROWS' or 'COLUMNS'. |
| sheets_unmerge_cellsA | Unmerge a previously merged cell range. |
| sheets_duplicate_sheetB | Duplicate a sheet/tab within the same spreadsheet. |
| sheets_update_dimension_propertiesB | Set column width / row height in pixels, and/or hide or show rows/columns. |
| sheets_add_protected_rangeA | Protect a cell range from editing. warning_only=False restricts editing to editor_emails. |
| sheets_add_bandingC | Apply alternating-color row banding (zebra stripes) to a range. |
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/GhazwaPasha/Google-wrk-spc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server