An MCP server that provides tools to interact with Gmail, including searching threads, reading messages, managing drafts, and processing attachments
Gmail MCP server has 11 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-150 chars, mostly adequate) and input schemas with type definitions. However, output schemas are completely undocumented, LLMs cannot predict what fields to expect from responses, breaking tool chaining. Parameter descriptions lack actionable constraints (no enums for status fields, no format specs for IDs). Error handling is absent from tool definitions. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Naming is verb-first and generally clear, but some tools like 'summarize_thread' conflate concerns (AI summarization + Gmail read). Missing pagination guidance for list_drafts and search_threads despite potentially large result sets.
Creates a new draft message in Gmail with optional attachments
Deletes a specific draft message from Gmail
Extracts text content from various attachment types (PDF, DOCX, images with OCR)
Downloads and retrieves a specific attachment from a Gmail message
Retrieves the full content of a specific Gmail message, including body and attachments
Retrieves detailed information about a specific Gmail thread including all messages and their content
Lists all draft messages in Gmail
No output schemas documented for any tool. LLMs cannot predict response structure, breaking tool chaining and forcing agents to guess field names for downstream calls.
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools marked READ_ONLY, WRITE, and DESTRUCTIVE in metadata but not exposed to LLM via schema annotations, preventing safe retry logic.
No error handling guidance in tool definitions. Agents cannot distinguish retryable errors from user-fixable ones. No recovery suggestions (e.g., 'If thread not found, try search_threads first').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Searches Gmail threads based on a query
Sends a message in Gmail, optionally as a reply to an existing thread
Generates an AI-powered summary of a Gmail thread using OpenAI
Updates an existing draft message in Gmail
Parameter constraints missing. 'maxResults' lacks min/max bounds (defaults to 10 if <=0, but no schema constraint). 'attachmentPaths' is array with no format/length guidance. No enums for status-like fields.
summarize_thread conflates two concerns: Gmail read + OpenAI API call. Requires OPENAI_API_KEY as implicit dependency (not documented as parameter or secret injection). Violates single-responsibility principle.