Security-hardened Google Workspace MCP Server for Claude Code - Gmail, Docs, Sheets, Slides, Calendar, Forms & Drive with exfiltration vectors removed
Server has 12 tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, search_, get_, create_, set_). Descriptions are present but vary in quality (avg ~150 chars, within baseline 194). All parameters have type definitions and descriptions. However, output schemas are not documented in the provided code, parameter constraints lack enums where applicable (e.g., export_format, corpora), and error handling guidance is absent. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Missing pagination details for list operations.
Create a new form using the title given in the provided form message in the request.
Retrieves content of a Google Doc or a Drive file (like .docx) identified by document_id. Native Google Docs: Fetches content via Docs API. Office files (.docx, etc.) stored in Drive: Downloads via Drive API and extracts text.
Retrieves the content of a specific Google Drive file by ID, supporting files in shared drives. Native Google Docs, Sheets, Slides → exported as text / CSV. Office files (.docx, .xlsx, .pptx) → unzipped & parsed with std-lib to extract readable text. Any other file → downloaded; tries UTF-8 decode, else notes binary.
Gets a download URL for a Google Drive file. The file is prepared and made available via HTTP URL. For Google native files (Docs, Sheets, Slides), exports to a useful format: Google Docs → PDF (default) or DOCX if export_format='docx'; Google Sheets → XLSX (default) or CSV if export_format='csv'; Google Slides → PDF (default) or PPTX if export_format='pptx'. For other files, downloads the original file format.
Get a form.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields without knowing response structure. All 12 tools lack documented return types.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications. create_form and set_publish_settings are WRITE operations but lack destructiveHint annotation. Agents cannot distinguish safe from unsafe tools.
Pagination parameters (page_size, page_token) present but no documentation of total count, next_cursor, or result limits. search_docs, list_docs_in_folder, search_drive_files, list_form_responses lack clarity on how to iterate large result sets.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Get one response from the form.
Lists all calendars for the authenticated user
Lists all Google Docs in a specified folder
List a form's responses.
Searches for Google Docs by name using Drive API (mimeType filter).
Searches for files and folders within a user's Google Drive, including shared drives.
Updates the publish settings of a form.
Parameter constraints not formalized as enums. export_format in get_drive_file_download_url lists options in description ('pdf', 'docx', 'xlsx', 'csv', 'pptx') but should be an enum. corpora in search_drive_files similarly lacks enum constraint.
No error handling guidance. Tools lack recovery hints (e.g., 'If document not found, try search_docs() first'). Agents cannot self-correct on failures.