A specialized Model Context Protocol (MCP) server that integrates with Google services (Gmail, Calendar, etc.) through MCP. This server enables seamless integration of Google services into your AI workflows.
The server provides 12 tools with complete JSON Schema definitions and descriptions. However, several significant quality gaps prevent a higher score: (1) Five tools include a placeholder '_message' parameter with generic description ('A placeholder message to ensure properties are never empty'), which violates the principle that every parameter should serve a functional purpose. This is a code smell indicating the schema was retrofitted to avoid empty properties rather than designed naturally. (2) Tools lack structured output schemas, responses are not documented, making it unclear what fields agents can expect. (3) No error handling guidance is provided; tools do not indicate which errors are retryable, what to do if a resource is not found, or how to recover from failures. (4) Parameter descriptions are present but often lack format constraints, ranges, or dependencies (e.g., date format is stated as 'YYYY/MM/DD' but not validated; 'maxResults' lacks bounds). (5) Tool descriptions are adequate (avg ~80 chars) but could be more prescriptive about when to use each tool vs. similar ones (e.g., difference between list_messages and search_messages is unclear from descriptions alone). (6) No explicit access control or permission declarations. The tools that perform destructive actions (delete_draft, send_email) should reference permissions or require confirmation patterns.
Creates a draft email that can be edited and sent later.
Deletes a draft email by its ID.
Retrieves details of a specific calendar event by its ID.
Retrieves the full content of a specific Gmail message by its ID.
Lists all calendars available in the user's Google Calendar account.
Lists all draft emails in the user's account.
Placeholder '_message' parameters in 5 tools (list_labels, list_calendars, get_message, list_events, get_event, search_events, delete_draft). These do not serve a functional purpose and indicate the schema was retrofitted to avoid empty properties rather than designed with natural parameter requirements. This violates single-responsibility principle and confuses LLM tool selection.
No documented output schemas for any tool. Agents cannot predict what fields will be returned, making multi-step tool chains unreliable. For example, does list_messages return message_id, thread_id, sender? Required for LLMs to chain tool calls effectively.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Lists upcoming events from the user's Google Calendar.
Lists all Gmail labels in the user's account.
Lists recent Gmail messages from the user's inbox with optional filtering.
Searches for calendar events using free text search.
Searches Gmail messages using Gmail's search syntax.
Sends an email with optional attachments, CC, and BCC recipients.
No error handling guidance. Tools do not indicate what errors are retryable, what the LLM should do if a resource is not found, or recovery steps. For example, delete_draft provides no guidance if the draft ID is invalid or already deleted.
Parameter descriptions lack format constraints and ranges. Date parameters state format as 'YYYY/MM/DD' textually but not via JSON Schema format or pattern. maxResults parameters lack min/max bounds. LLMs cannot self-validate inputs without explicit constraints.
Tool descriptions do not clarify selection logic. For example, list_messages vs search_messages both retrieve messages but descriptions do not explain when to use each. Similarly, list_events vs search_events lack clear differentiation. LLMs will struggle to choose the right tool.
Destructive tools (delete_draft, send_email) lack permission gates or confirmation patterns. No indication of what authorization is required or whether a dry-run or confirmation step is available. Agents could accidentally send emails or delete drafts without safeguards.
No pagination or result-limiting guidance. Tools accepting maxResults (e.g., list_messages, list_events) do not document what happens if the actual result set exceeds the limit. No indication of total count or next_cursor for large datasets, risking context window exhaustion.