MCP server for managing multiple Google Workspace accounts with Gmail and Drive access, featuring session-based access control, policy enforcement, and remote approval via passkey
Server defines 8 tools with complete JSON schemas and descriptions in French. All tools have input schemas with typed parameters and descriptions. However, descriptions are verbose (200-400+ chars) and lack LLM-optimized structure. Parameter descriptions are present but inconsistent in clarity. Output schemas are not documented. Error handling guidance is minimal. Session token management is a security concern, tokens appear as required parameters rather than server-side injection. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Naming is verb-noun compliant (list_, get_, create_, draft_create, read) but some tools conflate multiple concerns (drive_create handles both creation and content conversion).
Crée un fichier Drive sous parent_id, avec son contenu si `content` est fourni : le texte (markdown par défaut) est converti en Google Doc rédigé — sans `content`, le fichier est créé vide. Renvoie le propriétaire (`owner`, `owned_by_me`) pour vérifier le dépôt. Soumis aux zones (policy + grants) ; si refusé : appeler access_request kind=session_grant (ou kind=grant legacy poste entier).
Métadonnées d'un fichier Drive par file_id (lecture), propriétaire compris : `owner` (email) et `owned_by_me` (null = non renseigné par Drive, cas des Drive partagés).
Liste des fichiers Drive (lecture). Filtre optionnel parent / query. Renvoie `ownership` : le propriétaire de chaque fichier (owner, owned_by_me) — pour vérifier qu'un livrable est bien sur le bon compte.
Lit le CONTENU d'un fichier Drive en texte (lecture, sous verrou comme drive_get). Fichier Google : export texte — markdown par défaut pour un Doc, CSV pour un Sheet. Fichier ordinaire : renvoyé tel quel s'il est textuel ; les binaires (PDF, images) ne sont pas lisibles ici. Sert à relire un document déposé ou un modèle avant de le copier.
Session tokens exposed as required parameters instead of server-side injection. All 8 tools require 'session' parameter, violating secret-injection pattern. Tokens appear in logs, traces, and LLM context.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk levels. Tools marked READ_ONLY and WRITE in metadata but not exposed to LLM via schema annotations.
Output schemas not documented. LLMs cannot predict response structure for 'ownership', 'owner', 'owned_by_me' fields or pagination behavior. Breaks tool-chaining pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Crée un brouillon Gmail (to, subject, body). N'envoie JAMAIS le mail — l'humain envoie depuis Gmail ou élargit la policy.
Lit un message Gmail par id (lecture). Pas d'envoi.
Liste des messages Gmail du profil alias (lecture). Pas d'envoi.
Liste les profils Google locaux (alias), état connecté/verrouillé, services couverts par la policy. Appeler en premier pour choisir un alias.
Descriptions are verbose (250-400+ chars) and lack LLM-optimized structure. Baseline is 10-1024 chars with optimal ~50-200. Descriptions mix WHAT/WHEN/HOW without clear separation, wasting tokens.
drive_create conflates multiple concerns: file creation, content conversion (markdown→Doc), and permission grants. Should split into separate tools (create_file, convert_content, request_grant).