An MCP server that provides Gmail integration, allowing users to read, compose, and manage emails through the Gmail API
Gmail MCP server has 11 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-80 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 are minimal (e.g., 'The unique identifier of the email message to read' for message_id). No error handling guidance, no pagination support for list_emails/list_drafts despite potentially large result sets, and no confirmation pattern for destructive operations (delete_email). Tool naming is clear and verb-based (read_, list_, send_, create_, mark_, add_, remove_), following conventions well. Composition is reasonable, tools are single-purpose and chainable (e.g., list_emails → read_email). Security concern: no visible input validation, rate limiting, or permission checks in the provided code.
Add a label to an email
Create a draft email without sending it
Delete an email by its message ID
List recent email drafts (metadata only)
List recent emails from the inbox with optional filtering by query
List all available labels in the Gmail account
Mark an email as read
Mark an email as unread
No output schemas documented for any tool. LLMs cannot predict response structure, breaking tool chaining and forcing agents to guess field names. E.g., read_email returns message content but structure is unknown.
list_emails and list_drafts lack pagination (no limit, offset, or cursor parameters). Large mailboxes will return unbounded results, exhausting context windows and degrading LLM reasoning.
delete_email (destructive operation) has no confirmation or dry-run pattern. Agents can irreversibly delete emails without safeguards, risking data loss.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | <=2025-11-25 | v2 |
Read the full content of a specific email by its message ID
Remove a label from an email
Compose and send an email
No error handling guidance in tool descriptions. Agents cannot distinguish retryable errors (network timeout) from user-fixable errors (invalid email address) from fatal errors (auth failure).
Parameter descriptions are minimal and lack format/constraint details. E.g., 'query' in list_emails says 'Optional Gmail search query' but does not explain valid syntax or examples of what queries work.