io.github.us-all/google-drive
Google Drive + Workspace MCP β Docs, Sheets, Slides, Shared Drives, Labels, Approvals, DWD
Ask AI about io.github.us-all/google-drive
Powered by Claude Β· Grounded in docs
I know everything about io.github.us-all/google-drive. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Google Drive MCP Server
The Workspace power-editing MCP β formula-aware Sheets, full Slides editing, shared-drive audits the read-only Claude.ai connector deliberately won't ship.
96 tools across Drive (24) + Docs (13) + Sheets (30) + Slides (20) + GWS admin (8) + aggregations (2). Service Account + Domain-Wide Delegation for org-scale automation. GWS-aware capability detection β features auto-unlock for Workspace accounts.
What it does that others don't
- Deep Sheets editing β charts, conditional formats, protected ranges, named ranges, data validation, borders, merge, sort, find/replace, formulas, A1-quote-doubling for CJK tab names. The 1st-party Workspace connector reads Sheets as CSV β formulas don't survive.
- Full Slides editing β presentations, slides, shapes, tables, images, formatting. Not in the connector at all.
- Shared-Drive admin tooling β
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. - 3 auth modes β OAuth2 (personal or GWS), Service Account + Domain-Wide Delegation (org-scale), Application Default Credentials (auto-detected).
- Aggregation tools β
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). - MCP Prompts (3) β
cleanup-shared-with-me,analyze-doc-structure,bulk-format-spreadsheet. - GWS-aware β
capabilities.tsdetects account type on startup; GWS-only tools return clear errors for personal accounts instead of mysterious 403s.
Try this β 5 prompts
Connect the server to Claude Desktop or Claude Code, then paste any of these:
- Shared-drive permission audit β "Audit external shares across all my Shared Drives. List people outside
us-all.co.krwho have access to anything. Group by drive, sort by access level." - Bulk conditional formatting β "Apply this conditional format to column
amountacross everysales-*spreadsheet in my drive: red if <0, yellow if 0β100, green if >100." - Slides from Doc outline β "Convert this Google Doc's outline into a 12-slide presentation: title slide, then 1 slide per H2 with H3 bullet points, end with a Q&A slide. Use the company template."
- Doc structure analysis β "Analyze this Doc's structure: heading hierarchy, internal vs external link health, image alt-text coverage. Suggest 3 concrete improvements."
- Cleanup shared-with-me β "Find files shared with me more than 180 days ago that I never opened. List them with sharer, last modified, and a guess at whether to keep."
When to use this vs alternatives
| 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.
Install
Claude Desktop
{
"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>",
"GOOGLE_DRIVE_ALLOW_WRITE": "true"
}
}
}
}
Claude Code
claude mcp add google-drive -s user -- npx -y @us-all/google-drive-mcp
(Set env vars separately or in .mcp.json.)
Docker
docker run --rm -i --env-file .env ghcr.io/us-all/google-drive-mcp-server
Build from source
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
Auth setup
OAuth2 (personal or GWS)
- Google Cloud Console β create project
- Enable Drive API, Docs API, Sheets API, Slides API, Drive Activity API, Drive Labels API
- Create OAuth2 credentials (Desktop App)
- Get a refresh token (OAuth2 playground or your own flow)
- Set
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRET,GOOGLE_REFRESH_TOKEN
Service Account + Domain-Wide Delegation (org-scale)
- Create a Service Account in Google Cloud Console
- Download the JSON key
- Workspace Admin Console β Security β API Controls β Domain-Wide Delegation β add the SA's Client ID + grant required scopes
- Set
GOOGLE_SERVICE_ACCOUNT_KEY_PATHandGOOGLE_IMPERSONATE_USER
Application Default Credentials (zero-config)
gcloud auth application-default login --client-id-file=client_secret.json --scopes=... β auto-detected on startup. Windows ADC paths (%APPDATA%\gcloud\) supported.
Configuration
| 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 | β | drive.readonly (or drive 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).
Token efficiency
| 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).
GWS detection
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.
MCP Prompts (4)
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.
MCP Resources
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/me
Tools (98)
7 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 |
Full tool list
Drive (24)
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
Google Docs (13)
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
Google Sheets (30)
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
Google Slides (20)
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
GWS-only (9)
list-shared-drives, get-shared-drive, create-shared-drive, audit-shared-drive-permissions, list-file-labels, apply-label, remove-label, list-approvals, get-approval
Aggregations
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.
Meta
search-tools β query other tools by keyword; always enabled.
Architecture
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 forsummarize-doccreateWrapToolHandlerβ Google query-stringkey=...redaction +WriteBlockedError/GWSFeatureErrorpassthrough + Google API error extractionsearch-toolsmeta-tool
supportsAllDrives: true is passed to every Drive API call so Shared Drives just work.
Tech stack
Node.js 18+ β’ TypeScript strict ESM β’ pnpm β’ @modelcontextprotocol/sdk β’ googleapis (Drive v3 / Docs v1 / Sheets v4 / Slides v1 / Activity v2 / Labels v2) β’ zod β’ dotenv β’ vitest.
Limitations
- Approvals API β
googleapisSDK has no typed bindings; uses rawfetchwith auth header extraction. search-filesβ auto-wraps plain text infullText contains '...'; pass Drive query syntax directly for advanced searches.
