The power editor for Google Workspace automation that goes where the official connector won't. Exposes 98 tools across Drive, Docs, Sheets, Slides, and GWS admin APIs, with deep Sheets operations that preserve formulas, charts, and conditional formatting instead of flattening everything to CSV. Built for shared drive governance and bulk operations: audit external permissions across drives, edit Slides presentations programmatically, run domain-wide delegation for org-scale automation. Supports OAuth, service accounts with DWD, and ADC. Ships with aggregation tools like `audit-shared-drive-permissions` and `summarize-spreadsheet` plus four MCP prompts for cleanup and bulk formatting workflows. Reach for this when you need write access to the full Workspace document model, not just read-only file listings.
Public tool metadata for what this MCP can expose to an agent.
GOOGLEDRIVE_ADD_FILE_SHARING_PREFERENCEModifies sharing permissions for an existing google drive file, granting a specified role to a user, group, domain, or 'anyone'.5 paramsModifies sharing permissions for an existing google drive file, granting a specified role to a user, group, domain, or 'anyone'.
rolestringtypestringdomainstringfile_idstringemail_addressstringGOOGLEDRIVE_COPY_FILEDuplicates an existing file in google drive, identified by its `file id`.2 paramsDuplicates an existing file in google drive, identified by its `file id`.
file_idstringnew_titlestringGOOGLEDRIVE_CREATE_COMMENTTool to create a comment on a file. use when you need to add a new comment to a specific file in google drive.5 paramsTool to create a comment on a file. use when you need to add a new comment to a specific file in google drive.
anchorstringcontentstringfile_idstringquoted_file_content_valuestringquoted_file_content_mime_typestringGOOGLEDRIVE_CREATE_DRIVETool to create a new shared drive. use when you need to programmatically create a new shared drive for collaboration or storage.6 paramsTool to create a new shared drive. use when you need to programmatically create a new shared drive for collaboration or storage.
namestringhiddenbooleanthemeIdstringcolorRgbstringrequestIdstringbackgroundImageFileobjectGOOGLEDRIVE_CREATE_FILECreates a new file or folder with metadata. use to create empty files or folders, or files with content by providing it in the request body (though this action primarily focuses on metadata creation).6 paramsCreates a new file or folder with metadata. use to create empty files or folders, or files with content by providing it in the request body (though this action primarily focuses on metadata creation).
namestringfieldsstringparentsarraystarredbooleanmimeTypestringdescriptionstringGOOGLEDRIVE_CREATE_FILE_FROM_TEXTCreates a new file in google drive from provided text content (up to 10mb), supporting various formats including automatic conversion to google workspace types.4 paramsCreates a new file in google drive from provided text content (up to 10mb), supporting various formats including automatic conversion to google workspace types.
file_namestringmime_typestringparent_idstringtext_contentstringGOOGLEDRIVE_CREATE_FOLDERCreates a new folder in google drive, optionally within a parent folder specified by its id or name; if a parent name is provided but not found, the action will fail.2 paramsCreates a new folder in google drive, optionally within a parent folder specified by its id or name; if a parent name is provided but not found, the action will fail.
parent_idstringfolder_namestringGOOGLEDRIVE_CREATE_REPLYTool to create a reply to a comment in google drive. use when you need to respond to an existing comment on a file.5 paramsTool to create a reply to a comment in google drive. use when you need to respond to an existing comment on a file.
actionstringfieldsstringcontentstringfile_idstringcomment_idstringGOOGLEDRIVE_CREATE_SHORTCUT_TO_FILETool to create a shortcut to a file or folder in google drive. use when you need to link to an existing drive item from another location without duplicating it.8 paramsTool to create a shortcut to a file or folder in google drive. use when you need to link to an existing drive item from another location without duplicating it.
namestringtarget_idstringincludeLabelsstringtarget_mime_typestringsupportsAllDrivesbooleankeepRevisionForeverbooleanignoreDefaultVisibilitybooleanincludePermissionsForViewstringGOOGLEDRIVE_DELETE_COMMENTDeletes a comment from a file. use when you need to remove a specific comment from a google drive file.2 paramsDeletes a comment from a file. use when you need to remove a specific comment from a google drive file.
file_idstringcomment_idstringGOOGLEDRIVE_DELETE_DRIVETool to permanently delete a shared drive. use when you need to remove a shared drive and its contents (if specified).3 paramsTool to permanently delete a shared drive. use when you need to remove a shared drive and its contents (if specified).
driveIdstringallowItemDeletionbooleanuseDomainAdminAccessbooleanGOOGLEDRIVE_DELETE_PERMISSIONDeletes a permission from a file by permission id. use when you need to revoke access for a specific user or group from a file.4 paramsDeletes a permission from a file by permission id. use when you need to revoke access for a specific user or group from a file.
file_idstringpermission_idstringsupportsAllDrivesbooleanuseDomainAdminAccessbooleanGOOGLEDRIVE_DELETE_REPLYTool to delete a specific reply by reply id. use when you need to remove a reply from a comment on a file.3 paramsTool to delete a specific reply by reply id. use when you need to remove a reply from a comment on a file.
file_idstringreply_idstringcomment_idstringGOOGLEDRIVE_DOWNLOAD_FILEDownloads a file from google drive by its id. for google workspace documents (docs, sheets, slides), optionally exports to a specified `mime type`. for other file types, downloads in their native format regardless of mime type.2 paramsDownloads a file from google drive by its id. for google workspace documents (docs, sheets, slides), optionally exports to a specified `mime type`. for other file types, downloads in their native format regardless of mime type.
file_idstringmime_typestringapplication/vnd.openxmlformats-officedocument.wordprocessingml.document · application/vnd.oasis.opendocument.text · application/rtf · application/pdf · text/plain · application/zipGOOGLEDRIVE_EDIT_FILEUpdates an existing google drive file by overwriting its entire content with new text (max 10mb).3 paramsUpdates an existing google drive file by overwriting its entire content with new text (max 10mb).
contentstringfile_idstringmime_typestringGOOGLEDRIVE_EMPTY_TRASHTool to permanently delete all of the user's trashed files. use when you want to empty the trash in google drive.2 paramsTool to permanently delete all of the user's trashed files. use when you want to empty the trash in google drive.
driveIdstringenforceSingleParentbooleanGOOGLEDRIVE_FILES_MODIFY_LABELSModifies the set of labels applied to a file. returns a list of the labels that were added or modified. use when you need to programmatically change labels on a google drive file, such as adding, updating, or removing them.3 paramsModifies the set of labels applied to a file. returns a list of the labels that were added or modified. use when you need to programmatically change labels on a google drive file, such as adding, updating, or removing them.
kindstringfile_idstringlabel_modificationsarrayGOOGLEDRIVE_FIND_FILETool to list or search for files and folders in google drive. use when you need to find specific files based on query criteria or list contents of a drive/folder.10 paramsTool to list or search for files and folders in google drive. use when you need to find specific files based on query criteria or list contents of a drive/folder.
qstringfieldsstringspacesstringcorporastringuser · drive · domain · allDrivesdriveIdstringorderBystringpageSizeintegerpageTokenstringsupportsAllDrivesbooleanincludeItemsFromAllDrivesbooleanGOOGLEDRIVE_FIND_FOLDERTool to find a folder in google drive by its name and optionally a parent folder. use when you need to locate a specific folder to perform further actions like creating files in it or listing its contents.7 paramsTool to find a folder in google drive by its name and optionally a parent folder. use when you need to locate a specific folder to perform further actions like creating files in it or listing its contents.
starredbooleanname_exactstringname_containsstringmodified_afterstringname_not_containsstringfull_text_containsstringfull_text_not_containsstringGOOGLEDRIVE_GENERATE_IDSGenerates a set of file ids which can be provided in create or copy requests. use when you need to pre-allocate ids for new files or copies.3 paramsGenerates a set of file ids which can be provided in create or copy requests. use when you need to pre-allocate ids for new files or copies.
typestringcountintegerspacestringThe Workspace power-editing MCP — formula-aware Sheets, full Slides editing, shared-drive audits the read-only Claude.ai connector deliberately won't ship.
98 tools across Drive, Docs, Sheets, Slides, GWS admin, and aggregations. Service Account + Domain-Wide Delegation for org-scale automation. GWS-aware capability detection — features auto-unlock for Workspace accounts.
list-shared-drives, get-shared-drive, create-shared-drive, list/share/remove permissions, file activity, labels, approvals. Workspace governance surface the connector deliberately doesn't expose.audit-shared-drive-permissions (single Shared-Drive audit) + audit-external-shares (cross-drive / My-Drive audit with top external-domain concentration view), summarize-spreadsheet (metadata + per-tab sample + named ranges), summarize-doc (file + content + permissions + comments).cleanup-shared-with-me, analyze-doc-structure, bulk-format-spreadsheet.capabilities.ts detects account type on startup; GWS-only tools return clear errors for personal accounts instead of mysterious 403s.Connect the server to Claude Desktop or Claude Code, then paste any of these:
us-all.co.kr who have access to anything. Group by drive, sort by access level."amount across every sales-* spreadsheet in my drive: red if <0, yellow if 0–100, green if >100."| Anthropic 1st-party Workspace connector | taylorwilsdon/google_workspace_mcp | xing5/mcp-google-sheets | @us-all/google-drive-mcp (this) | |
|---|---|---|---|---|
| Stars / availability | n/a (Claude.ai built-in, Feb 2026) | 2.3K★ | 836★ | — |
| Scope | Drive read + Sheets-as-CSV read | Gmail+Calendar+Drive+Docs+Sheets+Slides+Forms+Chat+Tasks+Contacts+Apps Script | Sheets only | Drive + Docs + Sheets + Slides + GWS admin |
| Sheets formula editing | ❌ (CSV round-trip loses formulas) | ✅ basic | ✅ specialist | ✅ deep (charts/conditional/named ranges) |
| Slides editing | ❌ | ✅ | ❌ | ✅ deep |
| Shared-drive admin | partial | ✅ | ❌ | ✅ deep |
| Folder operations | ❌ | ✅ | ❌ | ✅ |
| Aggregation tools | ❌ | ❌ | ❌ | ✅ summarize-spreadsheet, summarize-doc, audit-external-shares |
| MCP Prompts | ❌ | ❌ | ❌ | ✅ 4 |
| Auth modes | managed OAuth | OAuth + SA + stateless | SA / OAuth / ADC | OAuth + SA + DWD + ADC |
| Transport | n/a (Claude.ai-only) | stdio + HTTP | stdio | stdio |
Use the 1st-party connector for zero-config Drive read flows in Claude.ai. Use taylorwilsdon if you need the full Workspace surface (Gmail / Calendar / Forms etc.). Use this server for Drive + Docs + Sheets + Slides power-editing, shared-drive governance, and bulk operations the connector can't do.
{
"mcpServers": {
"google-drive": {
"command": "npx",
"args": ["-y", "@us-all/google-drive-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "<your-client-id>",
"GOOGLE_CLIENT_SECRET": "<your-client-secret>",
"GOOGLE_REFRESH_TOKEN": "<your-refresh-token>"
}
}
}
}
claude mcp add google-drive -s user -- npx -y @us-all/google-drive-mcp
(Set env vars separately or in .mcp.json.)
docker run --rm -i --env-file .env ghcr.io/us-all/google-drive-mcp-server
git clone https://github.com/us-all/google-drive-mcp-server.git
cd google-drive-mcp-server && pnpm install && pnpm build
node dist/index.js
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKENGOOGLE_SERVICE_ACCOUNT_KEY_PATH and GOOGLE_IMPERSONATE_USERgcloud auth application-default login --client-id-file=client_secret.json --scopes=... — auto-detected on startup. Windows ADC paths (%APPDATA%\gcloud\) supported.
| Variable | Required | Default | Description |
|---|---|---|---|
GOOGLE_CLIENT_ID | OAuth2 | — | OAuth2 Client ID |
GOOGLE_CLIENT_SECRET | OAuth2 | — | OAuth2 Client Secret |
GOOGLE_REFRESH_TOKEN | OAuth2 | — | OAuth2 Refresh Token |
GOOGLE_SERVICE_ACCOUNT_KEY_PATH | SA | — | Path to service-account JSON key |
GOOGLE_IMPERSONATE_USER | ❌ | — | GWS user email to impersonate (SA only) |
GOOGLE_DRIVE_ALLOW_WRITE | ❌ | false | Set true to enable mutations |
GOOGLE_DRIVE_SCOPES | ❌ | read-only Drive Activity + Docs scopes (or broader Drive/Docs scopes if write enabled) | Comma-sep OAuth scopes override |
GD_TOOLS | ❌ | — | Comma-sep allowlist of categories. Biggest token saver. |
GD_DISABLE | ❌ | — | Comma-sep denylist. Ignored when GD_TOOLS is set. |
MCP_TRANSPORT | ❌ | stdio | http to enable Streamable HTTP transport |
MCP_HTTP_TOKEN | conditional | — | Bearer token. Required when MCP_TRANSPORT=http |
MCP_HTTP_PORT | ❌ | 3000 | HTTP listen port |
MCP_HTTP_HOST | ❌ | 127.0.0.1 | HTTP bind host (DNS rebinding protection auto-enabled for localhost) |
MCP_HTTP_SKIP_AUTH | ❌ | false | Skip Bearer auth — e.g. behind a reverse proxy that handles it |
Categories (7): drive, sheets, docs, slides, shared-drives, labels, approvals. Plus always-on meta.
When MCP_TRANSPORT=http: POST /mcp (Bearer-auth JSON-RPC) + GET /health (public liveness).
| Scenario | Tools | Schema tokens | vs default |
|---|---|---|---|
| default (all categories) | 96 | 18,400 | — |
typical (GD_TOOLS=drive,docs,sheets) | 68 | 13,700 | −25% |
narrow (GD_TOOLS=drive) | 25 | 4,000 | −78% |
extractFields projection on list-files/get-file/sheets-get-spreadsheet/docs-get-document (with tabsCount, rowCount, columnCount, locale, timeZone defaults). list-files slim default trims ~80% (drops capabilities 40-bool object + contentRestrictions).
capabilities.ts detects account type at startup via about.get() + domain check:
| Feature | Personal | GWS Standard+ | GWS Enterprise |
|---|---|---|---|
| File CRUD / Search / Export | ✅ | ✅ | ✅ |
| Docs / Sheets / Slides editing | ✅ | ✅ | ✅ |
| Comments & Revisions | ✅ | ✅ | ✅ |
| Drive Activity | ✅ | ✅ | ✅ |
| Shared Drives | — | ✅ | ✅ |
| Labels (classification) | — | ✅ | ✅ |
| Approvals | — | ✅ | ✅ |
| Domain-Wide Delegation | — | ✅ | ✅ |
GWS-only tools throw GWSFeatureError with a clear message for personal accounts — no mysterious 403s.
Workflow templates available via MCP prompts/list:
audit-shared-drive-permissions — fleet-wide external-share audit; flag access-level outliers.cleanup-shared-with-me — find untouched stale shares + suggest cleanup.analyze-doc-structure — heading hierarchy + link health + alt-text coverage.bulk-format-spreadsheet — apply consistent format across many sheets/tabs.URI-based read-only access:
gdrive://file/{fileId}gdrive://spreadsheet/{spreadsheetId}gdrive://document/{documentId}gdrive://presentation/{presentationId}gdrive://folder/{folderId}gdrive://shared-drive/{driveId} (GWS-gated)gdrive://about/me7 categories. Use search-tools to discover at runtime; full list collapsed below.
| Category | Tools |
|---|---|
| Sheets (data / structure / formatting / advanced) | 30 |
| Drive (files / search / folders / permissions / export / comments / revisions / activity) | 24 |
| Slides (presentation / slide mgmt / content / formatting) | 20 |
| Docs (document / editing / formatting / elements) | 13 |
| GWS-only (shared drives / labels / approvals / audit) | 9 |
Aggregations (summarize-spreadsheet, summarize-doc, audit-external-shares) | 3 |
Meta (search-tools) | 1 |
get-about, list-files, get-file, read-file, create-file, update-file, copy-file, delete-file, search-files, create-folder, move-file, get-folder-tree, list-permissions, share-file, remove-permission, export-file, get-download-link, list-comments, get-comment, create-comment, resolve-comment, list-revisions, get-revision, get-activity
Document: docs-get-document, docs-create-document, docs-get-content, docs-list-tabs
Editing: docs-insert-text, docs-delete-range, docs-replace-text, docs-batch-update
Formatting: docs-format-text, docs-format-paragraph
Elements: docs-insert-table, docs-insert-image, docs-insert-page-break
Data: sheets-get-spreadsheet, sheets-get-values, sheets-batch-get-values, sheets-update-values, sheets-batch-update-values, sheets-append-values, sheets-clear-values, sheets-batch-clear-values, sheets-create-spreadsheet, sheets-manage-sheets
Structure: sheets-insert-dimension, sheets-delete-dimension, sheets-duplicate-sheet, sheets-copy-sheet-to, sheets-copy-paste, sheets-sort-range, sheets-find-replace
Formatting: sheets-format-cells, sheets-update-borders, sheets-merge-cells, sheets-unmerge-cells, sheets-auto-resize, sheets-resize-dimensions
Advanced: sheets-set-data-validation, sheets-add-conditional-format, sheets-add-chart, sheets-delete-chart, sheets-add-protected-range, sheets-delete-protected-range, sheets-manage-named-range
Presentation: slides-get-presentation, slides-create-presentation, slides-duplicate-presentation
Slide management: slides-get-slide, slides-add-slide, slides-delete-slide, slides-move-slide, slides-duplicate-slide
Content: slides-insert-text, slides-replace-text, slides-insert-text-box, slides-insert-image, slides-insert-table, slides-update-table-cell, slides-insert-shape
Formatting: slides-format-text, slides-format-shape, slides-resize-element, slides-set-slide-background, slides-batch-update
list-shared-drives, get-shared-drive, create-shared-drive, audit-shared-drive-permissions, list-file-labels, apply-label, remove-label, list-approvals, get-approval
summarize-spreadsheet, summarize-doc, audit-external-shares
audit-external-shares complements the GWS-only audit-shared-drive-permissions: it runs across all corpora the caller can see (or just My Drive on personal accounts) and adds a top-external-domains concentration view.
search-tools — query other tools by keyword; always enabled.
Claude → MCP stdio → src/index.ts
├── config.ts (OAuth2 / SA / ADC)
├── capabilities.ts (Personal vs GWS detect)
├── client.ts (Google API auth)
└── tools/{files,search,folders,permissions,export,comments,revisions,
about,activity,docs,sheets,slides,shared-drives,labels,approvals,
aggregations}.ts
↓
Drive API v3 / Docs API v1 / Sheets API v4 /
Slides API v1 / Drive Activity API v2 / Drive Labels API v2
Built on @us-all/mcp-toolkit:
extractFields — token-efficient response projectionsaggregate(fetchers, caveats) — fan-out helper for summarize-doccreateWrapToolHandler — Google query-string key=... redaction + WriteBlockedError / GWSFeatureError passthrough + Google API error extractionsearch-tools meta-toolsupportsAllDrives: true is passed to every Drive API call so Shared Drives just work.
Node.js 22+ • TypeScript strict ESM • pnpm • @modelcontextprotocol/sdk • googleapis (Drive v3 / Docs v1 / Sheets v4 / Slides v1 / Activity v2 / Labels v2) • zod • dotenv • vitest.
googleapis SDK has no typed bindings; uses raw fetch with auth header extraction.search-files — auto-wraps plain text in fullText contains '...'; pass Drive query syntax directly for advanced searches.GOOGLE_CLIENT_IDsecretOAuth client ID. Required for OAuth refresh-token auth method.
GOOGLE_CLIENT_SECRETsecretOAuth client secret. Required for OAuth refresh-token auth method.
GOOGLE_REFRESH_TOKENsecretOAuth refresh token. Required for OAuth refresh-token auth method.
GOOGLE_APPLICATION_CREDENTIALSPath to service account JSON key. Required for SA + DWD auth method (alternative to OAuth).
GOOGLE_SERVICE_ACCOUNT_KEY_PATHAlias for GOOGLE_APPLICATION_CREDENTIALS.
GOOGLE_IMPERSONATE_USERWorkspace user email to impersonate (DWD). Required when using service account auth.
GOOGLE_DRIVE_SCOPESComma-separated OAuth scopes. Defaults are read-only; write mode broadens Drive/Docs scopes as needed.
GOOGLE_DRIVE_ALLOW_WRITEdefault: falseSet to 'true' to enable write tools. Default read-only.
GD_TOOLSComma-separated category allowlist. Default: all categories enabled.
GD_DISABLEComma-separated category disablelist.
csoai-org/pdf-document-mcp
xt765/mcp-document-converter
io.github.xjtlumedia/markdown-formatter
io.github.ai-aviate/better-notion
suekou/mcp-notion-server
meterlong/mcp-doc