Gdrive Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Gdrive Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server that provides AI assistants with secure access to your Google Docs. Run it locally for personal use or deploy it to Cloudflare Workers for global scale.
| Tool | Description |
|---|---|
list_documents | List Google Docs in your Drive |
get_document | Get full document content with formatting |
get_document_text | Get plain text content of a document |
create_document | Create a new Google Doc |
update_document | Update text, character/paragraph styles, lists, tables, and inline images |
search_documents | Search documents by content or title |
get_document_info | Get document metadata |
get_document_tabs | List tabs in a document |
get_document_headings | Extract headings (H1-H6) from a document |
get_content_under_heading | Get content under a specific heading |
replace_section | Preview or apply a revision-checked, tab-scoped plain-text section replacement |
export_document | Export a document as Markdown, text, PDF, or DOCX (returned as an embedded MCP resource) |
content[0].text. Parse it with JSON.parse; these tools don't use MCP structuredContent.id, name, mimeType, createdTime, modifiedTime, webViewLink, and, when Drive reports them, size and parents. Fields with no value are omitted rather than null.get_document_info returns one document object.list_documents returns { documents, count, nextPageToken? }.search_documents returns { query, documents, count, nextPageToken? }, where query echoes your search text as sent.count is the number of documents on this page, not the total number of matches. To get the next page, call again with the same arguments plus pageToken. nextPageToken is absent on the last page, and a page can be empty while still carrying a token.dryRun: false with the requiredRevisionId from your latest read. The replacement covers everything under the heading, including subheadings, and is written as plain text, so existing formatting is not preserved.requiredRevisionId from your read so edits are rejected if the document changed in the meantime.tabId (from get_document_tabs) for any write.beast-scripts/save-export.mjs verifies an export and saves it to disk without overwriting existing files.Choose your deployment method - these are two completely separate approaches:
Use this if: You're a Google Workspace admin and want local stdio transport. Prerequisites: Google Workspace admin access for domain-wide delegation.
git clone https://github.com/petergarety/gdrive-mcp.git
cd gdrive-mcp
npm install cp env.example .env
# Edit .env and add:
# GOOGLE_SERVICE_ACCOUNT_PATH=/absolute/path/to/service-account.json
# [email protected] npm run build:mcp
npm run start:mcpAdd to your ~/.cursor/mcp.json:
{
"mcpServers": {
"gdrive": {
"command": "node",
"args": ["/absolute/path/to/gdrive-mcp/dist/mcp-server.js"],
"cwd": "/absolute/path/to/gdrive-mcp"
}
}
}Use this if: You want web-based authentication that works with any Google account. Benefits: No Workspace admin required, works with personal Gmail, scalable.
npm install -g wrangler
wrangler login npx wrangler kv namespace create "TOKEN_STORE"
npx wrangler kv namespace create "CACHE"
# Update wrangler.toml with the returned namespace IDs cp wrangler.toml.example wrangler.toml
# Edit wrangler.toml and update:
# - Replace "your-gdrive-mcp-server" with your desired worker name
# - Update GOOGLE_REDIRECT_URI placeholder
# - Add the KV namespace IDs from step 2 npx wrangler typesThis creates worker-configuration.d.ts with proper TypeScript types for your Cloudflare environment.
npm run build
npx wrangler deployNote the worker URL (e.g., https://gdrive-mcp-server.your-subdomain.workers.dev)
GOOGLE_REDIRECT_URI in wrangler.toml with your actual worker URL npx wrangler secret put GOOGLE_CLIENT_ID
npx wrangler secret put GOOGLE_CLIENT_SECRET npm run build
npx wrangler deployVisit https://your-worker-url/ to authenticate and get your API key for MCP clients.
Add the following to your ~/.cursor/mcp.json file:
{
"mcpServers": {
"gdriveCF": {
"url": "https://your-worker-url/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY_FROM_STEP_9"
}
}
}
}Replace:
your-worker-url with your actual worker URLYOUR_API_KEY_FROM_STEP_9 with the API key from the previous step.Restart Cursor and you can now use @gdriveCF commands!
Prerequisites: You must be a Google Workspace admin for your domain.
gdrive-mcp-serverService account for Google Docs MCP serverservice-account.json)#### Step A: Note the Client ID (Google Cloud Console)
#### Step B: Authorize Service Account (Google Admin Console)
Important: You must be a Google Workspace admin for this step.
https://www.googleapis.com/auth/documents,https://www.googleapis.com/auth/drive⚠️ Critical: No spaces after the comma, exact URLs as shown
https://www.googleapis.com/auth/documentshttps://www.googleapis.com/auth/drive.readonlyopenid, profile, emailThese are the scopes requested by the Worker code. Local service-account authorization above separately requests documents + drive.
https://your-worker.workers.dev/callback (replace with your actual worker URL)/auth endpoint once"OAuth Error: redirect_uri_mismatch"
https://gdrive-mcp-server.your-subdomain.workers.dev/callback"Tools not found" in Cursor
~/.cursor/mcp.json file is correctecho '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | npm run start:mcpBuild errors
npm run build:mcp for local development (not npm run build)"Unauthorized_client" error with service account
https://www.googleapis.com/auth/documents,https://www.googleapis.com/auth/driveGOOGLE_USER_EMAIL matches your Google Workspace domain"Service account authentication failed"
GOOGLE_SERVICE_ACCOUNT_PATH points to the correct JSON fileMIT License - see LICENSE file for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.