GDrive MCP Server
MCP server for Google Drive read/write operations. Enables Claude to use Google Docs as project context files.
Works with: Claude Desktop (stdio) AND Claude Browser (HTTP/SSE)
Features
- Read Google Docs (export to text/markdown)
- Write/Update Google Docs (append or replace content)
- Google Sheets (read/update cells, append rows)
- Folder Operations (create, list, search)
- File Upload/Download (any format)
Setup
1. Google Cloud Project
- Go to Google Cloud Console
- Create a new project (or use existing)
- Enable APIs:
- Google Drive API
- Google Docs API
- Google Sheets API
- Create credentials โ Service Account
- Download JSON key file
- Share your GDrive folders/files with the service account email (looks like:
[email protected])
2. Claude Desktop (Local)
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"gdrive": {
"command": "npx",
"args": ["-y", "tsx", "https://raw.githubusercontent.com/shaikh3/gdrive-mcp-server/main/src/index.ts"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "{...your key...}"
}
}
}
}
3. Claude Browser (Web) - Deploy to Vercel
For Claude browser, you need to deploy the server publicly.
Deploy to Vercel
- Fork this repo to your GitHub
- Connect to Vercel:
npm i -g vercel vercel - Add environment variable in Vercel Dashboard:
GOOGLE_SERVICE_ACCOUNT_KEY= your JSON key contentMCP_TRANSPORT=http
- Get your deployed URL:
https://your-app.vercel.app
Claude Browser Config
In Claude browser (claude.ai), you need an MCP client that connects to your deployed endpoint. Configure it with:
Server URL: https://your-app.vercel.app/sse
Or if using a custom MCP client:
{
"mcpServers": {
"gdrive": {
"url": "https://your-app.vercel.app/sse"
}
}
}
Environment Variables
| Variable | Required | Description |
|---|---|---|
GOOGLE_SERVICE_ACCOUNT_KEY |
Yes* | JSON content of service account key |
GOOGLE_SERVICE_ACCOUNT_PATH |
Alt* | Path to JSON key file |
MCP_TRANSPORT |
No | stdio (default) or http |
PORT |
No | HTTP port (default: 3000) |
*One of KEY or PATH is required
Tools
Document Operations
gdrive_doc_read
Read a Google Doc as text/markdown.
{
"fileId": "1ABC123...",
"format": "markdown"
}
gdrive_doc_write
Write/replace content in a Google Doc.
{
"fileId": "1ABC123...",
"content": "# Project Context\n\nUpdated from chat...",
"mode": "replace"
}
gdrive_doc_create
Create a new Google Doc.
{
"title": "Claude Project - Context",
"folderId": "1FolderID...",
"content": "Initial project context..."
}
Sheet Operations
gdrive_sheet_read
Read range from Google Sheet.
{
"spreadsheetId": "1SheetID...",
"range": "Sheet1!A1:D10"
}
gdrive_sheet_write
Write to range in Google Sheet.
{
"spreadsheetId": "1SheetID...",
"range": "Sheet1!A1",
"values": [["Name", "Status"], ["Task 1", "Done"]]
}
Folder Operations
gdrive_folder_create
Create a new folder.
{
"name": "Claude Projects",
"parentId": "root"
}
gdrive_search
Search for files/folders.
{
"query": "name contains 'Project' and mimeType = 'application/vnd.google-apps.document'"
}
Development
# Install dependencies
npm install
# Build
npm run build
# Run locally (stdio mode - for Claude Desktop)
npm start
# Run in HTTP mode (for Claude Browser)
MCP_TRANSPORT=http npm start
# Dev mode
npm run dev
Your Use Case: Project Context Files
Claude Desktop:
You: "Update my project context doc with what we just discussed"
Claude: *calls gdrive_doc_write on your context file*
Claude Browser:
You: "Read the project context from gdrive://doc/1ABC123..."
Claude: *fetches and reads via deployed MCP server*
The doc updates in real-time - accessible from any chat, any device.
License
MIT