
Google Workspace MCP Server by Taylor Wilsdon: Setup for Claude and Cursor
Lets Claude, Cursor and other assistants read and send Gmail, manage Drive and Calendar, and edit Docs, Sheets, Slides, Forms, Tasks and Contacts.
This is a community server by Taylor Wilsdon, not made by Google. It runs on your computer and uses your own Google Cloud OAuth client, so you set up a project in Google Cloud and sign in with your Google account.
The published package has 113 tools, so start small. Use a tool tier or pick services, and turn on read-only mode if you only need to read. The README says it sends no data anywhere except Google's APIs.
Good for
- People who want the assistant to handle email, calendar and files in one place
- Teams who work in Docs, Sheets and Slides and want edits made from chat
- Developers who need Google Workspace tools in their own deployment
- IT teams who want their own Google Cloud project and scopes
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install google_workspace_mcp MCP
Claude Code
- 1
Copy this prompt.
Add the google_workspace_mcp MCP server to Claude Code. Run this command: claude mcp add google-workspace-mcp -e GOOGLE_OAUTH_CLIENT_ID=<GOOGLE_OAUTH_CLIENT_ID> -e GOOGLE_OAUTH_CLIENT_SECRET=<GOOGLE_OAUTH_CLIENT_SECRET> -- uvx workspace-mcp Ask me for GOOGLE_OAUTH_CLIENT_ID, GOOGLE_OAUTH_CLIENT_SECRET and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires uv (Python).
Read-only mode: Set WORKSPACE_MCP_READ_ONLY to true, or add --read-only after workspace-mcp in the launch arguments.
Before the first run, create an OAuth client in the Google Cloud Console and turn on the Google APIs for the services you plan to use. Put its client ID and secret in the two required settings. The first time a tool needs your account, sign in with Google when asked. The tool list is large, so load less with a tool tier or a service list, or turn on read-only mode.
Built from the package data we hold. Not yet tested by us. Source.
Tools
Finds emails with a Gmail search
Runs a Gmail search query and returns matching message and thread IDs with links, one page at a time.
Try: “Find emails from my landlord this month.”
Read ·
search_gmail_messagesReads one email
Returns the subject, sender, recipients and body of a single message, in pages for long ones.
Try: “Open the email with the invoice from Acme.”
Read ·
get_gmail_message_contentReads many emails at once
Fetches up to 25 messages in one call.
Try: “Read these five emails and summarize them.”
Read ·
get_gmail_messages_content_batchReads a whole conversation
Returns every message in an email thread, and can add who owns each part.
Try: “Show the full thread about the contract.”
Read ·
get_gmail_thread_contentReads many conversations at once
Fetches up to 25 threads in one call.
Try: “Summarize these three threads.”
Read ·
get_gmail_threads_content_batchDownloads an email attachment
Saves an attachment to your disk and gives back the file path in local mode.
Try: “Download the PDF attached to that email.”
Files ·
get_gmail_attachment_contentSends an email
Sends a new email, a reply or a forward from your account, with optional attachments and a send-as alias.
Try: “Reply to Sam saying I can meet Tuesday.”
Write ·
send_gmail_messageSaves an email as a draft
Creates a draft of a new email, reply or forward without sending it.
Try: “Draft a reply to the vendor, do not send it.”
Write ·
draft_gmail_messageLists your Gmail labels
Returns all labels in your mailbox.
Try: “What labels do I have?”
Read ·
list_gmail_labelsCreates, renames or deletes a label
Creates, updates or deletes a Gmail label.
Try: “Create a label called Receipts.”
Delete ·
manage_gmail_labelLists your Gmail filters
Returns the filters set up in your mailbox.
Try: “What filters do I have?”
Read ·
list_gmail_filtersCreates, changes or deletes a filter
Creates or deletes a filter, updates one by recreating it, and can apply a filter to mail already in the inbox.
Try: “Make a filter that labels mail from billing@ as Receipts.”
Delete ·
manage_gmail_filterAdds or removes labels on one email
Changes labels on a message. Removing the inbox label archives it and adding the trash label deletes it.
Try: “Archive that email.”
Delete ·
modify_gmail_message_labelsChanges labels on many emails
Applies the same label changes to a list of message IDs, or to whole conversations by thread ID.
Try: “Archive all newsletters from last month.”
Delete ·
batch_modify_gmail_message_labelsFinds files and folders in Drive
Searches your Drive, including shared drives, by query.
Try: “Find the Q3 budget spreadsheet.”
Read ·
search_drive_filesLists what is in a folder or shared drive
Lists files and folders in a folder, a shared drive, or your drive.
Try: “What is in the Projects folder?”
Read ·
list_drive_itemsReads a Drive file as text
Returns the text of a file. Docs, Sheets and Slides are exported to text or CSV.
Try: “Read the meeting notes file.”
Read ·
get_drive_file_contentDownloads a Drive file to your disk
Saves a file to local disk and returns the path in local mode.
Try: “Download the contract PDF.”
Files ·
get_drive_file_download_urlCreates a Drive folder
Makes a folder in your drive or a shared drive.
Try: “Create a folder called 2026 Taxes.”
Write ·
create_drive_folderCreates a Drive file
Creates a file from text, base64 content or a URL, in your drive or a shared drive.
Try: “Save these notes as a file in Drive.”
Write ·
create_drive_fileChanges a Drive file
Updates a file's metadata, properties or content.
Try: “Rename that file to Final.”
Write ·
update_drive_fileCopies a Drive file
Makes a copy of a file, with an optional new name and place, such as from a template.
Try: “Copy the invoice template for Acme.”
Write ·
copy_drive_fileTurns a file into a Google Doc
Converts a Markdown, Word, text, HTML, RTF or ODT file into a Google Doc.
Try: “Import this notes.md as a Google Doc.”
Write ·
import_to_google_docTurns a file into Google Slides
Converts a PowerPoint or ODP file into a Google Slides deck.
Try: “Import deck.pptx into Slides.”
Write ·
import_to_google_slidesTurns a file into a Google Sheet
Converts an Excel, ODS, CSV or TSV file into a Google Sheet.
Try: “Import sales.csv as a Sheet.”
Write ·
import_to_google_sheetsShows who can open a file
Returns a file's sharing, owner, parent folders and timestamps.
Try: “Who has access to the budget file?”
Read ·
get_drive_file_permissionsChecks whether a file is public
Looks a file up by name and tells you if link sharing is on.
Try: “Is the pitch deck publicly shared?”
Read ·
check_drive_file_public_accessGets a file's share link
Returns the link for a file or folder together with its current sharing status.
Try: “Give me the link to the budget file.”
Read ·
get_drive_shareable_linkShares or unshares files
Grants, updates or revokes access on files and folders, for one person or many at once, and can transfer ownership.
Try: “Share the plan with jo@example.com as a viewer.”
Delete ·
manage_drive_accessTurns link sharing on or off
Changes file-level sharing settings, such as who can open a file with the link.
Try: “Make that file link-shareable to anyone in my company.”
Write ·
set_drive_file_permissionsLists your calendars
Returns the calendars you can reach.
Try: “Which calendars do I have?”
Read ·
list_calendarsShows calendar events
Gets one event by ID or the events in a time range.
Try: “What is on my calendar tomorrow?”
Read ·
get_eventsCreates, edits or deletes events
Creates, updates, deletes and replies to calendar events.
Try: “Book a call with Sam on Friday at 3pm.”
Delete ·
manage_eventSets out-of-office time
Creates and manages out-of-office events that auto-decline invitations.
Try: “Mark me out of office next Monday.”
Delete ·
manage_out_of_officeBlocks focus time
Creates and manages focus-time events that auto-decline invitations.
Try: “Block two hours of focus time every morning.”
Delete ·
manage_focus_timeChecks when people are free
Returns busy and free times for a set of calendars.
Try: “When are Sam and I both free on Thursday?”
Read ·
query_freebusyCreates a new calendar
Adds an extra calendar to the account, separate from the primary one.
Try: “Create a calendar called Team Offsites.”
Write ·
create_calendarFinds Google Docs by name
Searches Drive for documents by name.
Try: “Find the onboarding doc.”
Read ·
search_docsReads a document as text
Returns the plain text of a Google Doc, or of an Office file stored in Drive.
Try: “Read the project brief.”
Read ·
get_doc_contentReads a document as Markdown
Returns a Doc with its structure kept, such as headings and lists, and can include comments.
Try: “Show the brief as Markdown with comments.”
Read ·
get_doc_as_markdownLists Docs in a folder
Returns the Google Docs inside one Drive folder.
Try: “List the docs in the Specs folder.”
Read ·
list_docs_in_folderCreates a new Google Doc
Makes a document and can fill it with starting text. Markdown is inserted as plain text.
Try: “Create a doc with today's meeting notes.”
Write ·
create_docEdits text in a document
Inserts or replaces text and applies formatting in a document in one step.
Try: “Add a summary paragraph to the end of the doc.”
Write ·
modify_doc_textReplaces text across a document
Finds and replaces text throughout a Doc without working out positions.
Try: “Replace Acme with Apex everywhere.”
Write ·
find_and_replace_docAdds tables, lists or page breaks
Inserts structural elements into a document.
Try: “Add a page break before the appendix.”
Write ·
insert_doc_elementsAdds an image to a document
Places a picture in a Doc, taking it from a Drive file or a web address.
Try: “Put our logo at the top of the doc.”
Write ·
insert_doc_imageSets headers and footers
Creates or updates the header and footer text of a document.
Try: “Set the footer to Confidential.”
Write ·
update_doc_headers_footersRuns several low-level edits at once
Applies multiple document operations together as one batch.
Try: “Apply these edits in one step.”
Delete ·
batch_update_docShows how a document is laid out
Returns the document structure and safe insertion points, used before precise edits.
Try: “Where can I insert a table in this doc?”
Read ·
inspect_doc_structureCreates a filled table in a document
Creates a table and fills it with data in one operation, after the structure has been inspected.
Try: “Add a table of these quarterly numbers.”
Write ·
create_table_with_dataDiagnoses table problems in a document
Shows detailed table structure to help work out why a table edit failed.
Try: “Why did the table edit fail?”
Read ·
debug_table_structureSaves a document as a PDF in Drive
Exports a Doc to PDF and stores the PDF in Drive.
Try: “Export the proposal as a PDF.”
Write ·
export_doc_to_pdfSets headings, lists and paragraph style
Applies heading styles, list formatting and paragraph formatting to a range of a document.
Try: “Make the first line a Heading 1.”
Write ·
update_paragraph_styleCreates, renames or deletes document tabs
Manages tabs inside a document, and can fill a tab from Markdown.
Try: “Add a tab called Notes.”
Delete ·
manage_doc_tabLists your spreadsheets
Returns the spreadsheets you can reach in Drive.
Try: “List my spreadsheets.”
Read ·
list_spreadsheetsShows a spreadsheet and its tabs
Returns details about a spreadsheet, including its sheets.
Try: “What tabs does the budget sheet have?”
Read ·
get_spreadsheet_infoReads cells from a sheet
Returns the values in a range, one line per row with the row number first.
Try: “Read A1 to D20 of the Sales tab.”
Read ·
read_sheet_valuesWrites, updates or clears cells
Writes, changes or clears values in a range, and can add smart chips.
Try: “Put totals in column E.”
Delete ·
modify_sheet_valuesFormats cells
Applies colors, number formats, alignment, borders, merges and dropdown lists to a range.
Try: “Bold the header row and add a dropdown to column C.”
Write ·
format_sheet_rangeManages conditional formatting rules
Adds, updates and deletes conditional formatting rules on a sheet.
Try: “Highlight cells above 100 in red.”
Delete ·
manage_conditional_formattingCreates a new spreadsheet
Creates a spreadsheet with the title you give, optionally with named tabs and in a chosen folder.
Try: “Create a sheet for expenses.”
Write ·
create_spreadsheetAdds or duplicates a tab
Creates a new tab or duplicates an existing one in a spreadsheet.
Try: “Add a tab called March.”
Write ·
create_sheetLists tables in a spreadsheet
Returns the structured tables with their IDs, names, ranges and columns.
Try: “What tables are in this sheet?”
Read ·
list_sheet_tablesAdds rows to a table
Appends rows to the end of a structured table.
Try: “Add this row to the Orders table.”
Write ·
append_table_rowsRenames, hides, reorders or deletes a tab
Changes an existing tab, including renaming, deleting, hiding, reordering and styling it.
Try: “Hide the Raw tab.”
Delete ·
manage_sheet_tabResizes, freezes, hides or inserts rows and columns
Controls sheet layout, including column widths, frozen rows, hidden rows and inserting or deleting rows and columns.
Try: “Freeze the top row.”
Delete ·
resize_sheet_dimensionsMoves rows to another tab
Moves rows from one tab to another in the same spreadsheet in one batch.
Try: “Move completed rows to the Archive tab.”
Delete ·
move_sheet_rowsLists, creates, edits or deletes named ranges
Handles named ranges in a sheet.
Try: “Name A1:A100 as Customers.”
Delete ·
manage_named_rangeCreates a new presentation
Makes a new Google Slides deck.
Try: “Create a deck called Q4 review.”
Write ·
create_presentationShows a presentation
Returns details of a deck and its slides.
Try: “What slides are in the Q4 deck?”
Read ·
get_presentationShows one slide
Returns details of a single slide.
Try: “Show slide 3.”
Read ·
get_pageRuns several edits on a presentation
Applies multiple changes, such as adding or removing slides and shapes, in one batch.
Try: “Add a title slide and delete slide 5.”
Delete ·
batch_update_presentationShows a slide as an image
Renders a slide or notes page as an image so you can look at its layout.
Try: “Show me what slide 2 looks like.”
Read ·
render_page_to_imageCreates a Google Form
Makes a new form with the title you give.
Try: “Create a feedback form.”
Write ·
create_formShows a form
Returns a form and its questions.
Try: “Show me the feedback form.”
Read ·
get_formChanges a form's publish settings
Updates whether a form is published and accepts responses.
Try: “Close the feedback form.”
Write ·
set_publish_settingsLists form responses
Returns the responses to a form.
Try: “Show responses to the survey.”
Read ·
list_form_responsesShows one form response
Returns a single response.
Try: “Show response 12.”
Read ·
get_form_responseAdds, edits or deletes form items
Applies several changes to a form, including adding, changing and deleting questions.
Try: “Add a rating question to the form.”
Delete ·
batch_update_formLists your Chat spaces
Returns the rooms and direct messages you can reach.
Try: “Which Chat spaces am I in?”
Read ·
list_spacesReads messages in a Chat space
Returns messages from one space.
Try: “Show recent messages in the Eng space.”
Read ·
get_messagesSearches Chat messages
Finds messages by text and time range.
Try: “Find messages about the outage.”
Read ·
search_messagesPosts or edits a Chat message
Posts a message in a Google Chat space, or edits one this account posted earlier.
Try: “Post the release notes in the Eng space.”
Write ·
send_messageAdds an emoji reaction
Reacts to a Chat message with an emoji.
Try: “React with a thumbs up to that message.”
Write ·
create_reactionDownloads a Chat attachment
Saves a message attachment to your disk.
Try: “Download the file Sam posted.”
Files ·
download_chat_attachmentLists your contacts
Returns your contacts, with a full or incremental sync option.
Try: “List my contacts.”
Read ·
list_contactsShows one contact
Returns the details of a contact.
Try: “Show Sam's contact.”
Read ·
get_contactFinds contacts
Finds contacts whose name, email address, phone number or similar fields match your text.
Try: “Find the contact with number 555-0100.”
Read ·
search_contactsCreates, edits or deletes a contact
Creates, updates or deletes one contact.
Try: “Add Sam Lee, sam@example.com.”
Delete ·
manage_contactCreates, edits or deletes many contacts
Applies create, update or delete to a batch of contacts.
Try: “Delete these ten duplicate contacts.”
Delete ·
manage_contacts_batchLists contact groups
Returns your contact labels.
Try: “What contact groups do I have?”
Read ·
list_contact_groupsShows a contact group
Returns a group and its members.
Try: “Who is in the Family group?”
Read ·
get_contact_groupManages contact groups
Creates, renames and deletes groups, and changes their members.
Try: “Create a group called Clients.”
Delete ·
manage_contact_groupLists your task lists
Returns your Google Tasks lists.
Try: “What task lists do I have?”
Read ·
list_task_listsShows one task list
Returns details of a list.
Try: “Show my Work list.”
Read ·
get_task_listCreates, edits or deletes task lists
Creates, renames and deletes lists, and clears completed tasks.
Try: “Clear completed tasks from Work.”
Delete ·
manage_task_listLists tasks in a list
Returns the tasks in one list.
Try: “What is on my Work list?”
Read ·
list_tasksShows one task
Returns the details of a task.
Try: “Show task 3.”
Read ·
get_taskCreates, edits, moves or deletes tasks
Creates, updates, deletes and moves tasks within lists.
Try: “Add a task: send invoice by Friday.”
Delete ·
manage_taskSearches the web with your Programmable Search Engine
Runs a search through the Google Custom Search API with your search engine.
Try: “Search our docs site for password reset.”
Network ·
search_customShows your search engine's settings
Looks up one Programmable Search Engine by its ID and returns its configuration details.
Try: “Describe my search engine.”
Read ·
get_search_engine_infoStarts Google sign-in
Starts the Google OAuth sign-in so the server can act for your account.
Try: “Sign me in to Google.”
Network ·
start_google_authReads an Apps Script project
Fetches an Apps Script project and the code in each of its files.
Try: “Show the code in my Sheets automation script.”
Read ·
get_script_projectEdits Apps Script source files
Replaces the stored source files of an Apps Script project with the files you pass in.
Try: “Fix the typo in Code.gs.”
Write ·
manage_script_contentRuns a function in a deployed script
Runs a function in a deployed Apps Script. The function runs with whatever the script is allowed to do.
Try: “Run the nightly cleanup function.”
Runs code ·
run_script_functionCreates, updates or deletes deployments
Handles Apps Script deployments.
Try: “Deploy the latest version.”
Delete ·
manage_deploymentLists a script's deployments
Returns the deployments of a project.
Try: “What deployments does the script have?”
Read ·
list_script_deploymentsCreates or deletes a script project
Creates a new Apps Script project or deletes one.
Try: “Create a new script project.”
Delete ·
manage_script_projectSaves a version of a script
Freezes the current code of an Apps Script project as a numbered version that can no longer change.
Try: “Save a version of the script.”
Write ·
manage_script_versionLists or shows script versions
Lists the saved versions of a project or retrieves one.
Try: “Show the saved versions.”
Read ·
get_script_versionShows how a script has been running
Returns recent runs or summary metrics for scripts.
Try: “Did my script fail recently?”
Read ·
get_script_activityWrites code to set up a trigger
Returns code to paste into the Apps Script editor that sets up a trigger. It does not create the trigger itself.
Try: “Write code to run this daily.”
Read ·
generate_trigger_codeLists or deletes script triggers
Lists the current user's installable triggers on a project, or deletes them.
Try: “Delete the old daily trigger.”
Delete ·
manage_script_trigger
Read from the source code
Permissions
high risk · 5 things to watch
High risk
With all tools on, which is the default, it can send email, share and delete files, and edit or delete calendar events and documents. Turn on read-only mode, or load only the services you need.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can send email and delete things
By default all 113 tools load, including sending mail, trashing mail, deleting files and events, and changing sharing. Read-only mode removes the tools that need write scopes. The core tier does not: it still includes send_gmail_message and send_message. Keep approval prompts on. github.com
It can write, deploy and run Apps Script code
The script tools can edit a project, deploy it and run its functions, which execute inside Google with whatever the script is allowed to do. run_script_function and manage_script_content are in the core tier, so a tier alone does not remove them. Disable them with --disabled-tools or use read-only mode if you do not need them. github.com
It can share your files
Drive tools can grant, change and remove access, and turn link sharing on. Check who a file is shared with before approving. github.com
Downloads are saved to your disk
Attachment and file download tools write files locally. Check the files before opening them. github.com
HTTP mode is for trusted networks
Streamable HTTP mode without OAuth 2.1 binds to 127.0.0.1 unless WORKSPACE_MCP_HOST is set, and has no MCP-level login. With MCP_ENABLE_OAUTH21=true the default host is 0.0.0.0, so firewall it or set the host. Use OAuth 2.1 for any remote deployment. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Add --read-only, or set WORKSPACE_MCP_READ_ONLY=true. It requests only read-only Google scopes and disables tools that need write access. It cannot be combined with --permissions. |
|---|---|
| Talks to | Google APIs |
| Sign-in and keys | You supply the OAuth client ID and secret as environment variables. Sign-in tokens are kept by the server, and a stateless mode avoids disk writes. |
| Scopes |
|
Questions
Is this the official Google Workspace server?
No. It is a community project by Taylor Wilsdon and is not made by Google. It uses your own Google Cloud OAuth client.
What credentials do I need?
An OAuth client ID and secret from a Google Cloud project you control, with the Google APIs turned on for the services you use. Put them in the two settings shown in the install box, then sign in with your Google account when asked.
Can it run read-only?
Yes. Add --read-only or set WORKSPACE_MCP_READ_ONLY to true. It requests only read-only Google scopes and turns off tools that need write access.
What are the tool tiers?
Three: core, extended and complete. Core is the essential set, extended adds management operations, and complete loads everything. Core still includes sending Gmail and Chat messages and running Apps Script. With no tier set, all 113 tools load. A tier can be combined with a service list such as gmail, drive and calendar.
How is it different from the other Google Workspace server?
Another community server, aaronsb/google-workspace-mcp, also covers Gmail, Calendar and Drive but is a separate project published on npm. This one is the Python package workspace-mcp with 113 tools, tool tiers, read-only mode and Chat, Apps Script and Search support.
Does it work with Google Chat?
Yes, with a Workspace account. The README says Chat needs a one-time Chat app setup, covered in the project's FAQ.
Does my data go anywhere besides Google?
The README says no. By default the server sends no data except to Google's APIs, with no usage reporting or analytics. Optional OpenTelemetry output is for your own use.
Which clients does it work in?
Any client that runs a local server, such as Claude Code, Claude Desktop and Cursor. The README recommends the HTTP mode with a Connector for Claude on web and mobile.
Why 113 tools when the README says 120+?
The published 2.3.0 package registers 113 tools; the README count is a round figure for the whole project. This page lists the 113 from the released package.
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
workspace-mcp- Registry
- PyPI
- Transport
- stdio, Streamable HTTP
- Auth
- OAuth
- Version
- 2.3.0
- License
- MIT
- Last commit
- Oct 30, 2026
- Open issues
- 42
- Listed in
- Official MCP registry
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- README.md · github.com
- https://pypi.org/project/workspace-mcp/ · pypi.org