An MCP server that provides email management capabilities for Gmail, allowing users to send, read, trash, and manage emails through the Gmail API
Gmail MCP server has basic tool definitions but significant quality gaps. All 5 tools have names and descriptions, but descriptions are minimal (10-50 chars, well below the 194-char baseline). Input schemas are present for 4/5 tools but lack depth, parameters have types and descriptions, but no enums, ranges, or format constraints. Output schemas are undocumented. Error handling is minimal (HttpError caught but responses lack recovery guidance). No tool annotations (readOnlyHint, destructiveHint). The send_email and trash_email tools are destructive but lack confirmation patterns. Parameter naming is inconsistent: 'recipient_id' should be 'recipient_email' for clarity. No pagination support for get_unread_emails despite potentially large result sets.
Retrieve all unread emails
Open an email in the browser
Read the content of a specific email
Send an email to the specified recipient
Move an email to trash
Destructive operations (send_email, trash_email) lack confirmation/dry-run patterns. No mechanism to prevent accidental sends or deletions.
Tool descriptions are too short (10-50 chars vs 194-char baseline). Descriptions lack WHEN to use, prerequisites, and state-modification warnings. LLMs cannot reliably select tools.
Output schemas are undocumented. LLMs do not know what fields to expect from tool responses, preventing downstream tool chaining and data extraction.
get_unread_emails lacks pagination (limit, offset, next_cursor). No result count or cap. Large mailboxes will return unbounded lists, exhausting context windows.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
Parameter 'recipient_id' is named ambiguously, should be 'recipient_email' to match the chat data model. LLMs may confuse it with a user ID.