Google Drive CRUD server with separate OAuth server using NestJS
Google Drive MCP has 11 tools with basic Zod schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly short) and input schemas with type definitions. However, descriptions lack actionable context for LLM selection, they state WHAT but not WHEN or WHY. Parameters are typed but many lack constraints (enums, ranges, patterns). Output schemas are not documented; responses are unstructured JSON blobs without field definitions. Error handling is minimal (generic try-catch returning error.message). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Destructive tools (delete-file, delete-files) lack confirmation patterns. No pagination guidance in list tools despite accepting pageToken. Tool composition is reasonable (separate create/update/delete), but parameter naming could be clearer (e.g., 'filePaths' vs 'file_paths' inconsistency).
Create multiple files in Google Drive
Create a new folder in Google Drive
Delete a file from Google Drive
Delete multiple files from Google Drive
Get the Google OAuth authorization URL
Get a specific file from Google Drive
List files from Google Drive
Output schemas not documented. Tools return unstructured JSON (e.g., 'Files retrieved successfully' + JSON.stringify(result)) without field definitions. LLMs cannot plan downstream calls or extract specific fields reliably.
Destructive tools (delete-file, delete-files) lack confirmation or dry-run patterns. No tool annotations (destructiveHint) to signal irreversibility. Agents can delete files without safeguards.
Descriptions are too short (40-50 chars) and lack context. 'List files from Google Drive' does not explain when to use list-files vs query-files, what fields are returned, or pagination behavior. LLMs cannot disambiguate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
List folders from Google Drive
Move multiple files to a different folder in Google Drive
Query files in Google Drive using a search query
Update an existing file in Google Drive
No parameter constraints (enums, ranges, patterns). 'pageSize' accepts any number; 'mimeType' is free-form; 'query' has no format guidance. LLMs will pass invalid values (negative pageSize, nonsense MIME types).
Error handling is generic. All errors return error.message without recovery guidance. 'Not authenticated' error does not suggest calling get-auth-url first. LLMs cannot self-correct.