Mariana Google MCP
mariana-google-mcp
Claude CodeからGmail、Googleカレンダー、Google連絡先にアクセスできるようにするカスタムMCP(Model Context Protocol)サーバーです。安全性を最優先したデフォルト設定になっています。
設計思想
このサーバーは、誤操作による損害のリスクなしに、AIにGoogleワークスペースの管理を支援させたいユーザーのために構築されています。
メールの送信不可。 下書きは作成できますが、送信にはGmailでの手動操作が必要です。
削除の禁止。 Gmailでは「To Be Deleted(削除予定)」ラベルを使用します(ソフトデリート)。カレンダーではイベントタイトルの先頭に「DELETE - 」を付加します。Google UI上で確認し、実行してください。
すべての変更をログに記録。 追記専用のJSONLアクションログに、タイムスタンプ、ツール名、アカウント、概要を含むすべての書き込み操作が記録されます。
マルチアカウント対応。 個人用アカウントと仕事用アカウントを名前付きエイリアスで管理できます。
Related MCP server: gmail-drive-mcp-server
セットアップ
1. Google Cloudプロジェクト
Google Cloud Console にアクセスします
新しいプロジェクトを作成する(または既存のものを使用する)
以下の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ラベル/フォルダを一覧表示する |
| メールの下書きを作成する(送信はしません) |
| 新しいラベルを作成する( |
| 1つ以上のメッセージにラベルを適用する |
| 1つ以上のメッセージからラベルを削除する |
| フィルタールールを作成する(一致条件 → アクション) |
| ソフトデリート:「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.-