google-workspace-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_OAUTH_CLIENT_ID | Yes | Google OAuth client ID from Google Cloud Console | |
| GOOGLE_OAUTH_CLIENT_SECRET | Yes | Google OAuth client secret from Google Cloud Console |
Capabilities
Features and capabilities supported by this server
| 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_messageA | Read the full content of a Gmail message by its ID. |
| gmail_read_threadB | 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_draftB | 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_draftC | 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_filterC | 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_eventsB | Get calendar events. Filter by time range (RFC3339 format) and/or text search. |
| calendar_create_eventA | 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_eventA | 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_instancesB | List instances of a recurring event. |
| calendar_quick_addA | 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_artifactsC | Get recordings, transcripts, and transcript entries for a conference record. |
| meet_end_conferenceC | End an active conference in a meeting space. |
| meet_list_conference_recordsC | 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_fileC | Share a Drive file. Roles: 'reader', 'writer', 'commenter'. |
| drive_create_folderB | Create a folder in Google Drive. |
| drive_copy_fileC | Copy a file in Google Drive. |
| drive_exportC | Export a Google Workspace file to a format (PDF, DOCX, CSV, XLSX, PPTX, PNG, etc). |
| drive_add_commentB | Add a comment to a Drive file. |
| drive_list_commentsC | List comments on a Drive file. |
| drive_list_revisionsB | List file revisions (version history). |
| drive_list_permissionsC | List sharing permissions on a file. |
| drive_delete_permissionB | Remove a sharing permission from a file. |
| drive_trashC | 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_readB | Read the full text content of a Google Doc. |
| docs_insert_textA | Insert text at a specific position in a Google Doc. Index 1 = beginning. |
| docs_find_replaceC | Find and replace text in a Google Doc. |
| docs_append_textB | Append text to the end of a Google Doc. |
| docs_insert_tableC | Insert a table into a Google Doc. |
| docs_insert_imageB | Insert an image into a Google Doc from a URL. |
| docs_format_textC | Apply formatting (bold, italic, underline, font size, color) to a text range in a Google Doc. |
| docs_insert_bulletsB | Apply bullet or numbered list formatting to paragraphs in a Google Doc. |
| docs_insert_page_breakC | Insert a page break in a Google Doc. |
| sheets_readB | 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_appendA | 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_cellsC | 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_add_named_rangeC | Create a named range in a spreadsheet. |
| tasks_list_tasklistsA | List all Google Tasks task lists. |
| tasks_listC | List tasks in a task list. Use '@default' for the primary list. |
| tasks_createA | Create a new task. Set parent for subtasks. Due date in RFC3339 format. |
| tasks_updateB | Update a task. Status can be 'needsAction' or 'completed'. |
| tasks_deleteC | Delete a task. |
| tasks_create_tasklistC | Create a new task list. |
| tasks_moveA | Move/reorder a task. Set parent to make it a subtask, previous to position after another task. |
| tasks_clear_completedC | Clear all completed tasks from a task list. |
| contacts_searchB | Search contacts by name, email, or phone number. |
| contacts_listB | List all contacts sorted by last name. |
| contacts_createB | Create a new contact with name, email, phone, organization, and title. |
| contacts_updateB | Update a contact. Resource name from contacts_search/contacts_list (e.g. 'people/c123'). |
| contacts_deleteB | Delete a contact by resource name. |
| contacts_list_groupsB | List all contact groups (labels). |
| contacts_create_groupC | Create a new contact group. |
| contacts_modify_group_membersC | Add or remove contacts from a contact group. |
| contacts_batch_createA | Create multiple contacts at once. Each dict: {givenName, familyName, email, phone, organization, title}. |
| contacts_batch_deleteB | Delete multiple contacts at once. |
| contacts_get_photoB | Get the photo URL for a contact. |
| slides_createB | Create a new Google Slides presentation. |
| slides_readA | Read a presentation's metadata and text content from all slides. |
| slides_add_slideB | Add a slide. Layouts: BLANK, CAPTION_ONLY, TITLE, TITLE_AND_BODY, TITLE_AND_TWO_COLUMNS. |
| slides_add_textB | Add text to a slide. Creates a new text box if shape_id is empty. |
| slides_insert_shapeC | Insert a shape (RECTANGLE, ELLIPSE, TRIANGLE, STAR, ARROW_EAST, etc) onto a slide. |
| slides_insert_imageB | Insert an image onto a slide from a URL. |
| slides_insert_tableC | Insert a table onto a slide. |
| slides_insert_videoB | Insert a YouTube video onto a slide. video_id is the YouTube video ID. |
| slides_format_textB | Format text within a shape on a slide (bold, italic, size, color). |
| slides_get_thumbnailB | Get a thumbnail image URL for a slide. |
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/shanebrady77/google-workspace-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server