MCP server wrapping the local `gws` (Google Workspace) CLI, so sandboxed agents (Claude Cowork, etc.) can use Google Workspace through your host-side OAuth credentials.
gws-mcp exposes 10 tools with mostly complete schemas and descriptions. Naming follows verb_noun convention (gws_list_*, gws_get_*, gws_call, gcp_run). Descriptions are present and substantive (avg ~150 chars), exceeding the 10-char minimum. However, several tools lack parameter descriptions, and output schemas are not documented. The gws_call tool is particularly complex with 14 parameters, some undescribed. Error handling is basic, no recovery guidance or categorization. Security is sound (no credentials in params), but tool composition could be tighter (gws_call conflates multiple concerns).
Run a gcp profile helper command (ls, who, use, login) to manage Google Cloud profiles.
Call a Google Workspace API method with structured arguments.
Get the full text of a skill guide by name.
Run `gws [args...] --help` to discover services, resources, and methods available in the Google Workspace CLI.
List the Google Workspace services exposed by this MCP server. Respects the host's allowlist (GWS_MCP_ALLOWED_SERVICES).
List all available skill guides for common Google Workspace workflows.
gws_call tool conflates multiple concerns: parameter passing, output formatting, pagination, file upload, and dry-run. This violates single-responsibility principle and makes the tool harder for LLMs to reason about. Consider splitting into separate tools (gws_call_simple, gws_call_with_upload, gws_paginate) or at least grouping related params into sub-objects.
Output schemas are not documented for any tool. LLMs cannot plan downstream calls or extract required fields without knowing what each tool returns. Add explicit return type documentation (e.g., 'Returns: {services: string[], allowedServices: string[]}') to every tool.
gws_call parameter descriptions are incomplete or missing. 'params' and 'json' lack guidance on format (object vs JSON string). 'pageDelayMs' and 'pageLimit' lack range constraints. 'format' enum is present but no guidance on when to use each. Add constraints and examples to every parameter.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Show the currently active profile and whether its token is still valid.
List all available profiles and their status.
Switch to a different profile for subsequent calls in this session.
Get the JSON schema for a Google Workspace API method, including parameter and body shapes.
Error handling is minimal. Tools return raw gws CLI exit codes and stderr without recovery guidance. When gws_call fails with 'invalid_grant', the error message should suggest 'Run gws auth status to diagnose, or ask the user to refresh credentials.' Currently, LLMs receive only the exit code and stderr, forcing them to guess next steps.
gcp_run tool name is ambiguous. 'gcp_run' does not clearly signal that it manages Google Cloud profiles (login, switch, list). Rename to 'gcp_profile_*' (gcp_profile_list, gcp_profile_use, gcp_profile_login) to match the gws_profile_* naming convention and clarify intent.