Skip to main content
Glama
marianasmall

Mariana Google MCP

by marianasmall

mariana-google-mcp

Un servidor MCP (Model Context Protocol) personalizado que brinda a Claude Code acceso a Gmail, Google Calendar y Google Contacts, con valores predeterminados centrados en la seguridad.

Filosofía de diseño

Este servidor está diseñado para un operador que desea que la IA ayude a gestionar su espacio de trabajo de Google sin riesgo de daños accidentales:

  • No envía correos electrónicos. Puedes redactar borradores, pero el envío requiere una acción manual en Gmail.

  • No elimina nada. Gmail utiliza una etiqueta "To Be Deleted" (eliminación lógica). Calendar antepone "DELETE - " a los títulos de los eventos. Tú revisas y confirmas en la interfaz de Google.

  • Cada cambio queda registrado. Un registro de acciones en formato JSONL de solo adición registra cada operación de escritura con marcas de tiempo, nombre de la herramienta, cuenta y resumen.

  • Soporte para múltiples cuentas. Gestiona cuentas personales y de trabajo con alias personalizados.

Related MCP server: gmail-drive-mcp-server

Configuración

1. Proyecto de Google Cloud

  1. Ve a Google Cloud Console

  2. Crea un proyecto nuevo (o utiliza uno existente)

  3. Habilita estas API:

    • Gmail API

    • Google Calendar API

    • People API (para contactos)

  4. Crea credenciales de OAuth 2.0:

    • Tipo de aplicación: Aplicación de escritorio

    • Descarga el ID de cliente y el secreto de cliente

2. Instalación y compilación

git clone https://github.com/marianasmall/mariana-google-mcp.git
cd mariana-google-mcp
npm install
npm run build

3. Añadir a Claude Code

Añade esto a tu ~/.claude.json bajo mcpServers:

{
  "mcpServers": {
    "mariana-google-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/mariana-google-mcp/dist/index.js"],
      "env": {
        "GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
        "GOOGLE_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Reemplaza /path/to/ con la ruta real a tu clon y completa tus credenciales de OAuth.

4. Autenticación

Después de reiniciar Claude Code, ejecuta la herramienta google_auth. Se abrirá una ventana del navegador para el consentimiento de OAuth. Una vez autorizado, tu token se almacenará localmente y se actualizará automáticamente.

Herramientas disponibles (19)

Autenticación y estado

Herramienta

Descripción

google_auth

Autentica una cuenta de Google mediante el flujo de navegador OAuth

google_status

Comprueba el estado de conexión de todas las cuentas configuradas

Gmail (9 herramientas)

Herramienta

Descripción

gmail_search

Busca mensajes usando la sintaxis de consulta de Gmail

gmail_read

Lee un mensaje específico por ID (contenido completo)

gmail_list_labels

Lista todas las etiquetas/carpetas de Gmail

gmail_draft

Crea un borrador de correo electrónico (NO lo envía)

gmail_create_label

Crea una nueva etiqueta (admite anidamiento con /)

gmail_apply_label

Aplica una etiqueta a uno o más mensajes

gmail_remove_label

Elimina una etiqueta de uno o más mensajes

gmail_create_filter

Crea una regla de filtro (criterios de coincidencia → acciones)

gmail_move_to_delete

Eliminación lógica: mueve mensajes a una etiqueta "To Be Deleted"

Calendar (6 herramientas)

Herramienta

Descripción

calendar_list

Lista los próximos eventos del calendario

calendar_search

Busca eventos por palabra clave

calendar_get

Obtiene los detalles completos de un evento específico

calendar_create

Crea un evento (NO envía invitaciones por defecto)

calendar_update

Modifica un evento existente (NO notifica a los asistentes por defecto)

calendar_flag_delete

Eliminación lógica: antepone "DELETE - " al título del evento

calendar_availability

Comprueba el estado de disponibilidad para un rango de fechas

Contactos (2 herramientas)

Herramienta

Descripción

contacts_search

Busca contactos por nombre, correo electrónico o teléfono

contacts_list

Lista los contactos, opcionalmente filtrados por grupo

Soporte para múltiples cuentas

Puedes autenticar varias cuentas de Google con nombres amigables:

google_auth account_name: "primary"
google_auth account_name: "newsletters"
google_auth account_name: "work"

La mayoría de las herramientas aceptan un parámetro opcional account. Si se omite, utilizan la cuenta predeterminada. Usa google_status para ver todas las cuentas configuradas y su estado.

Archivos de configuración

Toda la configuración se almacena en ~/.config/mariana-google-mcp/:

Archivo

Propósito

config.json

Registro de cuentas (nombres, hashes de correo, valores predeterminados)

tokens/<hash>.json

Tokens de OAuth por cuenta (actualizados automáticamente)

actions.jsonl

Registro de solo adición de todas las mutaciones

Los tokens se almacenan mediante el hash del correo electrónico, no el correo en texto plano, para una capa de indirección.

Registro de acciones

Cada operación de escritura (borradores, creación/actualización de calendario, eliminaciones lógicas) se registra en ~/.config/mariana-google-mcp/actions.jsonl en este formato:

{"timestamp":"2026-04-03T10:30:00.000Z","tool":"gmail_draft","account":"primary","summary":"Draft created: subject='Meeting follow-up'"}

El registro es de solo adición y nunca es modificado por el servidor. Revísalo en cualquier momento para auditar lo que ha hecho Claude.

Bifurcación y uso

Para usar esto con tu propia cuenta de Google:

  1. Haz un fork de este repositorio

  2. Crea tu propio proyecto de Google Cloud y credenciales de OAuth (ver Configuración arriba)

  3. Compila y apunta tu configuración de Claude Code al dist/index.js de tu fork

  4. Ejecuta google_auth para autenticarte

No se necesitan cambios en el código: todos los datos específicos de la cuenta residen en archivos de configuración y variables de entorno.

Stack tecnológico

  • TypeScript

  • @modelcontextprotocol/sdk — Implementación del protocolo MCP

  • googleapis — Cliente de la API de Google

  • google-auth-library — Gestión de tokens OAuth2

  • zod — Validación de entrada

Licencia

MIT

Available Tools

16 tools
calendar_availabilityC

Check free/busy status for a date or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
date_startYesStart date/time (ISO 8601)
date_endNoEnd date/time (ISO 8601, defaults to end of start day)
calendar_idNoCalendar IDprimary
accountNoAccount name

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but fails to specify critical details: the return format (boolean availability vs. time blocks), whether the operation is read-only, or how multi-calendar queries behave. It mentions 'free/busy' but doesn't explain what data structure is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of a single, efficient sentence with no redundant words or filler. It is front-loaded with the action verb ('Check') and immediately specifies the target resource and scope, demonstrating optimal information density for its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and output schema, the description is insufficiently complete. It fails to describe the return value format (essential for a query tool without output schema documentation) and omits behavioral context such as default calendar selection behavior or multi-account handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage, establishing a baseline of 3. The description loosely references 'date or date range' which maps to date_start and date_end, but adds no additional semantic context for 'calendar_id' or 'account' parameters beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the core function ('Check free/busy status') and scope ('for a date or date range'), distinguishing it from sibling tools like calendar_create or calendar_update. However, it does not explicitly differentiate from calendar_get or calendar_search, which might also query date ranges but return full event details rather than availability status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives (e.g., when to use availability check vs. searching events), nor does it mention prerequisites like authentication requirements or necessary permissions despite the presence of an 'account' parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_createA

Create a calendar event. Does NOT send invites by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesEvent title
startYesStart time (ISO 8601, e.g. '2026-04-10T14:00:00-07:00')
endYesEnd time (ISO 8601)
descriptionNoEvent description
locationNoEvent location
attendeesNoAttendee email addresses
send_invitesNoSend invite emails (default: false)
calendar_idNoCalendar IDprimary
accountNoAccount name

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It successfully highlights the critical default behavior regarding invite sending, but omits other important behavioral traits such as idempotency, conflict handling, or what the tool returns upon success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two highly efficient sentences. The first establishes purpose immediately; the second delivers critical behavioral information about invite defaults. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema (9 parameters, 100% documented) and lack of output schema, the description adequately covers the essential creation functionality and highlights the non-obvious invite behavior. It would benefit from mentioning the return value (e.g., created event ID) since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description reinforces the send_invites parameter's default behavior but does not add additional semantic context (format details, examples, or relationships) beyond what the well-documented schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Create a calendar event' with a clear verb and resource. It distinguishes itself from sibling tools (calendar_update, calendar_get, calendar_list) by focusing on creation rather than modification or retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage guidance by highlighting that it 'Does NOT send invites by default,' alerting agents to set send_invites=true if invitations are needed. However, it lacks explicit guidance on when to use this versus calendar_update or prerequisites like checking calendar_availability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_flag_deleteA

Soft-delete: prepend 'DELETE - ' to event title. Does NOT actually delete the event.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID to flag
calendar_idNoCalendar IDprimary
accountNoAccount name

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and successfully discloses the non-destructive nature and exact string manipulation performed. Missing idempotency details (e.g., double-prefixing risk) and return value description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: first defines the mechanism, second clarifies the safety constraint. Perfectly front-loaded with the most critical distinction (soft vs hard delete).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple flagging operation with no annotations. Covers the essential behavioral contract, though return value specification would strengthen completeness given the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are fully documented in the schema. The description focuses on behavior rather than repeating parameter documentation, which is appropriate given the comprehensive schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Explicitly states the specific action (soft-delete by prepending 'DELETE - ' to title) and clearly distinguishes from actual deletion, differentiating it from potential hard-delete siblings and general update tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides crucial behavioral context by clarifying 'Does NOT actually delete the event,' which guides the agent away from using this when true deletion is needed. Lacks explicit guidance on when to prefer this over calendar_update or if a hard-delete alternative exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_getA

Get full details of a specific calendar event.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID
calendar_idNoCalendar IDprimary
accountNoAccount name

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. The verb 'Get' correctly implies a read-only operation, but the description omits error behavior (e.g., event not found), what constitutes 'full details' (attendees, attachments, recurrence rules), or any rate limiting concerns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence of nine words with no redundancy. It front-loads the essential information (action + resource) and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 3-parameter read operation with 100% schema coverage and no nested objects, the description is sufficient. While there is no output schema, the phrase 'full details' provides minimal compensation; however, the agent would benefit from knowing the specific fields returned (attendees, location, etc.).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, establishing a baseline score of 3. The description adds no additional parameter semantics (e.g., it doesn't explain that 'calendar_id' defaults to 'primary' or that 'account' specifies which authorized Google account to query), but it doesn't need to given the schema completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and resource ('calendar event') with scope ('full details', 'specific'). It implicitly distinguishes from siblings like calendar_list or calendar_search by emphasizing 'specific' event retrieval, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by requiring an 'event_id' to get 'full details', suggesting this is for targeted lookups rather than browsing. However, it lacks explicit guidance on when to use this versus calendar_search (for finding events without IDs) or calendar_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_listB

List upcoming calendar events.

ParametersJSON Schema
NameRequiredDescriptionDefault
days_aheadNoDays to look ahead (default 7)
calendar_idNoCalendar ID (default: primary)primary
accountNoAccount name (default: primary)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full disclosure burden but offers minimal behavioral context. It mentions 'upcoming' implying future events, but omits: result ordering, pagination limits, whether cancelled events are included, time zone handling, or read-only safety assurances.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely efficient at four words. Front-loaded with imperative verb. No redundant or filler text; every word earns its place despite the brevity causing information gaps elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Minimum viable for a 3-parameter list operation with complete schema coverage. However, significant gaps remain: no output schema means return value format should be described (but isn't), and the absence of annotations leaves safety/behavioral traits undocumented. Adequate but clearly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for all three parameters (days_ahead, calendar_id, account). The description adds minimal semantic value beyond the schema, merely framing the operation as 'upcoming' which loosely aligns with days_ahead. Baseline score appropriate given schema completeness.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb (List) and resource (calendar events) with temporal scope (upcoming). However, it fails to differentiate from sibling tools like calendar_search (query-based) or calendar_get (specific event retrieval), which could confuse agent selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this versus calendar_search for filtering, calendar_get for specific events, or calendar_availability for free-busy checks. The agent must infer from the parameter schema alone that this is for time-ranged listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calendar_updateA

Modify an existing calendar event. Does NOT notify attendees by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
event_idYesEvent ID to update
titleNoNew title
startNoNew start time (ISO 8601)
endNoNew end time (ISO 8601)
descriptionNoNew description
locationNoNew location
send_updatesNoNotify attendees (default: false)
calendar_idNoCalendar IDprimary
accountNoAccount name

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosure. It successfully communicates the critical side effect regarding notification defaults but omits other important behavioral details such as partial vs. full replacement semantics, error handling for invalid event_ids, or idempotency guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two highly efficient sentences. The first states the purpose; the second delivers a critical behavioral warning. Every word earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with no output schema and no annotations, the description covers the essential action and safety-critical notification behavior but remains minimal. It adequately serves the complexity level but would benefit from mentioning error conditions or return value structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, establishing a baseline of 3. The description adds contextual meaning to the 'send_updates' parameter by emphasizing the user impact of the default (false) setting, but does not add significant semantic value beyond what the schema already documents for the other 8 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the core action ('Modify') and resource ('existing calendar event'), with 'existing' effectively distinguishing it from the sibling 'calendar_create'. However, it does not explicitly name sibling alternatives or clarify partial vs. full update semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a critical usage hint regarding attendee notifications ('Does NOT notify attendees by default'), which guides the agent on when to explicitly set the 'send_updates' parameter. However, it lacks explicit guidance on when to use this tool versus 'calendar_create' or other siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contacts_listC

List Google Contacts, optionally filtered by contact group.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupNoContact group name to filter by
accountNoAccount name (default: primary)
max_resultsNoMax results (default 25)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure, yet it omits critical details: it does not describe what contact fields are returned, whether pagination tokens are used beyond the max_results limit, or the authentication scope required. The phrase 'optionally filtered' implies group omission returns all contacts, but this is inferred rather than explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single 9-word sentence that front-loads the core action ('List Google Contacts') and efficiently qualifies it with the optional filter clause. There is no redundant or wasted text, though extreme brevity comes at the cost of the completeness expected for a tool lacking an output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description inadequately prepares an agent for invocation. It fails to describe the return structure (e.g., whether it returns full contact objects or summaries), error conditions (invalid group names), or the default behavior when all optional parameters are omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description mentions 'optionally filtered by contact group,' which aligns with the 'group' parameter in the schema. However, with schema description coverage at 100%, the schema already documents all three parameters (group, account, max_results). The description adds no semantic depth regarding the 'account' parameter (primary vs. secondary accounts) or the pagination behavior implied by 'max_results.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'List Google Contacts, optionally filtered by contact group,' providing a clear verb (List) and resource (Google Contacts). However, it fails to distinguish from the sibling tool 'contacts_search,' leaving ambiguity about whether this tool performs text-based searching or only group-based enumeration.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'contacts_search.' It does not specify prerequisites (such as authentication state) or exclusion criteria (e.g., when filtering by group is insufficient and search is required).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_draftA

Create a draft email. Does NOT send — the draft appears in Gmail for manual review and sending.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesRecipient email address
subjectYesEmail subject
bodyYesEmail body (plain text)
ccNoCC recipients (comma-separated)
bccNoBCC recipients (comma-separated)
accountNoAccount name (default: primary)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Successfully discloses key behavioral traits: persistence ('appears in Gmail'), non-immediate delivery ('manual review'), and write-operation nature. Could improve by mentioning return values or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. Front-loaded with action verb, second sentence provides critical behavioral constraint. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Appropriate for complexity level with rich input schema. Covers creation workflow and persistence. Minor gap: no mention of return value (draft ID) or success indication, which would be helpful given the lack of output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline applies. Description does not add parameter-specific guidance (e.g., format examples for comma-separated fields), but schema adequately documents all 6 parameters including the default 'primary' account.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Create') and resource ('draft email') with explicit scope limitation ('Does NOT send'). The clarification distinguishes it from sending operations and sibling tools like gmail_read or gmail_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clearly establishes the workflow (creates draft for manual review) and explicitly states what it does not do (send immediately). Lacks explicit naming of sibling alternatives (e.g., if a send tool exists), but provides sufficient context for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_list_labelsB

List all Gmail labels/folders for an account.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNoAccount name (default: primary)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'List' implies a read-only operation, the description fails to mention authentication requirements, rate limits, pagination behavior, or the structure/format of returned label data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of a single efficient sentence with no redundant words. It is appropriately front-loaded with the core action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool, the description meets minimum viability by identifying the core function. However, given the lack of output schema and annotations, gaps remain regarding return format and behavioral constraints that a more complete description would address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage for the single 'account' parameter, the schema already documents the default behavior. The description adds no parameter-specific context, but baseline 3 is appropriate since the schema is self-sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (List) and resource (Gmail labels/folders) with scope (all, for an account). It implicitly distinguishes from sibling tools like gmail_search or gmail_read by specifying 'labels/folders' rather than messages/emails, though it does not explicitly contrast with alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., when to list all labels vs searching for specific messages), nor does it mention prerequisites like authentication requirements or default account behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_move_to_deleteA

Soft-delete: move messages to a 'To Be Deleted' label. Does NOT delete or trash messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idsYesArray of Gmail message IDs to move
accountNoAccount name (default: primary)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full disclosure burden. It successfully clarifies the soft-delete semantics (label-based, reversible, distinct from Gmail's trash mechanism) and manages expectations about message safety. It could improve by stating whether the 'To Be Deleted' label is auto-created or must exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The first sentence front-loads the core mechanism (soft-delete via label movement). The second sentence delivers a critical safety constraint. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool without output schema, the description adequately covers the essential non-obvious behavior (soft vs hard deletion). It could enhance completeness by noting whether the operation is idempotent or if the target label is created automatically.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, documenting both message_ids and account parameters. The description mentions 'messages' generically but adds no specific syntax guidance, format examples, or semantic constraints beyond what the schema already provides. Baseline 3 is appropriate when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action ('move messages'), the destination ('To Be Deleted' label), and the nature of the operation ('Soft-delete'). It clearly distinguishes from permanent deletion and distinguishes from siblings like gmail_read or gmail_search by specifying this is a labeling/mutation action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear negative guidance ('Does NOT delete or trash messages') which signals when NOT to use this tool. However, it stops short of explicitly naming which sibling tool to use for permanent deletion or trashing, though it implies this is a preliminary step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gmail_readA

Read a specific Gmail message by ID. Returns full message content.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_idYesGmail message ID
accountNoAccount name (default: primary)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Adds valuable behavioral context by stating 'Returns full message content' (disclosing output granularity). However, missing auth requirements, rate limits, and whether this operation marks messages as read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: first states operation, second states return value. Front-loaded and appropriately sized for tool complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple 2-parameter structure, 100% schema coverage, and lack of output schema, the description adequately covers core functionality by mentioning the return value. Would benefit from auth scope or error handling mention, but sufficient for a read-only retrieval operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already documents both parameters. Description references 'by ID' acknowledging the required parameter, but doesn't add syntax details, format constraints, or semantic meaning beyond what the schema provides. Baseline 3 appropriate for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States specific verb ('Read'), resource ('Gmail message'), and access pattern ('by ID'). Clearly distinguishes from sibling tools like gmail_search (which finds messages) and gmail_draft (which creates).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies prerequisite (needing a message_id) by specifying 'by ID', suggesting prior use of gmail_search. However, lacks explicit guidance on when to use vs. alternatives or prerequisite steps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_authA

Authenticate a Google account. Opens a browser for OAuth consent. Use this to add a new account or re-authenticate an existing one.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_nameNoFriendly name for this account (e.g. 'primary', 'newsletters')primary

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden. It successfully reveals the interactive nature ('Opens a browser') and dual capability (new vs. re-authentication). However, it omits details about token storage/persistence, error handling, blocking behavior, or OAuth scopes requested.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, optimally structured: purpose first, behavioral mechanism second, usage context third. Every sentence conveys essential information without redundancy. Front-loaded with the core verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Appropriately complete for a single-parameter authentication utility without output schema. Covers what the tool does, how it behaves, and when to invoke it. Minor gap: could explicitly state that authentication is required before using the sibling calendar/contacts/gmail tools to establish the dependency chain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (account_name fully documented with examples). The description does not add additional parameter semantics, but baseline 3 applies since the schema already provides complete coverage. No contradiction or elaboration present.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Authenticate'), resource ('Google account'), and mechanism ('Opens a browser for OAuth consent'). It effectively distinguishes this prerequisite tool from its operational siblings (calendar, gmail, contacts tools) by focusing solely on account authentication.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('add a new account or re-authenticate an existing one'), providing clear scenarios for invocation. However, it doesn't explicitly clarify that this should be used as a prerequisite before invoking the sibling Google tools, though this is somewhat implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_statusA

Check connection health for all configured Google accounts. Shows token status and last action.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden. It successfully indicates the tool surfaces 'token status and last action', but omits details on failure modes, whether checks are live vs cached, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero redundancy: the first declares the action, the second declares the output. Every word earns its place and the critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter diagnostic tool without annotations or output schema, the description adequately compensates by indicating what information is returned (token status, last action), though it could specify the return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema contains zero parameters, triggering the baseline score of 4. The description implicitly confirms no inputs are required by stating it checks 'all configured' accounts, consistent with the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Check connection health') and scope ('for all configured Google accounts'), clearly positioning this as a diagnostic tool distinct from its operational siblings like calendar_create or gmail_read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the diagnostic nature implies use during troubleshooting or initial setup, the description lacks explicit when-to-use guidance, prerequisites, or comparison to the google_auth sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv1.0.0
    • First observedcalendar_availability
    • First observedcalendar_create
    • First observedcalendar_flag_delete
    • First observedcalendar_get
    • First observedcalendar_list
    • First observedcalendar_search
    • First observedcalendar_update
    • First observedcontacts_list
    • First observedcontacts_search
    • First observedgmail_draft
    • First observedgmail_list_labels
    • First observedgmail_move_to_delete
    • First observedgmail_read
    • First observedgmail_search
    • First observedgoogle_auth
    • First observedgoogle_status

TDQS

A3.6/5.0

Scored across 16 tools

Disambiguation5/5

Tools are cleanly separated by domain (calendar_, contacts_, gmail_, google_) with distinct actions within each domain. No overlapping functionality between tools like calendar_flag_delete and gmail_move_to_delete, as prefixes clearly indicate target services.

Naming Consistency5/5

Consistent snake_case throughout with clear resource_action pattern (e.g., calendar_create, gmail_read, contacts_search). All 16 tools follow the same naming convention without mixing styles or verb forms.

Tool Count4/5

16 tools is slightly above the ideal 3-15 range but reasonable given it covers three distinct Google services (Calendar, Gmail, Contacts) plus authentication. Each tool serves a specific purpose without redundancy.

Completeness3/5

Calendar has strong CRUD coverage (create, get, update, list, search, soft-delete). Gmail covers reading, drafting, and soft-delete but lacks send functionality (by design). Contacts is notably incomplete with only read operations (list/search) and no create, update, or delete capabilities.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables Claude to interact with Google Workspace services including Gmail, Drive, Sheets, Docs, and Calendar. Provides comprehensive tools for reading, creating, and managing emails, files, spreadsheets, documents, and calendar events with built-in safety controls and audit logging.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Connects multiple Gmail and Google Calendar accounts to Claude Desktop locally, enabling email management (search, send, draft, label) and calendar operations (list events, search) via natural language.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude to read and manage your Gmail account, including listing, searching, sending, drafting, replying to, archiving, labeling, and trashing emails via the Gmail API.
    -