Mariana Google MCP
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 项目
创建一个新项目(或使用现有项目)
启用以下 API:
Gmail API
Google Calendar API
People API(用于联系人)
创建 OAuth 2.0 凭据:
应用程序类型:桌面应用
下载客户端 ID 和客户端密钥
2. 安装与构建
git clone https://github.com/marianasmall/mariana-google-mcp.git
cd mariana-google-mcp
npm install
npm run build3. 添加到 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)
身份验证与状态
工具 | 描述 |
| 通过 OAuth 浏览器流程验证 Google 账户 |
| 检查所有已配置账户的连接健康状况 |
Gmail (9 个工具)
工具 | 描述 |
| 使用 Gmail 查询语法搜索邮件 |
| 通过 ID 读取特定邮件(完整内容) |
| 列出所有 Gmail 标签/文件夹 |
| 创建邮件草稿(不会发送) |
| 创建新标签(支持使用 |
| 将标签应用于一封或多封邮件 |
| 从一封或多封邮件中移除标签 |
| 创建过滤规则(匹配条件 → 操作) |
| 软删除:将邮件移动到“To Be Deleted”标签 |
日历 (6 个工具)
工具 | 描述 |
| 列出即将到来的日历活动 |
| 按关键字搜索活动 |
| 获取特定活动的详细信息 |
| 创建活动(默认不会发送邀请) |
| 修改现有活动(默认不会通知参与者) |
| 软删除:在活动标题前加上“DELETE - ” |
| 检查日期范围内的空闲/忙碌状态 |
联系人 (2 个工具)
工具 | 描述 |
| 按姓名、电子邮件或电话搜索联系人 |
| 列出联系人,可选择按组过滤 |
多账户支持
您可以验证多个 Google 账户并使用友好名称:
google_auth account_name: "primary"
google_auth account_name: "newsletters"
google_auth account_name: "work"大多数工具接受可选的 account 参数。如果省略,则使用默认账户。使用 google_status 查看所有已配置的账户及其健康状况。
配置文件
所有配置均存储在 ~/.config/mariana-google-mcp/ 中:
文件 | 用途 |
| 账户注册表(名称、电子邮件哈希、默认值) |
| 每个账户的 OAuth 令牌(自动刷新) |
| 所有变更的仅追加日志 |
令牌按电子邮件哈希存储,而非明文电子邮件,以增加一层间接性。
操作日志
每一次写入操作(草稿、日历创建/更新、软删除)都会以以下格式记录到 ~/.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 账户:
分叉此仓库
创建您自己的 Google Cloud 项目和 OAuth 凭据(见上文“设置”)
构建并将您的 Claude Code 配置指向您分叉仓库的
dist/index.js运行
google_auth进行验证
无需更改代码 — 所有账户特定的数据都存储在配置文件和环境变量中。
技术栈
TypeScript
@modelcontextprotocol/sdk— MCP 协议实现googleapis— Google API 客户端google-auth-library— OAuth2 令牌管理zod— 输入验证
许可证
MIT
Available Tools
16 toolscalendar_availabilityC
Check free/busy status for a date or date range.
| Name | Required | Description | Default |
|---|---|---|---|
| date_start | Yes | Start date/time (ISO 8601) | |
| date_end | No | End date/time (ISO 8601, defaults to end of start day) | |
| calendar_id | No | Calendar ID | primary |
| account | No | Account name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Event title | |
| start | Yes | Start time (ISO 8601, e.g. '2026-04-10T14:00:00-07:00') | |
| end | Yes | End time (ISO 8601) | |
| description | No | Event description | |
| location | No | Event location | |
| attendees | No | Attendee email addresses | |
| send_invites | No | Send invite emails (default: false) | |
| calendar_id | No | Calendar ID | primary |
| account | No | Account name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event ID to flag | |
| calendar_id | No | Calendar ID | primary |
| account | No | Account name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event ID | |
| calendar_id | No | Calendar ID | primary |
| account | No | Account name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days_ahead | No | Days to look ahead (default 7) | |
| calendar_id | No | Calendar ID (default: primary) | primary |
| account | No | Account name (default: primary) |
TDQS
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.
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.
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.
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.
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.
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_searchC
Search calendar events by keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword | |
| time_min | No | Start of range (ISO 8601) | |
| time_max | No | End of range (ISO 8601) | |
| calendar_id | No | Calendar ID | primary |
| account | No | Account name |
TDQS
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 offers minimal information. While 'Search' implies a read-only operation, the description does not confirm this, nor does it disclose case-sensitivity behavior, search scope (titles vs. descriptions vs. attendees), rate limits, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence of five words that front-loads the primary action. While admirably brief, it may be overly concise given the tool's complexity (5 parameters, no annotations, no output schema), leaving significant capability (time filtering, multi-account support) unmentioned. No wasted words, but potentially insufficient length for the context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich parameter set (5 parameters including time ranges and calendar/account selection) and the absence of annotations or output schema, the description is incomplete. It exclusively describes the keyword search capability while failing to acknowledge time range filtering, calendar ID specification, or multi-account support, which are critical for effective invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, documenting all five parameters (query, time_min, time_max, calendar_id, account) including their types and formats. The description mentions 'by keyword' which aligns with the 'query' parameter, but adds no additional semantic context (e.g., query syntax, time range logic) beyond what the schema already provides. Baseline 3 is appropriate given the complete schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the core action ('Search') and resource ('calendar events') with the specific mechanism ('by keyword'). However, it does not explicitly differentiate this tool from siblings like 'calendar_get' (retrieve by ID) or 'calendar_list' (list all events), which would help an agent select the correct tool when multiple options exist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It does not indicate whether this is the preferred method for finding events by title, or when to use 'calendar_get' instead, nor does it mention prerequisites like authentication or calendar access permissions.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event ID to update | |
| title | No | New title | |
| start | No | New start time (ISO 8601) | |
| end | No | New end time (ISO 8601) | |
| description | No | New description | |
| location | No | New location | |
| send_updates | No | Notify attendees (default: false) | |
| calendar_id | No | Calendar ID | primary |
| account | No | Account name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Contact group name to filter by | |
| account | No | Account name (default: primary) | |
| max_results | No | Max results (default 25) |
TDQS
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.
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.
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.
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.
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.
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.
contacts_searchB
Search Google Contacts by name, email, or phone number.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (name, email, or phone) | |
| account | No | Account name (default: primary) | |
| max_results | No | Max results (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It identifies searchable fields but omits critical behavioral details: return format, partial vs exact matching semantics, case sensitivity, rate limits, or auth requirements. The term 'Search' implies read-only, but this isn't explicitly confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of nine words with no filler. Information is front-loaded and immediately actionable. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple search tool with complete schema coverage, but minimal given the lack of output schema and annotations. Missing guidance on what the tool returns (contact objects, IDs, etc.) and how to interpret results. Meets minimum viability but leaves operational gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 mirrors the schema's explanation of what the 'query' parameter accepts (name, email, phone) without adding syntax details, format examples, or clarifying the 'account' parameter's expected values beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (search) and resource (Google Contacts) with specific fields (name, email, phone number). Implicitly distinguishes from sibling 'contacts_list' by emphasizing search criteria, though it doesn't explicitly contrast the two tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context through the search fields mentioned (name, email, phone), but lacks explicit guidance on when to use this versus 'contacts_list' or other contact-related operations. No prerequisites or exclusions stated.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address | |
| subject | Yes | Email subject | |
| body | Yes | Email body (plain text) | |
| cc | No | CC recipients (comma-separated) | |
| bcc | No | BCC recipients (comma-separated) | |
| account | No | Account name (default: primary) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | Account name (default: primary) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| message_ids | Yes | Array of Gmail message IDs to move | |
| account | No | Account name (default: primary) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | Gmail message ID | |
| account | No | Account name (default: primary) |
TDQS
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.
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.
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.
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.
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.
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.
gmail_searchA
Search Gmail messages. Uses Gmail search syntax (e.g. 'from:name subject:topic').
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Gmail search query | |
| account | No | Account name (default: primary) | |
| max_results | No | Max results (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only discloses query syntax behavior (the example). It fails to state whether this is read-only, what the return format is (message IDs vs snippets), pagination behavior beyond max_results, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: first establishes purpose, second provides critical syntax guidance with example. Perfectly front-loaded and appropriately sized for the tool complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for the 3-parameter input schema, but since no output schema exists, the description should ideally mention what gets returned (e.g., message IDs, snippets) to complete the contract. Missing this creates ambiguity given the sibling gmail_read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description adds significant value by providing the concrete example 'from:name subject:topic', which clarifies the expected syntax for the 'query' parameter beyond the generic schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the specific verb 'Search' and resource 'Gmail messages', immediately distinguishing it from siblings like gmail_read (retrieve specific), gmail_draft (create), and gmail_move_to_delete (delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions 'Uses Gmail search syntax' which implies usage for filtering scenarios, but lacks explicit guidance on when to use versus gmail_read or whether search results need to be passed to other tools. No 'when-not-to-use' or prerequisite guidance provided.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| account_name | No | Friendly name for this account (e.g. 'primary', 'newsletters') | primary |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
16 tool updates
v1.0.0- First observed
calendar_availability - First observed
calendar_create - First observed
calendar_flag_delete - First observed
calendar_get - First observed
calendar_list - First observed
calendar_search - First observed
calendar_update - First observed
contacts_list - First observed
contacts_search - First observed
gmail_draft - First observed
gmail_list_labels - First observed
gmail_move_to_delete - First observed
gmail_read - First observed
gmail_search - First observed
google_auth - First observed
google_status
TDQS
Scored across 16 tools
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.
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.
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.
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
Related MCP Connectors
Multiple Google accounts (Gmail, Calendar, Drive, Contacts, Tasks) in one Claude connector.
Multiple Google accounts (Gmail, Calendar, Drive, Contacts, Tasks) in one Claude connector.
Multiple Gmail accounts, editable Google Sheets & Docs for AI agents. Deny-by-default access rules.
Give Claude only the Google Drive files you choose. Every action logged.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables 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.-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to manage Gmail, Google Calendar, and Google Drive, including sending emails, scheduling meetings, and organizing files, with integrated workflows.5MIT
- FlicenseNot gradedqualityBmaintenanceConnects 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.-
- FlicenseNot gradedqualityDmaintenanceEnables Claude to read and manage your Gmail account, including listing, searching, sending, drafting, replying to, archiving, labeling, and trashing emails via the Gmail API.-