Google Drive MCP
Secure access to Google Drive, Docs, Sheets, Slides, and Calendar through MCP.
Connector by piotr-agier · GitHub account verified by the MCP Registry
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/piotr-agier-google-drive-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
Use cases: file-management, spreadsheets, document-processing, scheduling
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
- 37 read · 68 write · 12 delete · 13 not yet classified
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 130
Read from the source code; the running server may list different tools.
Read 37 · Look things up without changing anything.
authGetStatusauthListScopesbulkConvertFolderPdfsconvertPdfToGoogleDocdescribeGoogleDocRangeformatGoogleSheetCellsgetCalendarEventgetCalendarEventsgetCommentgetDocumentInfogetGoogleDocContentgetGoogleDocContentPaginated
Show 25 more tools
getGoogleDocImagegetGoogleDocStyleSummarygetGoogleSheetCellsgetGoogleSheetContentgetGoogleSlidesContentgetGoogleSlidesSpeakerNotesgetRevisionsgetSlideElementInfogetSpreadsheetInfolistCalendarslistCommentslistDimensionGroupslistDocumentTabslistFolderlistGoogleDocslistGoogleSheetslistPermissionslistSharedDriveslistSheetsreadGoogleDocreadGoogleDocPaginatedreadSmartChipsreadTextFilesearchshowSheetDimension
Write 68 · Create, change, send or run things.
addCommentaddDataValidationaddDimensionGroupaddDocumentTabaddGoogleSheetConditionalFormataddNamedRangeaddPermissionaddSheetaddSpreadsheetSheetappendSpreadsheetRowsapplyParagraphStyleapplyTextStyle
Show 56 more tools
authTestFileAccessautoResizeColumnsautoResizeRowsbatchUpdateGoogleSheetValuescopyFilecreateCalendarEventcreateDocFromHTMLcreateFoldercreateFootnotecreateGoogleDoccreateGoogleSheetcreateGoogleSlidescreateGoogleSlidesShapecreateGoogleSlidesTextBoxcreateShortcutcreateTextFiledownloadFileeditTableCellfindAndReplaceInDocinsertImageFromUrlinsertLocalImageinsertSlidesImageFromUrlinsertSlidesLocalImageinsertSmartChipinsertTableinsertTextlockFilemanage_accountsmergeGoogleSheetCellsmoveItemmoveSlideElementrenameDocumentTabrenameItemrenameSheetreplaceAllTextInSlidesreplaceSlideImagereplyToCommentrestoreRevisionsetColumnWidthsetElementZOrdersetGoogleSheetBorderssetGoogleSlidesBackgroundsetRowHeightsetSlideVisibilityshareFileupdateCalendarEventupdateDimensionGroupupdateGoogleDocupdateGoogleSheetupdateGoogleSheetIfUnchangedupdateGoogleSlidesupdateGoogleSlidesSpeakerNotesupdatePermissionupdateTextFileuploadFileuploadPdfWithSplit
Delete 12 · Delete, drop, revoke or wipe things.
createParagraphBulletsdeleteCalendarEventdeleteCommentdeleteDimensionGroupdeleteGoogleSlidedeleteItemdeleteRangedeleteSheetdeleteSlideElementremovePermissionsetElementTextunlockFile
Not yet classified 13 · We could not tell from the name and description.
duplicateSlideexportSlideThumbnailformatGoogleDocParagraphformatGoogleDocTextformatGoogleSheetNumbersformatGoogleSheetTextformatGoogleSlidesParagraphformatGoogleSlidesTexthideSheetDimensionprotectRangereorderSlidesstyleDocTable
Show 1 more tools
styleGoogleSlidesShape
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
GOOGLE_DRIVE_OAUTH_CREDENTIALS
Files it touches
- Any path the agent passes to its tools
Tools (130)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
addCommentAdd a comment quoting a text range, targeted by startIndex+endIndex or by textToFind. The comment appears in the document's comment panel and records the quoted passage. Google Docs does not support margin-anchored comments through any public API, so the comment is unanchored by design; this is a platform limit, not a failure.
addDataValidationAdd data validation rules to a sheet range
addDimensionGroupGroup a range of rows or columns in a sheet (creates a collapsible outline group). Indices are 0-based and the interval is half-open [startIndex, endIndex) — to group rows 5 through 12 as shown in the UI, pass startIndex: 4, endIndex: 12. Nest groups by adding a second group inside the range of the first.
addDocumentTabAdd a new tab in a Google Doc
addGoogleSheetConditionalFormatAdd conditional formatting to a Google Sheet
addNamedRangeCreate a named range
addPermissionAdd a sharing permission to a file. If the principal already holds a permission on the file, Drive updates that permission instead of creating a second one, and the requested role is applied even when it is a downgrade (asking for 'reader' for an existing 'writer' leaves them as 'reader'). Provide emailAddress for type 'user'/'group', domain for type 'domain', and neither for 'anyone'.
addSheetAlias for addSpreadsheetSheet (adds a new sheet/tab)
addSpreadsheetSheetAdds a new sheet/tab to an existing Google Spreadsheet
appendSpreadsheetRowsAppends rows of data to the end of a sheet in a Google Spreadsheet
applyParagraphStyleApply paragraph formatting — alignment, indents, spacing, named styles, borders (top/bottom/left/right/between), shading, and pagination controls. Use EITHER startIndex+endIndex OR textToFind OR indexWithinParagraph for targeting. The update styles EVERY paragraph overlapping the range, so one call over the whole body with removeBorders: ["all"] strips every paragraph border from a document.
applyTextStyleApply text formatting (bold, italic, color, etc.) to a range or found text. Use EITHER startIndex+endIndex OR textToFind for targeting.
authGetStatusShow authentication/token status and scope diagnostics
authListScopesList configured/requested scopes and currently granted scopes
authTestFileAccessRun auth diagnostics against Drive API/file access
Show 115 more tools
autoResizeColumnsAuto-size one or more columns to fit their content. Indices are 0-based and the interval is half-open [startColumn, endColumn) — to auto-fit a single column at position 5, pass startColumn: 5, endColumn: 6.
autoResizeRowsAuto-size one or more rows to fit their content. Indices are 0-based and the interval is half-open [startRow, endRow) — to auto-fit a single row at position 5, pass startRow: 5, endRow: 6.
batchUpdateGoogleSheetValuesWrite many ranges in ONE call via spreadsheets.values.batchUpdate. Ranges may sit on different sheets of the same spreadsheet. Prefer this over repeated updateGoogleSheet calls whenever more than one range changes: N separate writes cost N round trips and N units of the per-minute write quota, while one batch costs one of each.
bulkConvertFolderPdfsConvert all PDFs in a folder into Google Docs and return per-file results
convertPdfToGoogleDocConvert an existing PDF in Drive into an editable Google Doc
copyFileCreates a copy of a Google Drive file or document
createCalendarEventCreate a new calendar event. Supports timed events, all-day events, and Google Meet integration.
createDocFromHTMLCreate a Google Doc from HTML content in a single Drive API call. HTML tags are converted to native Google Doc styles: <h1> → Heading 1, <h2> → Heading 2, <p> → Normal Text, <b> → bold, <i> → italic, <ul>/<ol> → lists, <table> → tables. Useful when you want native heading/list/table styling applied in one request instead of a createGoogleDoc call followed by per-paragraph formatGoogleDocParagraph requests.
createFolderCreate a new folder in Google Drive
createFootnoteCreate a footnote in a Google Doc. Footnotes cannot be inserted inside equations, headers, footers, or other footnotes. For multi-tab docs, specify tabId to target a specific tab.
createGoogleDocCreate a new Google Doc
createGoogleSheetCreate a new Google Sheet. By default uses RAW mode which stores values as-is. Set valueInputOption to 'USER_ENTERED' only when you need formulas to be evaluated.
createGoogleSlidesCreate a new Google Slides presentation
createGoogleSlidesShapeCreate a shape in Google Slides
createGoogleSlidesTextBoxCreate a text box in Google Slides
createParagraphBulletsAdd or remove bullet points / numbered lists on paragraphs in a Google Doc. Target paragraphs by startIndex+endIndex or textToFind. Use bulletPreset='NONE' to remove bullets.
createShortcutCreate a shortcut (link) to a file or folder in Google Drive. Useful for referencing the same document from multiple locations without duplicating it.
createTextFileCreate a new text or markdown file
deleteCalendarEventDelete a calendar event
deleteCommentDelete a comment from the document
deleteDimensionGroupRemove a row or column group from a sheet. The rows/columns themselves are kept; only the grouping is removed. Indices are 0-based and the interval is half-open [startIndex, endIndex). Use listDimensionGroups to read back an existing group's range and pass it in full: the API decrements the group depth of every dimension in the range rather than matching a whole group, so a range that only partially overlaps a group shrinks that group instead of removing it. With a depth-1 group over columns B:E and a depth-2 group over C:D, deleting D:E leaves depth-1 over B:D and depth-2 over C:C.
deleteGoogleSlideDelete a slide from a presentation
deleteItemMove a file or folder to trash (can be restored from Google Drive trash)
deleteRangeDelete content between start and end indices. Works on Google Docs and text/* files (e.g. text/plain, text/markdown). Index semantics differ by file type: Google Docs use the Docs API's 1-based structural position (includes structural elements); text files use 0-based Unicode code point (character) offsets into the file content. For multi-tab Google Docs, specify tabId to target a specific tab — tabId is not supported on text files.
deleteSheetDelete a sheet/tab by sheetId
deleteSlideElementDelete an element (image, text box, shape) from a Google Slides slide
describeGoogleDocRangeStyle probe for one spot: the paragraph styles (named style, alignment, borders, shading, indents, spacing, bullets) and text runs (font, size, bold/italic/underline, colors, links) overlapping a range, with the real document index of every paragraph and run so the result feeds straight into applyParagraphStyle or applyTextStyle. Target it with startIndex (optionally endIndex) or with textToFind, not both. Describes one tab's body; headers, footers, and footnotes are separate index spaces and are not included. Reports the document's revisionId, so the same read that gives you the indices gives…
downloadFileDownload a Google Drive file to a local path. For Google Workspace files (Docs, Sheets, Slides, Drawings), exports to the specified format. For regular files, downloads as-is. Streams directly to disk.
duplicateSlideDuplicate a slide in a presentation
editTableCellEdit the content and/or style of a specific table cell. Requires knowing the table start index. For multi-tab docs, specify tabId to target a table in a specific tab.
exportSlideThumbnailExport a slide thumbnail URL
findAndReplaceInDocFind and replace text across a Google Document. Dry-run mode counts matches exactly across body, tables, headers, footers, and footnotes. On zero matches the response explains the likeliest lookalike cause (non-breaking spaces, curly quotes, HTML entities, case). For multi-tab docs, specify tabId to scope replacements to a single tab. When replaceText contains a newline, the write is always locked to the revision its matches were located in — even without an explicit ifRevisionId — since the compiled batch targets indices from that read; a concurrent edit fails the call instead of landing at t…
formatGoogleDocParagraphApply paragraph formatting (alignment, indentation, spacing, heading style, borders, shading) in a Google Doc. Alias for applyParagraphStyle.
formatGoogleDocTextApply text formatting (bold, italic, font, color, links, superscript/subscript) to a range or found text in a Google Doc. Alias for applyTextStyle.
formatGoogleSheetCellsFormat cells in a Google Sheet (background, borders, alignment)
formatGoogleSheetNumbersApply number formatting to cells in a Google Sheet
formatGoogleSheetTextApply text formatting to cells in a Google Sheet
formatGoogleSlidesParagraphApply paragraph formatting to text in Google Slides
formatGoogleSlidesTextApply text formatting to elements in Google Slides
getCalendarEventGet a single calendar event by ID
getCalendarEventsGet events from a Google Calendar with optional filtering
getCommentGet a specific comment with its full thread of replies
getDocumentInfoGets detailed information about a specific Google Document.
getGoogleDocContentGet content of a Google Doc with text indices for formatting
getGoogleDocContentPaginatedGet a portion of a Google Doc with text indices for formatting, with pagination support. Use offset and limit to read large documents in chunks.
getGoogleDocImageFetch the bytes of an inline image embedded in a Google Doc, keyed by its inline object ID. Returns a native image the model can see (or base64). The doc is re-fetched so the underlying image URL is always fresh — pass the objectId, never a raw contentUri (those expire). Inline images only; floating/anchored images are not supported.
getGoogleDocStyleSummaryCompact style inventory of a whole document in a few hundred tokens: fonts with their size ladders, named-style counts, text colors, bordered and shaded paragraph locations, a table inventory with real index ranges, and the heading outline. The cheap first read before any formatting work, in place of pulling the full document JSON to answer style questions. Counts cover every tab; locations are prefixed with the tab title on a multi-tab document, since index spaces restart per tab. Reports the document's revisionId, so the same read that gives you the indices gives you the lock to pass as ifRe…
getGoogleSheetCellsRead Google Sheets cells as structured data instead of joined text: each cell comes back with its own absolute A1 address, and with the formula the user entered AND the value it evaluates to, in one call. Reads several ranges at once and returns them separately. Use getGoogleSheetContent for a quick human-readable dump of one range. Use this tool whenever the result will be written back, compared to a formula, or spans several ranges.
getGoogleSheetContentGet content of a Google Sheet with cell information. Each row is returned as 'Row N: ' followed by that row's cells separated by tab characters. Returns displayed values by default; set valueRenderOption to 'FORMULA' to read the underlying formulas (e.g. '=SUM(A1:A10)') instead of their results, or 'UNFORMATTED_VALUE' for raw numbers without display formatting. Under UNFORMATTED_VALUE a date or time cell comes back as a spreadsheet serial number (e.g. 45678), not a date string.
getGoogleSlidesContentGet content of Google Slides with element IDs for formatting
getGoogleSlidesSpeakerNotesGet speaker notes from a specific slide in Google Slides
getRevisionsList revisions for a file
getSlideElementInfoGet position, size, and transform of all elements on a slide. Returns actual rendered bounds.
getSpreadsheetInfoGets detailed information about a Google Spreadsheet including all sheets/tabs
hideSheetDimensionHide a range of columns or rows in a sheet (sets hiddenByUser=true). Indices are 0-based and the interval is half-open [startIndex, endIndex) — to hide a single column/row at position 5, pass startIndex: 5, endIndex: 6.
insertImageFromUrlInsert an inline image into a Google Document from a publicly accessible URL
insertLocalImageUpload a local image file to Google Drive and insert it into a Google Document
insertSlidesImageFromUrlInsert an image into a Google Slides slide from a publicly accessible URL
insertSlidesLocalImageUpload a local image file to Google Drive and insert it into a Google Slides slide
insertSmartChipInsert a person smart chip (mention) at a document index. Only person chips are supported by the Docs API; date and file chips are read-only.
insertTableInsert a new table with the specified dimensions at a given index. For multi-tab docs, specify tabId to target a specific tab.
insertTextInsert text at a specific index (surgical edit, doesn't replace whole file). Works on Google Docs and text/* files (e.g. text/plain, text/markdown). Index semantics differ by file type: Google Docs use the Docs API's 1-based structural position (includes structural elements); text files use a 0-based Unicode code point (character) offset into the file content. For multi-tab Google Docs, specify tabId to target a specific tab — tabId is not supported on text files.
listCalendarsList all accessible Google Calendars for the authenticated user
listCommentsList all comments in a Google Document
listDimensionGroupsList the row and column groups of a spreadsheet, with each group's range, nesting depth and collapsed state. Ranges are reported as 0-based half-open intervals, exactly as addDimensionGroup, deleteDimensionGroup and updateDimensionGroup take them.
listDocumentTabsList all tabs in a Google Doc with their IDs and hierarchy
listFolderList contents of a folder (defaults to root)
listGoogleDocsLists Google Documents from your Google Drive with optional filtering.
listGoogleSheetsLists Google Spreadsheets from your Google Drive with optional filtering
listPermissionsList sharing permissions for a file
listSharedDrivesList available Google Shared Drives
listSheetsList tabs/sheets in a Google Spreadsheet
lockFileLock a file to prevent editing by setting content restrictions. The file remains readable but cannot be modified until unlocked.
manage_accountsManage connected Google accounts. action='list' shows all connected accounts (no secrets). action='add' starts an OAuth flow for a new account identified by account_id (alias). action='remove' deletes local tokens for an account. action='set_default' picks which account is used when tool calls omit the `account` parameter.
mergeGoogleSheetCellsMerge cells in a Google Sheet
moveItemMove a file or folder
moveSlideElementMove and/or resize an element (image, text box, shape) on a Google Slides slide
protectRangeProtect a range in a spreadsheet
readGoogleDocRead content of a Google Doc with format options. Supports multi-tab documents. Text/markdown output leads with the document's revisionId — pass it as ifRevisionId on write tools for an optimistic lock.
readGoogleDocPaginatedRead a portion of a Google Doc with pagination support. Use offset and limit to read large documents in chunks, avoiding output size limits.
readSmartChipsRead smart chip-like elements (person mentions, rich links, date chips) from the default tab of a document
readTextFileRead content of a text file (any text/* MIME type, e.g. text/plain, text/markdown, text/csv). For Google Docs, use readGoogleDoc.
removePermissionRemove a permission from a file (by permissionId or emailAddress)
renameDocumentTabRename an existing Google Doc tab
renameItemRename a file or folder
renameSheetRename a sheet/tab by sheetId
reorderSlidesReorder one or more slides in a presentation
replaceAllTextInSlidesReplace all matching text across a presentation. It reaches slides, speaker notes, layouts and masters, so a match on a layout or master changes every slide that uses it. A match can run across paragraphs inside one text box or table cell, never across two. Pass expectedCount to refuse the write when the count differs.
replaceSlideImageReplace an existing image in place, preserving its layering (z-order), position, size, and crop. Unlike delete+insert, which lands the new image on top of the stack, this keeps the image under any overlaid text.
replyToCommentAdd a reply to an existing comment
restoreRevisionRestore a file to a selected revision (creates a new head revision). Note: workspace files (Docs, Sheets, Slides) are restored via export/import and may lose some formatting.
searchSearch for files in Google Drive. Results are sorted most-recently-modified first by default; use orderBy for a different order. Set rawQuery=true to pass a raw Google Drive API query supporting operators like modifiedTime, createdTime, mimeType, name contains, etc.
setColumnWidthSet the width (in pixels) of one or more columns in a sheet. Indices are 0-based and the interval is half-open [startColumn, endColumn) — to resize a single column at position 5, pass startColumn: 5, endColumn: 6.
setElementTextReplace the entire text of one shape/text box by objectId (element-scoped delete+insert in one atomic call). Unlike replaceAllTextInSlides, this cannot hit other slides, masters, or layouts, and does not depend on matching existing text. Pass empty text to clear the element.
setElementZOrderChange the stacking order of page elements (updatePageElementsZOrder). Inserted images land on top of the stack and can cover overlay text — send them backward or to the back. All elements must be on the same page.
setGoogleSheetBordersSet borders for cells in a Google Sheet
setGoogleSlidesBackgroundSet background color for slides
setRowHeightSet the height (in pixels) of one or more rows in a sheet. Indices are 0-based and the interval is half-open [startRow, endRow) — to resize a single row at position 5, pass startRow: 5, endRow: 6.
setSlideVisibilityShow or hide (skip) slides in one atomic call. Hidden slides are skipped in present mode and PDF export.
shareFileConvenience wrapper to share a file with a user email. If the user already holds a permission on the file, that permission's role is set to the requested one (even when it is a downgrade) instead of creating a duplicate.
showSheetDimensionShow (unhide) a range of columns or rows in a sheet (sets hiddenByUser=false). Indices are 0-based and the interval is half-open [startIndex, endIndex) — to unhide a single column/row at position 5, pass startIndex: 5, endIndex: 6.
styleDocTableStyle a Docs table in one atomic call: cell borders/background/padding/content alignment (whole table via tableStartLocation, or a cell range subset), fixed column widths, and minimum row heights. Get the real tableStartIndex from the table span line readGoogleDoc or getGoogleDocContent prints (tableStartIndex=N) — never compute it from text offsets. removeBorders: ["all"] unboxes the table (width-0 borders). The API resolves shared edges by applying border updates right-to-left then bottom-to-top.
styleGoogleSlidesShapeStyle shapes in Google Slides
unlockFileUnlock a previously locked file by removing content restrictions, restoring full edit access.
updateCalendarEventUpdate an existing calendar event
updateDimensionGroupCollapse or expand an existing row or column group. Indices are 0-based and the interval is half-open [startIndex, endIndex). Use listDimensionGroups first to find the group's range and depth.
updateGoogleDocUpdate an existing Google Doc (replaces all content). The replacement is one atomic batchUpdate, so a failure leaves the document unchanged rather than wiped. For multi-tab docs, specify tabId to replace a single tab's content; leaves other tabs untouched.
updateGoogleSheetUpdate an existing Google Sheet. By default uses RAW mode which stores values as-is. Set valueInputOption to 'USER_ENTERED' only when you need formulas to be evaluated.
updateGoogleSheetIfUnchangedWrite cell values only if the guarded area has not changed since you read it, and get back what was overwritten so the change can be undone. Call once with dryRun:true to obtain the fingerprint, then again passing it as expectedFingerprint. IMPORTANT: this is optimistic and NOT atomic. The Sheets API has no compare-and-swap - unlike Docs, where ifRevisionId is enforced by the API itself - so the check happens in this server, and a write landing in the gap between the read and the write (well under a second) is not caught. It catches the case that actually happens: the model changed since you l…
updateGoogleSlidesUpdate an existing Google Slides presentation
updateGoogleSlidesSpeakerNotesUpdate speaker notes for a specific slide in Google Slides
updatePermissionUpdate an existing permission role
updateTextFileUpdate an existing text or markdown file
uploadFileUpload a file (any type: image, audio, video, PDF, etc.) to Google Drive, either from a local path on the server or from base64-encoded content. When fileId is provided, uploads the content as a new version of that existing file (in-place update) instead of creating a new file.
uploadPdfWithSplitUpload PDF and optionally split into chunked parts (metadata split plan for now)
Signals
- Stars
- 230
- Forks
- 118
- Open issues
- 2
- Contributors
- 36
- Last commit
- Oct 15, 2026 (13 days ago)
- Last release
- Oct 15, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.piotr-agier/google-drive-mcp- Version
- 2.12.0
- Auth
- API key
- Packages
- npm @piotr-agier/google-drive-mcp
- License
- MIT
- Repository
- github.com/piotr-agier/google-drive-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Google Drive MCP. Agent Mart. https://agentmart.dev/connectors/piotr-agier-google-drive-mcp (last updated 2026-10-24)