Skip to main content
Glama
marianasmall

Mariana Google MCP

by marianasmall

mariana-google-mcp

一个自定义的 MCP (Model Context Protocol) 服务器,让 Claude Code 可以访问 Gmail、Google 日历和 Google 联系人,并采用安全优先的默认设置。

设计理念

此服务器专为希望 AI 协助管理其 Google 工作区且不希望发生意外损坏的用户而构建:

  • 不发送电子邮件。 您可以起草邮件,但发送需要手动在 Gmail 中操作。

  • 不删除任何内容。 Gmail 使用“To Be Deleted”(待删除)标签(软删除)。日历会在活动标题前加上“DELETE - ”。您需要在 Google UI 中进行审查和确认。

  • 记录每一次变更。 一个仅追加的 JSONL 操作日志会记录每一次写入操作,包括时间戳、工具名称、账户和摘要。

  • 多账户支持。 使用别名管理个人和工作账户。

Related MCP server: gmail-drive-mcp-server

设置

1. Google Cloud 项目

  1. 前往 Google Cloud Console

  2. 创建一个新项目(或使用现有项目)

  3. 启用以下 API:

    • Gmail API

    • Google Calendar API

    • People API(用于联系人)

  4. 创建 OAuth 2.0 凭据:

    • 应用程序类型:桌面应用

    • 下载客户端 ID 和客户端密钥

2. 安装与构建

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

3. 添加到 Claude Code

将此内容添加到 ~/.claude.json 中的 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"
      }
    }
  }
}

将 /path/to/ 替换为您克隆项目的实际路径,并填入您的 OAuth 凭据。

4. 身份验证

重启 Claude Code 后,运行 google_auth 工具。它将打开一个浏览器窗口进行 OAuth 授权。授权后,您的令牌将存储在本地并自动刷新。

可用工具 (19)

身份验证与状态

工具

描述

google_auth

通过 OAuth 浏览器流程验证 Google 账户

google_status

检查所有已配置账户的连接健康状况

Gmail (9 个工具)

工具

描述

gmail_search

使用 Gmail 查询语法搜索邮件

gmail_read

通过 ID 读取特定邮件(完整内容)

gmail_list_labels

列出所有 Gmail 标签/文件夹

gmail_draft

创建邮件草稿(不会发送)

gmail_create_label

创建新标签(支持使用 / 进行嵌套)

gmail_apply_label

将标签应用于一封或多封邮件

gmail_remove_label

从一封或多封邮件中移除标签

gmail_create_filter

创建过滤规则(匹配条件 → 操作)

gmail_move_to_delete

软删除:将邮件移动到“To Be Deleted”标签

日历 (6 个工具)

工具

描述

calendar_list

列出即将到来的日历活动

calendar_search

按关键字搜索活动

calendar_get

获取特定活动的详细信息

calendar_create

创建活动(默认不会发送邀请)

calendar_update

修改现有活动(默认不会通知参与者)

calendar_flag_delete

软删除:在活动标题前加上“DELETE - ”

calendar_availability

检查日期范围内的空闲/忙碌状态

联系人 (2 个工具)

工具

描述

contacts_search

按姓名、电子邮件或电话搜索联系人

contacts_list

列出联系人,可选择按组过滤

多账户支持

您可以验证多个 Google 账户并使用友好名称:

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

大多数工具接受可选的 account 参数。如果省略,则使用默认账户。使用 google_status 查看所有已配置的账户及其健康状况。

配置文件

所有配置均存储在 ~/.config/mariana-google-mcp/ 中:

文件

用途

config.json

账户注册表(名称、电子邮件哈希、默认值)

tokens/<hash>.json

每个账户的 OAuth 令牌(自动刷新)

actions.jsonl

所有变更的仅追加日志

令牌按电子邮件哈希存储,而非明文电子邮件,以增加一层间接性。

操作日志

每一次写入操作(草稿、日历创建/更新、软删除)都会以以下格式记录到 ~/.config/mariana-google-mcp/actions.jsonl:

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

该日志仅可追加,服务器绝不会对其进行修改。您可以随时查看它以审计 Claude 的操作。

分叉与使用

要将其用于您自己的 Google 账户:

  1. 分叉此仓库

  2. 创建您自己的 Google Cloud 项目和 OAuth 凭据(见上文“设置”)

  3. 构建并将您的 Claude Code 配置指向您分叉仓库的 dist/index.js

  4. 运行 google_auth 进行验证

无需更改代码 — 所有账户特定的数据都存储在配置文件和环境变量中。

技术栈

  • TypeScript

  • @modelcontextprotocol/sdk — MCP 协议实现

  • googleapis — Google API 客户端

  • google-auth-library — OAuth2 令牌管理

  • zod — 输入验证

许可证

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.
    -