google-workspace-mcpBLOCK
The Ultimate Google Docs, Sheets & Drive MCP Server. Google Docs MCP is an MCP server (primarily for use in Claude Desktop) that gains full access to your google docs, etc. and allows claude to make direct edits and formatting.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Connect Claude Desktop (or other MCP clients) to your entire Google Workspace: Docs, Sheets, Drive, Gmail, Calendar, Slides, and Forms!
🔥 Check out 15 powerful tasks you can accomplish with this enhanced server! 📧 NEW: Full Gmail support with safe draft-based email workflow 📅 NEW: Google Calendar integration (events, calendars, CRUD) 📽️ NEW: Google Slides support (presentations, slides, text) 📝 NEW: Google Forms support (create forms, questions, responses) 👥 NEW: Multi-account support (connect multiple Google accounts) 🔧 NEW: CLI for easy setup and account management
This comprehensive server uses the Model Context Protocol (MCP) and the fastmcp library to provide 95+ tools for reading, writing, formatting, and managing your entire Google Workspace. It acts as a powerful bridge, allowing AI assistants like Claude to interact with your documents, emails, calendars, and files programmatically.
Upgrading from [a-bonus/google-docs-mcp](https://github.com/a-bonus/google-docs-mcp)? See UPGRADE.md for migration instructions.
Features:
Document Access & Editing
- Read Documents: Read content with
readGoogleDoc(plain text, JSON structure, or markdown) - Append to Documents: Add text to documents with
appendToGoogleDoc - Insert Text: Place text at specific positions with
insertText - Delete Content: Remove content from a document with
deleteRange - Tab Support: Work with multi-tab documents using
listDocumentTabsand optionaltabIdparameter in read/write operations
Formatting & Styling
- Text Formatting: Apply rich styling with
applyTextStyle(bold, italic, colors, etc.) - Paragraph Formatting: Control paragraph layout with
applyParagraphStyle(alignment, spacing, etc.) - Find & Format: Format by text content using
formatMatchingText(legacy support)
Document Structure
- Tables: Cr
346fe3e5fb7aOBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add google-workspace-mcp -- npx -y [email protected]
{
"mcpServers": {
"google-workspace-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
]
}
}
}Exposed tools (122)
90 read · 23 write · 9 destructive. Blast radius: 9 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
addAttachmentToDraft | write | Add an attachment to an existing Gmail draft. The attachment is added to the draft without modifying other content. |
addComment | read | Adds a comment anchored to a specific text range in the document. NOTE: Due to Google API limitations, comments created programmatically appear in the |
addExcelSheet | read | Adds a new sheet/tab to an Excel-format file (.xlsx or .xls) on Google Drive. |
addFormQuestion | write | Add a question to a Google Form. Question types must be lowercase: |
addSlide | write | Add a new slide to a presentation. |
addSpreadsheetSheet | read | Adds a new sheet/tab to an existing Google Spreadsheet. |
addTextToSlide | write | Add a text box with content to a slide. |
appendExcelRows | read | Appends rows to an Excel-format file (.xlsx or .xls) on Google Drive. Similar to appendSpreadsheetRows but preserves Excel format. |
appendSpreadsheetRows | read | Appends rows of data to the end of a sheet in a Google Spreadsheet. |
appendToGoogleDoc | read | Appends text to the very end of a specific Google Document or tab. |
batchAddGmailLabels | write | Add labels to multiple Gmail messages at once. More efficient than adding labels one by one. |
batchGetPeopleContacts | read | Get detailed information for multiple contacts at once by their resource names. |
batchRemoveGmailLabels | destructive | Remove labels from multiple Gmail messages at once. More efficient than removing labels one by one. Use to bulk archive (remove INBOX), bulk mark as read (remove UNREAD), etc. |
clearExcelRange | read | Clears values from a range in an Excel-format file (.xlsx or .xls) on Google Drive. Similar to clearSpreadsheetRange but preserves Excel format. |
clearSpreadsheetRange | read | Clears all values from a specific range in a Google Spreadsheet. |
convertExcelToSheets | read | Converts an Excel-format file (.xlsx or .xls) on Google Drive to native Google Sheets format for full Sheets API support. Creates a copy; the original is preserved. |
copyFile | read | Creates a copy of a Google Drive file or document. |
createCalendarEvent | write | Create a new calendar event. |
createDocument | read | Creates a new Google Document. |
createFolder | read | Creates a new folder in Google Drive. |
createForm | write | Create a new Google Form. |
createFromTemplate | read | Creates a new Google Document from an existing document template. |
createGmailDraft | write | Create a draft email in Gmail. Supports threading by providing replyToMessageId to create a draft reply. Supports attachments by providing base64-encoded file data. |
createGmailFilter | write | Create a Gmail filter to automatically process incoming messages. Filters can add/remove labels, forward messages, or archive them. |
createGmailLabel | write | Create a new Gmail label (folder). Labels can be used to organize emails. After creating a label, use addGmailLabel to apply it to messages. |
createPeopleContact | write | Create a new contact with the specified fields. |
createPeopleContactGroup | write | Create a new contact group (label). |
createPresentation | write | Create a new Google Slides presentation. |
createSpreadsheet | read | Creates a new Google Spreadsheet. |
deleteCalendarEvent | destructive | Delete a calendar event. |
deleteComment | read | Deletes a comment from the document. |
deleteExcelSheet | read | Deletes a sheet/tab from an Excel-format file (.xlsx or .xls) on Google Drive. Cannot delete the last sheet. |
deleteFile | read | Moves a file or folder to trash in Google Drive. Files can be restored from trash within 30 days. |
deleteGmailDraft | destructive | Permanently delete a Gmail draft. This action cannot be undone. |
deleteGmailFilter | destructive | Delete a Gmail filter by its ID. |
deleteGmailMessage | write | Move a Gmail message to trash. Messages in trash are automatically deleted after 30 days. |
deletePeopleContactGroup | destructive | Delete a contact group. Contacts in the group are not deleted. |
deletePeopleContactPhoto | destructive | Remove a contact |
deleteRange | write | Deletes content within a specified range (start index inclusive, end index exclusive) from the document or a specific tab. |
deleteSpreadsheetSheet | destructive | Deletes a sheet/tab from an existing Google Spreadsheet. Cannot delete the last sheet. |
downloadFromDrive | read | Downloads a file from Google Drive to your local filesystem. For Google Docs/Sheets/Slides, exports to a specified format. |
downloadGmailAttachment | read | Download a Gmail attachment with full data. Returns complete base64-encoded data, or saves directly to a file if savePath is provided. Use this instead of getGmailAttachment when you need the full attachment content. |
downloadSpreadsheet | read | Downloads a Google Spreadsheet as CSV or Excel (XLSX) format and saves it to the local filesystem. CSV exports a single sheet; XLSX exports the entire workbook. |
editGoogleDoc | read | Find and replace text in a Google Document. Similar to Claude Code |
editTableCell | read | Edits the content and/or basic style of a specific table cell. Requires knowing table start index. |
findElement | read | Finds elements (paragraphs, tables, images, lists) in a document. Returns indices and basic info about matching elements. |
fixListFormatting | read | EXPERIMENTAL: Attempts to detect paragraphs that look like lists (e.g., starting with -, *, 1.) and convert them to proper Google Docs bulleted or numbered lists. Best used on specific sections. |
formatMatchingText | read | Finds specific text within a Google Document and applies character formatting (bold, italics, color, etc.) to the specified instance. |
getCalendarEvent | read | Get details of a specific calendar event. |
getComment | read | Gets a specific comment with its full thread of replies. |
getDocumentInfo | read | Gets detailed information about a specific Google Document. |
getExcelInfo | read | Gets detailed information about an Excel-format file (.xlsx or .xls) on Google Drive, including all sheets and their dimensions. |
getFolderInfo | read | Gets detailed information about a specific folder in Google Drive. |
getFormResponses | read | Get responses submitted to a Google Form. |
getGmailAttachment | read | Get metadata and a preview of a Gmail attachment. Returns truncated base64 data (first 500 chars). For full attachment data or saving to file, use downloadGmailAttachment instead. |
getPeopleContact | read | Get detailed information for a specific contact by resource name. Returns all available fields. |
getPeopleContactGroup | read | Get details of a specific contact group, including its members. |
getRecentGoogleDocs | read | Gets the most recently modified Google Documents. |
getShareableLink | read | Gets or creates a shareable link for a file with specified permission settings. |
getSpreadsheetInfo | read | Gets detailed information about a Google Spreadsheet including all sheets/tabs. |
insertImageFromUrl | read | Inserts an inline image into a Google Document from a publicly accessible URL. |
insertLocalImage | read | Uploads a local image file to Google Drive and inserts it into a Google Document. The image will be uploaded to the same folder as the document (or optionally to a specified folder). |
insertPageBreak | read | Inserts a page break at the specified index. |
insertTable | read | Inserts a new table with the specified dimensions at a given index. |
insertText | read | Inserts text at a specific index within the document body or a specific tab. |
listAccounts | read | Lists all configured Google accounts that can be used with this MCP server. |
listCalendarEvents | read | List events from a calendar within a time range. |
listCalendars | read | List all calendars accessible by the account. |
listComments | read | Lists all comments in a Google Document. |
listDocumentTabs | read | Lists all tabs in a Google Document, including their hierarchy, IDs, and structure. |
listExcelFiles | read | Lists Excel-format files (.xlsx and .xls) in your Google Drive. Use this to find spreadsheets stored in Excel format rather than native Google Sheets. |
listExcelSheets | read | Lists all sheet/tab names in an Excel-format file (.xlsx or .xls) stored on Google Drive. Use this for spreadsheets that need to stay in Excel format. |
listFolderContents | read | Lists the contents of a specific folder in Google Drive. |
listForms | read | List Google Forms in Drive with optional search. |
listGmailDrafts | read | List all draft emails in Gmail. |
listGmailFilters | read | List all Gmail filters (rules that automatically process incoming messages based on criteria). |
listGmailLabels | read | List all Gmail labels (folders) for the account. |
listGmailMessages | read | List email messages from Gmail inbox or other labels. Returns message IDs and snippets. |
listGmailThreads | read | List email threads (conversations) from Gmail. Each thread contains all messages in a conversation. |
listGoogleDocs | read | Lists Google Documents from your Google Drive with optional filtering. |
listGoogleSheets | read | Lists Google Spreadsheets from your Google Drive with optional filtering. |
listPeopleContactGroups | read | List all contact groups (labels) for the user. |
listPeopleContacts | read | List contacts from the user |
listPeopleDirectory | read | List people in the organization directory. Only works for Google Workspace accounts, not personal Gmail accounts. |
listPeopleOtherContacts | read | List |
listPresentations | read | List Google Slides presentations in Drive with optional search. |
listRecentFiles | read | Lists recently modified files across all of Google Drive, not limited to a specific type. |
markAsRead | read | Mark a Gmail message as read by removing the UNREAD label. |
markAsUnread | read | Mark a Gmail message as unread by adding the UNREAD label. |
modifyPeopleContactGroupMembers | destructive | Add or remove contacts from a contact group. |
moveFile | read | Moves a file or folder to a different location in Google Drive. |
readExcelFile | read | Reads data from a specific range in an Excel-format file (.xlsx or .xls) on Google Drive. Similar to readSpreadsheet but for files that need to stay in Excel format. |
readForm | read | Read the structure and questions of a Google Form. |
readGmailDraft | read | Read the full content of a Gmail draft by its draft ID. |
readGmailMessage | read | Read a specific Gmail message by ID. Returns full message content including headers, body, and attachments info. |
readGmailThread | read | Read a complete Gmail thread (conversation) including all messages. Returns full content of all messages in the thread. |
readGoogleDoc | read | Reads the content of a specific Google Document, optionally returning structured data. |
readPresentation | read | Read the content and structure of a Google Slides presentation. |
readSpreadsheet | read | Reads data from a specific range in a Google Spreadsheet. |
removeAccount | read | Removes a Google account from the MCP server. This deletes the stored credentials for the account. |
removeAttachmentFromDraft | destructive | Remove an attachment from an existing Gmail draft by filename. The attachment is removed without modifying other content. |
renameExcelSheet | read | Renames a sheet/tab in an Excel-format file (.xlsx or .xls) on Google Drive. |
renameFile | read | Renames a file or folder in Google Drive. |
replyToComment | read | Adds a reply to an existing comment. |
saveAttachmentToDrive | write | Save a Gmail attachment directly to Google Drive. Uploads the attachment as a file to Drive without downloading locally first. |
searchCalendarEvents | read | Search for calendar events by text query. Searches event summary, description, location, and attendee names/emails. |
searchDrive | read | Searches across all files in Google Drive by name, content, or type. More powerful than type-specific search tools. |
searchGmail | read | Search Gmail using Gmail search syntax. Returns matching messages with snippets. |
searchGoogleDocs | read | Searches for Google Documents by name, content, or other criteria. |
searchPeopleContacts | read | Search contacts by name, email, phone number, or other fields. Returns matching contacts with basic info. |
searchPeopleDirectory | read | Search the organization directory by name, email, or other fields. Only works for Google Workspace accounts. |
searchPeopleOtherContacts | read | Search |
sendGmailDraft | write | Send an existing Gmail draft. The draft will be sent and removed from drafts. |
updateCalendarEvent | write | Update an existing calendar event. |
updateGmailDraft | write | Update an existing Gmail draft. You can update any combination of to, cc, bcc, subject, body, or attachments. Fields not provided will keep their current values (except attachments which replace existing ones if provided). |
updatePeopleContact | write | Update an existing contact. Fields provided will replace existing values. Omitted fields remain unchanged. |
updatePeopleContactGroup | write | Rename an existing contact group. |
updatePeopleContactPhoto | write | Upload or update a contact |
uploadFileToDrive | write | Uploads a local file to Google Drive. Supports any file type. Use this to upload documents, images, PDFs, or any other files. |
writeExcelCell | read | Writes a value to a specific cell in an Excel-format file (.xlsx or .xls) on Google Drive. Use when the file must remain in Excel format. |
writeExcelRange | read | Writes data to a range in an Excel-format file (.xlsx or .xls) on Google Drive. Similar to writeSpreadsheet but preserves Excel format. |
writeSpreadsheet | read | Writes data to a specific range in a Google Spreadsheet. Overwrites existing data in the range. |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (7 observation(s))
- Network
- none-observed
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (16)
exec(command, (error) => {'**/.ssh/**',
'**/.gnupg/**',
'**/.aws/**',
'**/.kube/**',
'**/.git-credentials',
console.log(` ❌ ${service.name}: Token expired or revoked`);'/etc/**',
batchRemoveGmailLabels, deleteCalendarEvent, deleteGmailDraft, deleteGmailFilter, deletePeopleContactGroup, deletePeopleContactPhoto, deleteSpreadsheetSheet, modifyPeopleContactGroupMembers, removeAtt
.prettierrc.cjs
.release-please-manifest.json
import { initializeAccounts, getAccountClients } from '../../src/accounts.js';commander, fastmcp, google-auth-library, googleapis, mime-types, xlsx, zod, @commitlint/cli
- `https://www.googleapis.com/auth/contacts` (full access to contacts)
- `https://www.googleapis.com/auth/drive` (Google Drive - full access)
If you have the [Google Cloud CLI](https://cloud.google.com/sdk/docs/install) installed, run these commands:
Gates applied: no_behavioural_pass.
346fe3e5fb7afull audit observations/trust-audit/mcp-server/pm990320__google-workspace-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | 346fe3e5fb7a | BLOCK | D | 69 | first audit |
Questions
What is the google-workspace-mcp MCP server?
The Ultimate Google Docs, Sheets & Drive MCP Server. Google Docs MCP is an MCP server (primarily for use in Claude Desktop) that gains full access to your google docs, etc. and allows claude to make direct edits and formatting.
What tools does google-workspace-mcp expose?
122 in total: 90 read-only, 23 that write, and 9 that can delete or overwrite (batchRemoveGmailLabels, deleteCalendarEvent, deleteGmailDraft, deleteGmailFilter, deletePeopleContactGroup). Every one is listed on this page with its risk.
Is google-workspace-mcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 9 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does google-workspace-mcp need?
No credential environment variables were found in its source, so it appears to need none.
How current is this page?
The grade is for one exact copy of the source (346fe3e5fb7a), read on 2026-10-12. The repository is watched and re-audited when it changes.