MCP server that audits Google Workspace roles, groups, OAuth grants, and user hygiene.
Four tools with clear security audit focus, but significant gaps in schema completeness and parameter documentation. All tools have descriptions (10-100 chars, baseline 194), but most parameters lack type definitions in visible schemas. Tool names follow verb_noun pattern (audit_*) appropriately. No input validation guidance or error recovery hints. Schemas are minimal, most show empty {} or single optional string params without full JSON Schema structure. Output types are defined in TypeScript interfaces (AdminRoleAuditResult, etc.) but not exposed in tool registration. STDIO transport caps overall potential.
Audit high-privilege Workspace roles and identify the riskiest assignments.
Review Workspace groups for risky breadth, especially large or admin-adjacent groups.
Review third-party OAuth grants and highlight risky app scopes across Workspace users.
Find suspended or long-inactive Workspace users that deserve access review.
Input schemas are minimal or empty. audit_admin_roles has {} (no params), others have single optional string params without full JSON Schema type/format/constraints. Cannot validate LLM input or guide parameter selection.
Output schemas not documented in tool definitions. TypeScript interfaces (AdminRoleAuditResult, OAuthGrantAuditResult, etc.) exist in code but are not exposed to the MCP protocol layer. LLMs cannot plan downstream operations or extract fields reliably.
No error handling guidance. Tools return audit results but do not document failure modes (missing credentials, API errors, permission denied). No recovery hints like 'Set GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKEN' in tool descriptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2025-06-18+ | v2 |
Parameter descriptions are minimal. 'Optional email substring filter for the users to inspect' (audit_oauth_grants.user_filter) lacks format guidance, length limits, or examples of valid input. LLMs cannot infer whether to pass 'john' or '[email protected]'.
No pagination or result limits documented. audit_oauth_grants filters to first 25 users by default but does not expose this limit in the tool description or offer pagination parameters. Large workspaces may silently miss findings.