MCP server exposing Google Drive, Docs, and Sheets write operations (move, rename, delete, in-place edit) that the official Google Drive MCP doesn't.
54 tools with consistent naming (verb_noun pattern) and descriptions present for all. However, critical gaps: input schemas are not visible in the provided source code excerpt, only tool names, descriptions, and handler references are shown. Parameter descriptions, type definitions, and output schemas cannot be verified. Error handling guidance is absent. Batch tools (batch_doc_update, batch_sheet_update) show partial schema hints in comments but lack full JSON Schema visibility. Descriptions are adequate (100-200 chars typical) but lack actionable recovery guidance for errors. No tool annotations (readOnlyHint, destructiveHint) visible despite risk classifications in the tool list.
Accept all pending suggestions in a Google Doc.
Add a comment to a Google Doc or Sheet.
Add data validation rules to a range of cells.
Add a new sheet tab to a spreadsheet.
Append a row of values to the bottom of a sheet tab. Use for logs (expenses, time entries).
Append text to the end of a Google Doc. Use for logs, journals, running notes.
Input schemas not visible in source code. Cannot verify parameter types, descriptions, constraints, or validation. Per HARD SCORING RULE: tools without visible input schemas score 0 on schema dimension.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | <=2025-11-25 | v2 |
Promote a paragraph to a bulleted or numbered list item (or remove list bullets).
Promote a paragraph to a heading style (HEADING_1..HEADING_6, TITLE, SUBTITLE, NORMAL_TEXT) or set alignment, indent, line spacing.
Apply text formatting (bold, italic, underline, strikethrough, font size, color) to all occurrences of given text.
Bulk delete operations across many file IDs. Each underlying Drive API call is still individual, but the MCP wraps them with partial-failure semantics.
Bundle multiple Doc edits into one atomic Docs API batchUpdate call. Faster, cheaper, and atomic compared to N separate tool calls.
Bulk file operations across many file IDs. Each underlying Drive API call is still individual, but the MCP wraps them with partial-failure semantics.
Bundle multiple Sheet edits into one atomic call. Counterpart to batch_doc_update for Sheets.
Copy a Drive file. Bundles copy + optional rename + optional target folder in one call.
Create a chart in a spreadsheet.
Create a new Google Doc with optional initial content. Lands in the target folder (defaults to root).
Create a new Drive folder. Optionally inside a specific parent folder (defaults to root).
Create a shareable link to a Drive file.
Create a new Google Sheets spreadsheet with a named first tab. Lands in the target folder (defaults to root).
Delete columns from a sheet.
[REVERSIBLE] Move a Drive file or folder to Trash. The user can recover it from the Drive UI (drive.google.com/drive/trash) within 30 days. This MCP does NOT support permanent deletion — only the user can perform that action, directly via Drive.
[DESTRUCTIVE] Remove a paragraph cleanly, including its trailing newline (no blank line left behind). Match by exact text.
Delete rows from a sheet.
Delete a sheet tab from a spreadsheet.
Export a Google Doc to DOCX format.
Export a Google Doc or Sheet to PDF.
Export a Google Sheet to XLSX format.
Find and replace text across a Google Doc. Pass dry_run=true to count occurrences without modifying. Returns count of occurrences changed.
Find and replace text in a sheet tab. Pass dry_run=true to count matches without modifying.
Apply formatting (font, color, alignment, borders, number format) to a range of cells.
Read a Google Doc and return its paragraph-level structure: text, indices, named style, alignment, and optional inline style runs. Use this BEFORE editing a doc to know what is actually there.
Get owner, size, mime type, parents, sharing state, web links, and other metadata for any Drive file or folder.
Read a Google Sheet and return its tab metadata (sheet IDs, titles, row/column counts) and optionally cell values. Counterpart to get_document for Sheets.
Get a thumbnail image of a Drive file.
Insert content after (or before) a specific heading or paragraph identified by exact text.
Insert columns into a sheet.
Insert an inline image from a URL at an anchor paragraph. Optional explicit width/height in points.
Insert rows into a sheet.
Insert an empty table with N rows x M columns at an anchor paragraph. Populate cells with update_table_cell.
List all comments on a Google Doc or Sheet.
List a Drive folder contents. Sorted folders-first then alphabetically.
List all permissions (sharing) on a Drive file.
Move a Drive file or folder to a different parent folder.
Reject all pending suggestions in a Google Doc.
Rename a Drive file or folder (changes title only; file ID stable).
Rename a sheet tab.
Resolve a comment thread on a Google Doc or Sheet.
Restore a trashed file. Only works for trashed files, not permanently deleted ones.
Revoke a specific permission (sharing) on a Drive file.
Search Drive by name, full text, mime type, parent folder, modification time, or raw Drive query syntax.
Share a Drive file with users or groups. Specify role (viewer, commenter, editor).
Set a single cell value via A1 notation (e.g., "Sheet1!B7").
Set a 2D range of cells in one call. Values are rows x columns.
Set the content of a specific table cell (table_index, row, column).
No error handling guidance visible. Descriptions do not explain what to do if a call fails (e.g., 'file not found', 'permission denied', 'quota exceeded'). LLMs need recovery hints.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible in source. Risk classifications exist in the tool list (READ_ONLY, WRITE, DESTRUCTIVE, REVERSIBLE) but are not encoded in the MCP tool definitions.
Batch tools (batch_doc_update, batch_sheet_update) show partial schema in comments but lack full JSON Schema with operation type definitions, constraints, and per-operation error handling.
Output schemas not documented. LLMs cannot predict what fields to expect from responses, forcing them to guess or make extra discovery calls.