Google Drive Files MCP
Minimal MCP server for Google Drive file management and Google Sheets editing.
Connector by zayansalman · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying Google Drive Files MCP?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/zayansalman-google-drive-files-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 6 read · 13 write · 3 delete · 1 not yet classified
- Secrets
- 2 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 23
Read from the source code; the running server may list different tools.
Read 6 · Look things up without changing anything.
docs_get_infodocs_readdrive_searchsheets_formatsheets_get_infosheets_read
Write 13 · Create, change, send or run things.
docs_append_textdocs_insert_textdocs_replace_textdrive_create_folderdrive_movedrive_upload_filesheets_add_tabsheets_appendsheets_batch_writesheets_rename_tabsheets_set_column_widthsheets_set_row_height
Show 1 more tools
sheets_write
Delete 3 · Delete, drop, revoke or wipe things.
docs_delete_rangesheets_clearsheets_delete_tab
Not yet classified 1 · We could not tell from the name and description.
sheets_freeze_panes
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
GDRIVE_FILES_MCP_CREDENTIALSGDRIVE_FILES_MCP_TOKEN
Other settings (environment variables or headers).
GDRIVE_FILES_MCP_SCOPES
Files it touches
- Any path the agent passes to its tools
Tools (23)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
docs_append_textAppend text at the end of the document body. Returns: JSON {inserted_at_index, chars_inserted}.
docs_delete_rangeDelete one precise content range [start_index, end_index) (indices from docs_read). Returns: JSON {deleted_range}.
docs_get_infoGet a Google Doc's title and structure summary (paragraph/table counts, end index). Args: document: A Google Docs URL or a bare document ID. Returns: JSON {document_id, title, paragraphs, tables, end_index}.
docs_insert_textInsert text at a precise spot — by document index, or right after/before an anchor phrase. Provide exactly one of: index, after_text, or before_text. Anchors use the FIRST occurrence of the phrase. To insert a new paragraph, include a newline in `text` (e.g. leading '\n'). Everything else stays byte-for-byte the same. Args: document: Docs URL or ID. text: The text to insert. index: Document character index to insert at (from docs_read). after_text: Insert immediately after the first occurrence of this anchor phrase. before_text: Insert immediately before the first occurre…
docs_readRead a Doc's text WITH per-segment document character indices — read this before editing. The indices let you target surgical edits precisely. Table cells include their row/col. Args: document: Docs URL or ID. Returns: JSON {document_id, title, text, end_index, segments: [{text, start_index, end_index, in_table, row, col}]}.
docs_replace_textReplace every occurrence of a phrase with another — all surrounding content/formatting is left intact. The cleanest surgical edit: change one phrase without touching anything else in the document. Args: document: Docs URL or ID. find: The exact text to find. replace: The replacement text. match_case: Whether the match is case-sensitive. Default False. Returns: JSON {find, replace, occurrences_changed}.
drive_create_folderCreate a new folder in Google Drive. Args: name: The new folder's name. parent: Optional destination — folder ID, URL, 'root', or an unambiguous existing folder name. Returns: JSON {id, name, mime_type, is_folder, parents, web_view_link}.
drive_moveMove a file or folder into a destination folder (true move — changes which folder it lives in). Args: file: The item to move — a Drive URL or file/folder ID. dest_folder: Destination — folder ID, URL, 'root', or an unambiguous existing folder name. keep_existing_parents: If True, ADD to dest_folder without removing it from its current folder(s). Returns: JSON {id, name, is_folder, moved_from, moved_to, parents_now, web_view_link}.
drive_searchSearch Google Drive for files and/or folders. Use this to find an item to move and its destination folder. Args: query: Plain string (auto-wrapped as a filename search) or raw Drive query syntax. only_folders: If True, return only folders (handy for picking a destination). max_results: Max items to return. Clamped to [1, 100]. Default 20. Returns: JSON array of {id, name, mime_type, is_folder, parents, web_view_link}.
drive_upload_fileUpload a local file (any type, including large binaries like zip/pdf/images) into Google Drive. Streams the bytes from the path via a resumable media upload, so file size and binary fidelity are not a problem. The file is stored as-is (no Google-format conversion). Args: local_path: Path to the local file to upload ('~' is expanded). parent: Destination folder — ID, URL, 'root', or an unambiguous existing folder name. Default: My Drive root. name: Name for the file in Drive. Default: the local file's basename. mime_type: Override the MIME type. Default: guessed from the filen…
sheets_add_tabAdd a new tab (sheet) to a spreadsheet. Returns: JSON {sheet_id, title, rows, cols}.
sheets_appendAppend rows after the last row of the table that `range_a1` belongs to (does not overwrite existing rows). Args: spreadsheet: Sheets URL or ID. range_a1: A range inside the target table, e.g. 'Sheet1!A1' or 'Sheet1!A:D'. values: 2D array of rows to append. value_input_option: USER_ENTERED | RAW. Returns: JSON {updated_range, appended_rows, updated_cells}.
sheets_batch_writeWrite several ranges in one atomic call. Args: spreadsheet: Sheets URL or ID. updates: list of {"range": "<A1>", "values": [[...]]} objects. value_input_option: USER_ENTERED | RAW. Returns: JSON {total_updated_cells, total_updated_ranges}.
sheets_clearClear the VALUES in a range (formatting is left intact). Returns the prior contents under `before`. Args: spreadsheet: Sheets URL or ID. range_a1: A1 range to clear, e.g. 'Sheet1!A2:D100'. Returns: JSON {cleared_range, before}.
sheets_delete_tabDelete a tab (DESTRUCTIVE). `tab` is the tab title (or its numeric sheetId as a string). Returns: JSON {deleted_sheet_id, deleted_title}.
Show 8 more tools
sheets_formatFormat a range: number pattern, bold, background colour, and/or text wrap. Pass at least one. Args: spreadsheet: Sheets URL or ID. range_a1: A1 range, e.g. 'Sheet1!B2:B10'. number_format: A number pattern, e.g. '#,##0.00', '0.00%', '$#,##0.00'. bold: True/False to set bold. background: Cell background as '#RRGGBB'. wrap: True to wrap text in the cell; False to restore Sheets' default overflow behaviour. Returns: JSON {sheet_id, range, applied}.
sheets_freeze_panesFreeze (or unfreeze) header rows/columns for a tab so they stay visible while scrolling. Args: spreadsheet: Sheets URL or ID. tab: Tab title (or its numeric sheetId as a string). rows: Rows to freeze from the top. 0 unfreezes rows. Omit to leave untouched. cols: Columns to freeze from the left. 0 unfreezes columns. Omit to leave untouched. Returns: JSON {sheet_id, title, frozen_rows, frozen_cols}.
sheets_get_infoList a spreadsheet's tabs and their sizes — call this first to learn the tab names and dimensions. Args: spreadsheet: A Google Sheets URL or a bare spreadsheet ID. Returns: JSON {spreadsheet_id, title, tabs: [{title, sheet_id, index, rows, cols}]}.
sheets_readRead the values in an A1 range. Use this before writing so you can see what's there. Args: spreadsheet: Sheets URL or ID. range_a1: A1 range, e.g. 'Sheet1!A1:D10' or 'A1:D10' (defaults to the first tab if no tab is given). render_option: FORMATTED_VALUE (as shown) | UNFORMATTED_VALUE (raw numbers) | FORMULA (show formulas). Returns: JSON {range, values (2D array), rows, cols}.
sheets_rename_tabRename a tab. `tab` is the current tab title (or its numeric sheetId as a string). Returns: JSON {sheet_id, old_title, new_title}.
sheets_set_column_widthSet column width in pixels for a whole-column range, e.g. 'Sheet1!A:C'. Args: spreadsheet: Sheets URL or ID. range_a1: A whole-column A1 range, e.g. 'Sheet1!A:C' or 'A:C' (defaults to the first tab). pixel_size: Width in pixels. Returns: JSON {sheet_id, dimension, range, pixel_size}.
sheets_set_row_heightSet row height in pixels for a whole-row range, e.g. 'Sheet1!2:5'. Args: spreadsheet: Sheets URL or ID. range_a1: A whole-row A1 range, e.g. 'Sheet1!2:5' or '2:5' (defaults to the first tab). pixel_size: Height in pixels. Returns: JSON {sheet_id, dimension, range, pixel_size}.
sheets_writeOverwrite a range with new values. Returns the PRIOR contents (`before`) so the overwrite is auditable. Args: spreadsheet: Sheets URL or ID. range_a1: A1 range to write into, e.g. 'Sheet1!B2:B10'. values: 2D array of cell values (rows of columns), e.g. [[1],[2],[3]] or [["Q1", 100]]. value_input_option: USER_ENTERED (parse numbers/dates, and '=SUM(..)' becomes a formula) | RAW (literal text). Returns: JSON {updated_range, updated_cells, updated_rows, updated_columns, before, after}.
Signals
- Stars
- 0
- Forks
- 1
- Open issues
- 0
- Weekly downloads
- 33
- Last commit
- Jul 12, 2026 (3 months ago)
- Last release
- Jun 22, 2026 (4 months ago)
- Last package publish
- Jun 22, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.zayansalman/google-drive-files-mcp- Version
- 0.3.0
- Auth
- API key
- Packages
- pypi google-drive-files-mcp
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from zayansalman
- 0.542score
Gmail Attachments MCP
zayansalman
Minimal MCP server for downloading Gmail attachments to disk.
ConnectorCFreshness: CLocal★ 3↓ 189/wkClaude Code +5 - 0.478score
Google Drive Comments MCP
zayansalman
Minimal MCP server for reading comments on Google Drive files (Docs, Sheets, Slides).
ConnectorCFreshness: CLocalRead-only↓ 22/wkClaude Code +5
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Google Drive Files MCP running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Google Drive Files MCP. Agent Mart. https://agentmart.dev/connectors/zayansalman-google-drive-files-mcp (last updated 2026-10-24)