Gmail MCP server with auto authentication support
Gmail MCP server has 11 tools with basic schemas and descriptions, but significant quality gaps. Tool names follow verb_noun convention (send_email, read_email, search_emails), which is good. However, descriptions are minimal (10-50 chars), parameter descriptions lack detail, and output schemas are not documented. No error handling guidance, no parameter constraints (enums, ranges), and no security annotations. The server exposes Gmail operations but lacks the LLM-optimization patterns needed for reliable agent use. Most tools score 35-50 individually.
Creates a new Gmail label
Deletes a Gmail label
Draft a new email
Finds a label by name
Creates label if it doesn't exist or returns existing label
Gets a detailed list of all Gmail labels
Modify email labels and properties
Retrieve the content of a specific email
Descriptions are too short (10-50 chars) and lack context. LLMs cannot determine when to select tools or what they return. E.g., 'Send a new email' does not explain prerequisites, return value, or when to use vs draft_email.
Parameter descriptions are missing or minimal. E.g., 'query' in search_emails lacks guidance on Gmail syntax; 'addLabels' and 'removeLabels' in modify_email lack type hints (array of what?). LLMs cannot infer parameter semantics.
No output schemas documented. Tools return data but LLMs do not know what fields to expect. E.g., read_email returns email content, but schema does not specify fields like 'from', 'to', 'subject', 'body', 'attachments'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Search emails using Gmail syntax
Send a new email
Updates an existing Gmail label
No error handling guidance. Tools do not explain what to do on failure (e.g., 'message not found', 'invalid label name'). Agents cannot self-correct or retry intelligently.
Naming inconsistency: createLabel, updateLabel, deleteLabel use camelCase; other tools use snake_case. Inconsistent naming confuses LLMs and violates verb_noun convention.