Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"google-drive-files": {
"args": [
"serve"
],
"command": "google-drive-files-mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A focused Model Context Protocol server (and standalone CLI) for Google Drive file management (move, upload, organize) and Google Sheets editing (update cells, append rows, edit tabs, format). Fourteen granular, single-purpose tools — each one an explicit operation, with writes returning before/after so nothing is silently overwritten.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'google-drive-files-mcp' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked google-drive-files-mcp against OSV.dev.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in productivity
Dynamic problem-solving through sequential thought chains
Persistent memory using a knowledge graph
mini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local
Local-first AI memory with knowledge graphs and hybrid search. 17+ AI tools via MCP. Free.
MCP Security Weekly
Get CVE alerts and security updates for io.github.zayansalman/google-drive-files-mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A focused Model Context Protocol server (and standalone CLI) for Google Drive file management (move, upload, organize), Google Sheets editing (cells, rows, tabs, format), and surgical Google Docs editing (replace a phrase, insert at an anchor, delete a range — leaving all other formatting untouched). Twenty granular, single-purpose tools — each an explicit operation, with writes returning before/after or precise indices so nothing changes silently.
Built because the hosted Google Drive connectors can search, read, and copy files, but cannot move them (copy duplicates a file with a new ID rather than relocating it), cannot reliably upload a real binary (their inline-content API needs the bytes embedded as base64, which breaks for large/binary files), and cannot edit spreadsheet or document contents in place. This server adds a true move, a resumable upload from a local path, folder creation, a full set of Google Sheets edits, and range-scoped Google Docs edits — for any MCP client (Claude Code, Claude Desktop, Cursor, Cline, etc.).
drive_search(query, only_folders=False, max_results=20) — find files/folders (and their IDs).drive_create_folder(name, parent=None) — create a folder (parent accepts an ID, URL, root, or an unambiguous folder name).drive_move(file, dest_folder, keep_existing_parents=False) — true move (removed from its current folder); keep_existing_parents=True adds without removing.drive_upload_file(local_path, parent=None, name=None, mime_type=None) — upload a local file (any type, incl. large binaries) via a resumable media upload. Stored as-is (no Google-format conversion).sheets_get_info(spreadsheet) — list tabs + sizes (call first to learn tab names).sheets_read(spreadsheet, range_a1, render_option="FORMATTED_VALUE") — read a range (FORMULA/UNFORMATTED_VALUE available).sheets_write(spreadsheet, range_a1, values, value_input_option="USER_ENTERED") — overwrite a range; returns before. USER_ENTERED parses numbers and makes =SUM(..) a formula; RAW writes literally.sheets_append(spreadsheet, range_a1, values, ...) — append rows after a table.sheets_clear(spreadsheet, range_a1) — clear values (keeps formatting); returns before.sheets_batch_write(spreadsheet, updates, ...) — write many ranges atomically.sheets_add_tab / sheets_rename_tab / sheets_delete_tab — manage tabs (delete is destructive).sheets_format(spreadsheet, range_a1, number_format=None, bold=None, background=None) — number pattern / bold / #RRGGBB background.Every Docs edit is range-scoped (documents.batchUpdate), so it changes exactly what you target and leaves every other run's native formatting byte-for-byte intact.
docs_get_info(document) — title + structure (paragraph/table counts, end index).docs_read(document) — full text with per-segment character indices (table cells include row/col). Read this first to target edits.docs_replace_text(document, find, replace, match_case=False) — replace a phrase everywhere; surrounding content/formatting untouched.docs_insert_text(document, text, index=None, after_text=None, before_text=None) — insert at an index or right after/before an anchor phrase.docs_delete_range(document, start_index, end_index) — delete one precise range.docs_append_text(document, text) — append at the end.No rename/copy/trash/delete of files (copy already exists in the hosted Drive connector); destructive ops (sheets_clear, sheets_delete_tab, docs_delete_range) are their own explicit tools so you control exactly when they run.
Moving an existing arbitrary file requires the **full `