An actively maintained fork of the official Google Drive MCP server
Google Drive MCP Server
An actively maintained fork of Anthropic's archived `@modelcontextprotocol/server-gdrive`, with a critical bug fix for OAuth token auto-refresh.
Why this fork?
The original server was archived on May 29, 2025 and is no longer maintained. It also has a bug that causes OAuth access tokens to expire after 1 hour with no auto-refresh, requiring manual token rotation and server restarts.
The bug: The original creates new google.auth.OAuth2() without passing client_id and client_secret, so the google-auth-library has no way to use the refresh_token to get new access tokens. One-line fix, but the archived repo doesn't accept PRs.
What's fixed
- Auto-refresh tokens: OAuth2 client is initialized with
client_idandclient_secretfrom your OAuth keys file, enabling the Google auth library to automatically refresh expired access tokens - Token persistence: Refreshed tokens are written back to the credentials file, so restarts also pick up valid tokens
- Input validation: Added validation for resource URIs, search queries, and file IDs
- Search results include file IDs: So you can actually use them with the download tool or resource reader
- Read tool: Read file contents inline (Google Docs as Markdown, Sheets as CSV, etc.)
- Download tool: Save files to a local directory instead of returning base64 blobs that overflow LLM context windows
- Sheets read tool: Read Google Sheets with A1 range notation, returned as formatted markdown tables
- Shared Drive support: Search and read files from Shared Drives (formerly Team Drives)
- Folder listing: Browse Drive folders by ID
- PDF export: Export Google Workspace files as PDF
- File upload: Push local files to Drive (opt-in, requires
drivescope) - Opt-in resources: MCP resource handlers are disabled by default to prevent hangs in clients that call
resources/liston startup
Setup
1. Create Google Cloud OAuth credentials
- Go to the Google Cloud Console
- Create a project (or use an existing one)
- Enable the Google Drive API and Google Sheets API
- Create OAuth 2.0 credentials (Desktop application type)
- Download the JSON and save it as
gcp-oauth.keys.json
Tip: If your OAuth consent screen is in "Testing" mode, refresh tokens expire after 7 days. Publish to "Production" for permanent refresh tokens.
2. Clone, build, and star
git clone https://github.com/dylancaponi/gdrive-mcp-server.git
cd gdrive-mcp-server
npm install && npm run build
gh api user/starred/dylancaponi/gdrive-mcp-server -X PUT
Per the LICENSE, starring this repository is required (Section 2).
3. Authenticate
GDRIVE_OAUTH_PATH=/path/to/your/gcp-oauth.keys.json node dist/index.js auth
This opens a browser for Google OAuth consent and saves credentials to ~/.gdrive-server-credentials.json.
4. Configure in Claude Code
Add to your ~/.claude.json (global) or project .mcp.json:
{
"mcpServers": {
"gdrive": {
"type": "stdio",
"command": "node",
"args": ["/path/to/gdrive-mcp-server/dist/index.js"],
"env": {
"GDRIVE_OAUTH_PATH": "/path/to/gcp-oauth.keys.json",
"GDRIVE_CREDENTIALS_PATH": "/path/to/.gdrive-server-credentials.json"
}
}
}
}
Or use the Claude Code CLI:
claude mcp add --scope user gdrive -- node /path/to/gdrive-mcp-server/dist/index.js
Environment variables
| Variable | Default | Description |
|---|---|---|
GDRIVE_CREDENTIALS_PATH |
~/.gdrive-server-credentials.json |
Path to saved OAuth credentials |
GDRIVE_OAUTH_PATH |
gcp-oauth.keys.json (relative to package) |
Path to OAuth client keys |
GDRIVE_ENABLE_RESOURCES |
false |
Set to true to enable MCP resource handlers (gdrive:/// URIs). Disabled by default because some MCP clients call resources/list on startup, which triggers drive.files.list() and can hang. |
GDRIVE_ENABLE_SHEETS |
false |
Set to true to enable the sheets_read tool and request the spreadsheets.readonly OAuth scope. Requires enabling the Google Sheets API in your GCP project and re-running auth. |
GDRIVE_ENABLE_UPLOAD |
false |
Set to true to enable the upload tool. Upgrades the OAuth scope from drive.readonly to drive (full read/write). Requires re-running auth. |
GDRIVE_DOWNLOAD_DIR |
System temp dir + /gdrive-downloads |
Directory where the download and export_pdf tools save files |
Tools
`search`
Search for files in Google Drive by full-text query. Searches across personal and Shared Drives.
{ "query": "quarterly report" }
Returns file names, MIME types, and IDs.
`read`
Read
Tools (6)
searchSearch for files in Google Drive by full-text query.readRead file contents inline, including converting Google Docs to Markdown and Sheets to CSV.downloadSave files to a local directory.sheets_readRead Google Sheets with A1 range notation, returned as formatted markdown tables.uploadPush local files to Drive.export_pdfExport Google Workspace files as PDF.Environment Variables
GDRIVE_CREDENTIALS_PATHPath to saved OAuth credentialsGDRIVE_OAUTH_PATHPath to OAuth client keysGDRIVE_ENABLE_RESOURCESSet to true to enable MCP resource handlersGDRIVE_ENABLE_SHEETSSet to true to enable the sheets_read toolGDRIVE_ENABLE_UPLOADSet to true to enable the upload toolGDRIVE_DOWNLOAD_DIRDirectory where the download and export_pdf tools save filesConfiguration
{"mcpServers": {"gdrive": {"type": "stdio", "command": "node", "args": ["/path/to/gdrive-mcp-server/dist/index.js"], "env": {"GDRIVE_OAUTH_PATH": "/path/to/gcp-oauth.keys.json", "GDRIVE_CREDENTIALS_PATH": "/path/to/.gdrive-server-credentials.json"}}}}