Comprehensive, highly performant Google Workspace Streamable HTTP & SSE MCP Server for Calendar, Gmail, Docs, Sheets, Slides & Drive
Server has 6 tools with complete input schemas and descriptions. Naming follows verb_noun convention (list_, get_, create_, send_). Descriptions are detailed (100-250 chars) and explain prerequisites and OAuth scopes. However, output schemas are not documented in the visible code, only input schemas are defined. Parameters are well-typed with descriptions, but some lack constraints (e.g., page_size has no min/max bounds). Error handling guidance is absent from descriptions. No tool annotations (readOnlyHint, destructiveHint) are visible.
Create a new (standalone or container-bound) Apps Script project. Side effects: creates a new Apps Script project in Drive. Pass a parent_id of a Sheet/Doc/Form/Slides file ID to create a bound script; omit for a standalone script. To add files afterwards use update_script_content. Requires the script.projects OAuth scope.
List messages in a Google Chat space with sender names resolved. Use this to read a room/DM's recent messages. For text search across spaces use search_messages. For sending messages use send_message. For attachment downloads use download_chat_attachment. Senders are resolved to display names via the People API (both chat.read and contacts.readonly OAuth scopes required).
Retrieve the full source of one file in an Apps Script project. Use this after get_script_project has surfaced the file names. For project-wide overview use get_script_project. Requires the script.projects readonly OAuth scope.
Retrieve an Apps Script project's metadata and all file contents. Dumps every file in the project (gs/html/json) with a 200-char source preview. For the full content of one file use get_script_content. For writing use update_script_content. Requires the script.projects readonly OAuth scope.
Output schemas not documented. Tool descriptions explain inputs but do not specify what fields are returned, forcing LLMs to infer structure and risking downstream tool chaining failures.
Numeric parameters lack bounds. page_size and page_token parameters have no min/max constraints documented, allowing LLMs to pass invalid values (e.g., page_size=999999).
No error recovery guidance. Descriptions do not explain what to do if a tool fails (e.g., 'script not found, try list_script_projects first'). LLMs receive no actionable next steps on errors.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |
Find Apps Script projects by scanning the user's Drive. Uses Drive API search (mimeType='application/vnd.google-apps.script') because the Apps Script API has no list endpoint of its own. For content of a specific script use get_script_project or get_script_content. Requires the drive.readonly OAuth scope.
List Google Chat spaces (rooms and direct messages) the authenticated user is a member of. Use this to discover the `space_id` (in `spaces/<id>` format) needed for `get_messages`, `send_message`, and related Chat tools. The user only sees spaces they have joined — this will not surface public spaces in the workspace they haven't joined. Requires OAuth scope: `https://www.googleapis.com/auth/chat.spaces.readonly` (read-only).
Tool annotations missing. No readOnlyHint or destructiveHint visible in tool definitions. create_script_project is marked WRITE but lacks explicit destructiveHint annotation for agent safety.
Pagination not fully specified. list_script_projects and list_spaces accept page_size but do not document max limits or whether a total_count or next_cursor is returned.