multi-google-calendar-gmail-mcp
This server provides multi-account access to Google Gmail and Calendar services, allowing an MCP client (like Claude) to manage emails and calendar events across multiple Google accounts simultaneously.
Account Management
List connected accounts (
accounts_list): See all connected Google accounts and their aliases/nicknamesDiagnose setup (
check): Verify credentials, connected accounts, and API connectivity
Gmail
Search emails (
gmail_search): Use full Gmail query syntax (e.g.,from:,subject:,is:unread,has:attachment) across one or all connected accountsRead emails (
gmail_read): Fetch the full body of a specific message by IDList labels (
gmail_labels): View all label names for a given accountBatch-modify messages (
gmail_modify): Add/remove labels, archive, or mark up to 500 messages as read in one call (non-destructive — no deletion or trash)Create drafts (
gmail_draft): Compose a draft email without sending itSend emails (
gmail_send): Send an email from a connected account (with CC support; confirm with user first)
Google Calendar
List calendars (
calendar_list): View all calendars across one or all connected accountsList events (
calendar_events): Retrieve events within a date/datetime range across one or all accountsCreate events (
calendar_create_event): Create calendar events with optional location, description, attendees, and real email invitations (confirm with user first)
Configurable Access: Optionally restrict tool access or account visibility by editing a config.json file. Multiple accounts can be addressed by nickname or swept all at once using an "all" command.
Provides tools for searching, reading, labeling, modifying, drafting, and sending emails across multiple Gmail accounts.
Provides tools for listing calendars, retrieving events, and creating events with attendee invitations across multiple Google Calendar accounts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@multi-google-calendar-gmail-mcpfind unread emails across all my accounts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
multi-google-calendar-gmail-mcp
One small Python file that gives Claude (or any MCP client) Gmail and
Google Calendar across as many Google accounts as you want — a personal
Gmail, three Workspace domains, whatever. Each account gets a nickname;
every tool takes a nickname or "all" to sweep the whole fleet in one call.
"find every unread invoice across all five inboxes and label them Bookkeeping" — one tool call.
Why this one
Multi-account is the whole design, not a bolt-on. Most self-hosted Gmail MCPs authenticate one account. Here, connecting another account is one command + one browser click, and cross-account operations are native.
Minimal. One readable
server.py, three dependencies. If you want to know what it does, you can just read it.Bring your own credentials. Nothing is hosted, nothing phones home. You create your own (free) Google Cloud OAuth client, and your account keys live in a git-ignored folder on your machine. This repo never sees them.
Pairs naturally with apple-suite-mcp: that one reads whatever your Mac's built-in apps already see (zero setup, macOS only); this one speaks Google's APIs directly (real labels, batch operations up to 500 messages, drafts, calendar invites with attendees) and runs anywhere Python runs — including a headless Linux box.
Related MCP server: mcp-google-multi
Setup
Easy mode — let your AI install it
If you use Claude Code (or any coding agent), paste this and let it drive:
Read https://github.com/travisthetrashpanda/multi-google-calendar-gmail-mcp and install it for me: clone it, walk me through the one-time Google Cloud credential setup in its SETUP.md, help me connect my accounts with its
connectcommand, and register it with my MCP client.
The agent handles the fiddly parts and can diagnose failures with the
built-in check command; you just click Allow in the browser when Google
asks. (Sensible to read what you're installing first — it's one Python file.)
Manual mode
Requires uv (brew install uv on macOS).
git clone https://github.com/travisthetrashpanda/multi-google-calendar-gmail-mcp.git ~/multi-google-calendar-gmail-mcpOne-time Google Cloud setup (~15 min, free): follow SETUP.md — create a Cloud project, enable the Gmail and Calendar APIs, publish the consent screen (avoids 7-day token expiry), create a Desktop-app OAuth client, and drop
credentials.jsonin this folder. Heads-up: Google rejects app names containing the word "Google".Connect the accounts you choose (repeat per account, any alias you like — only accounts you connect are ever visible):
cd ~/multi-google-calendar-gmail-mcp uv run python server.py connect work uv run python server.py connect personalChanged your mind?
uv run python server.py disconnect workdeletes that account's key.Verify:
uv run python server.py checkRegister with your MCP client — e.g. Claude Code:
claude mcp add --scope user google -- uv run --directory ~/multi-google-calendar-gmail-mcp python server.pyor in a JSON MCP config:
{ "mcpServers": { "google": { "command": "uv", "args": ["run", "--directory", "/Users/YOU/multi-google-calendar-gmail-mcp", "python", "server.py"] } } }
Tools
Area | Tools |
Accounts |
|
Gmail |
|
Calendar |
|
Test any tool from the command line:
uv run python server.py test gmail_search '{"query": "is:unread", "account": "all", "limit": 5}'Scoping access (optional)
You already control access by choosing what to connect — but if you want a
client to see only a subset of connected accounts (or to remove tools
entirely), copy config.example.json to config.json:
{
"accounts": ["work", "personal"],
"disabled_tools": ["gmail_send"]
}Accounts not listed become invisible to every tool; tools in
disabled_tools are never even registered with the MCP client. Omit a key
(or the whole file) to allow everything. check reports active scoping.
Safety notes
There is deliberately no delete/trash tool — the most destructive operation is archiving (removing from inbox), which is reversible.
gmail_sendand attendee invitations send real email; MCP clients should confirm with the user first.credentials.jsonandtokens/are git-ignored. Treat thetokens/folder like passwords — don't put it in cloud-synced directories.
Credits
Sibling project of apple-suite-mcp; the two split the work of giving an AI assistant a complete view of your accounts — locally-visible vs. API-native.
Say thanks
This project is free to use, no strings attached. If it's useful to you, a ⭐ on this repo or a shout-out to @travisthetrashpanda is always appreciated — and if you build something on top of it, a link back here helps others find it.
License
MIT
Available Tools
11 toolsaccounts_listA
List connected Google accounts (alias -> email).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It implies a read-only operation ('list'), but does not disclose any potential behavioral traits (e.g., no mention of caching, authentication, or output limitations). Given the simplicity, a 3 is adequate.
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 sentence with 6 words, front-loading the essential information. Every word is necessary and no waste.
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 tool with no parameters, no output schema, and a simple read purpose, the description is complete. It specifies what is returned (alias -> email mapping).
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?
There are zero parameters, and schema coverage is 100% (empty schema). The description adds no extra parameter meaning, which is acceptable as there is nothing to document. The baseline for 0 params is 4.
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 'List connected Google accounts (alias -> email)' using a specific verb and resource, and the tool name 'accounts_list' matches this purpose. It distinguishes itself from sibling tools which are all calendar and Gmail related.
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 explicit use cases or alternatives are given, but the context of sibling tools (calendars, gmail) makes it obvious that this tool is for account listing. A slightly higher score would require explicit when-not guidance, which is unnecessary here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_create_eventA
Create an event, optionally inviting attendees by email (Google sends real invitations — confirm with the user first when inviting).
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| title | Yes | ||
| account | Yes | ||
| location | No | ||
| attendees | No | ||
| calendar_id | No | primary | |
| description | No | ||
| send_invites | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses invitation behavior (Google sends real invites). No annotations exist, so description carries burden. Missing details on other behaviors (e.g., date format, defaults).
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 with front-loaded action. Concise but could be slightly more structured. No wasted words.
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?
Lacks detail on required parameters (datetime format, account selection), no output schema info. Incomplete for a 9-parameter tool with no annotations.
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 0% schema description coverage, description only clarifies 'attendees' and 'send_invites' via 'optionally inviting'. No explanation for 7 other parameters (account, start, etc.).
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?
Clear verb 'Create' and resource 'event'. Distinguishes from sibling tools like calendar_events (read) and calendar_list (list calendars) by being the only creation tool.
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 warns about real invitations, advising user confirmation. Provides context-sensitive guidance, though lacks explicit alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_eventsA
List events between two ISO dates/datetimes across one or all accounts. calendar_id defaults to each account's primary calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| account | No | all | |
| calendar_id | No | primary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description lacks behavioral details such as pagination, rate limits, authorization, or handling of recurring events. Only mentions ISO date format. Inadequate for a listing tool without annotation safety net.
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 efficiently conveys core purpose and key details. No filler or 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 output schema exists, description covers main behavior: date range, account scope, calendar default. Could mention sorting, limits, or filtering, but not essential for basic use.
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 0%; description adds minimal meaning: only clarifies that calendar_id defaults to primary and that dates are ISO format. Other parameters (account, start, end) are not elaborated beyond their names and schema defaults.
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 'List events' with specifics: between two ISO dates/datetimes, across one or all accounts, and calendar_id defaults to primary. Distinguishes from siblings like calendar_create_event (create) and calendar_list (list calendars).
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 for listing events but provides no explicit guidance on when to use vs alternatives, nor when not to use. Sibling names suggest distinct purposes but no explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_listC
List calendars for one or all connected accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| account | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It does not mention side effects, authentication, or output format. The presence of an output schema mitigates but does not replace description context.
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 front-loaded sentence with no waste. However, it is under-specified, sacrificing completeness for brevity.
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 simple single-parameter schema and output schema, the description still lacks context on when to use this tool (e.g., to get calendar IDs for events), and does not explain the 'all' default behavior.
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?
Description adds meaning by stating 'for one or all connected accounts', linking the 'account' parameter to accounts. However, it does not specify value format or how to specify a single account. Schema coverage is 0% so description is essential.
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 specific verb (list) and resource (calendars), and distinguishes from siblings like calendar_events and calendar_create_event. However, it lacks title and could clarify that these are calendar objects, not events.
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 on when to use this tool vs alternatives like calendar_events or accounts_list. The agent is left to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
checkA
Diagnose setup: credentials file, connected accounts, and whether each account's Gmail API actually responds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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. It discloses that the tool checks credentials, accounts, and API responsiveness, which is sufficient for a diagnostic tool. However, it does not describe output format or behavior on failure, leaving minor ambiguity.
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, clear sentence with no extraneous words. It effectively conveys the tool's function without waste.
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 tool has no parameters, no output schema, and a simple diagnostic function, the description is fully complete. It covers what the tool checks without needing additional detail.
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 tool has zero parameters, and schema coverage is 100%. The description adds no parameter information, but none is needed. Baseline for 0 params is 4.
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 tool's purpose: 'Diagnose setup: credentials file, connected accounts, and whether each account's Gmail API actually responds.' It uses a specific verb (diagnose) and resource (setup), and distinguishes itself from sibling tools that perform other actions like sending or reading emails.
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 the tool is for verifying setup before using other Gmail tools, but does not explicitly state when to use it vs. alternatives or include exclusions. The context makes it clear, but a more explicit guideline would improve it.
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 (does NOT send). Safer default than gmail_send.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ||
| to | Yes | ||
| body | Yes | ||
| account | Yes | ||
| subject | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the key trait that the tool does not send, which is critical for safe usage. However, it omits other behavioral aspects such as authentication requirements, rate limits, or where drafts are stored, leaving gaps in transparency.
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 extremely concise—two short clauses that front-load the main purpose ('Create a draft') and add a critical safety note. Every word contributes value, with no wasted text.
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 tool's low complexity (5 parameters, no output schema), the description is too minimal. It does not explain return values, side effects beyond not sending, or any post-creation behavior. A more complete description would mention what happens after draft creation (e.g., draft ID returned, stored in drafts folder).
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 0%, and the description provides no additional meaning beyond the input schema. It does not explain any parameter, such as the required 'account', 'to', 'subject', or 'body', nor the optional 'cc'. The description fails to compensate for the lack of schema documentation.
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 ('Create a draft') and explicitly distinguishes it from the sibling tool 'gmail_send' by noting it does not send. This combination of specific verb and resource with sibling differentiation earns a top score.
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 context by labeling it as the 'Safer default than gmail_send,' implying its use when avoiding immediate sending. However, it lacks explicit exclusions or alternative tools beyond gmail_send, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_labelsC
List label names for one account.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states the action. It does not mention authentication needs, rate limits, or what happens if the account is invalid.
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 concise sentence with no wasted words, front-loading the core purpose.
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?
The tool is simple with one parameter and an output schema, so the description suffices for basic understanding. However, it lacks context on error handling and parameter format, leaving gaps for complete 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 schema has 0% description coverage; the only parameter 'account' is not explained in the description (e.g., format as email). The description adds no semantic value beyond the schema title.
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 the resource 'label names for one account', distinguishing it from 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?
No guidance is provided on when to use this tool versus alternatives such as gmail_search or gmail_read. The description does not mention any context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_modifyA
Batch-modify up to 500 messages in one account: add/remove labels (created automatically if new), archive (leave the inbox), mark read. Reversible — nothing is deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| archive | No | ||
| mark_read | No | ||
| add_labels | No | ||
| message_ids | Yes | ||
| remove_labels | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully bears the transparency burden. It discloses reversibility ('nothing is deleted') and automatic label creation, which are key behavioral traits. Missing details on rate limits, auth scopes, or error handling for exceeding 500 messages.
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?
A single sentence that is front-loaded with the core action ('Batch-modify up to 500 messages') and efficiently lists operations. No wasted words.
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 6 parameters, no output schema, and no annotations, the description covers the main actions and reversibility. It lacks details on return values, error cases, and parameter constraints (e.g., message_ids format). Overall sufficient for common use.
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 0% schema description coverage, the description must compensate. It explains the effects of archive, mark_read, add_labels, remove_labels, but does not detail the format of message_ids or label strings. It adds some meaning beyond the schema's property titles but not comprehensively.
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 it batch-modifies messages with specific actions (add/remove labels, archive, mark read). It distinguishes from siblings like gmail_read (reading) and gmail_search (searching) by focusing on modification operations.
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 explicitly mentions 'batch-modify up to 500 messages' and lists the actions, implying use for bulk modifications. However, it does not provide explicit 'when to use vs when not' or compare to single-message operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_readC
Read one message's full body by the id from gmail_search.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| max_chars | No | ||
| message_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It claims to read the 'full body', but the input schema includes a max_chars parameter (default 20000) that truncates the content, contradicting 'full body'. This important behavioral trait is not disclosed.
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 concise sentence with no waste, but it sacrifices clarity for brevity. It could include essential details like the max_chars limitation without being verbose.
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 no output schema, 0% parameter coverage, and no annotations, the description is incomplete. It fails to mention the truncation behavior, output format, or any prerequisites. A read tool with these features requires more information to be fully usable.
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 0%, so the description must add meaning. It only mentions 'id' (message_id), ignoring account and the critical max_chars parameter (which limits the body). No explanation of how parameters affect behavior.
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 'read' and the resource 'one message's full body', and it references the source ('by the id from gmail_search'), which distinguishes it from sibling tools like gmail_search (list) and gmail_send (send). However, it could be more precise about what 'full body' includes (e.g., attachments, headers).
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 explicit guidance on when to use this tool vs alternatives. It implicitly suggests use after gmail_search, but lacks when-not conditions or prerequisites. No mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_searchA
Search mail with Gmail's full query syntax (from:, subject:, is:unread, older_than:1y, has:attachment, ...). account is an alias, an email, or "all" for every connected account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| account | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only explains the account parameter and query syntax but fails to disclose key behaviors like pagination, rate limits, or that it returns a list of messages.
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 no wasted words. All key information is front-loaded: purpose first, then account details. Very concise.
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 complexity of a search tool and presence of output schema, the description adequately covers purpose and account handling but lacks details on pagination, default behavior, or scope of results. Minimal but functional completeness.
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 0%, so the description must compensate. It adds meaning for 'account' and gives query syntax examples, but does not define 'limit' or describe the 'query' parameter's expected format beyond examples. Partial addition of value.
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 tool searches mail using Gmail's full query syntax, providing specific examples (from:, subject:, is:unread). It distinguishes from siblings like gmail_read (single email) and gmail_draft.
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 for complex searches but does not explicitly state when to use this tool versus alternatives like gmail_read or gmail_modify. No when-not conditions or alternative references are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_sendC
Send an email from one account. Always confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ||
| to | Yes | ||
| body | Yes | ||
| account | Yes | ||
| subject | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds the confirmation requirement but does not disclose other behavioral traits like permissions, rate limits, or side effects of sending. The confirmation directive is useful but insufficient for full transparency.
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 concise with two sentences, but the second sentence is a guideline rather than structural content. It is front-loaded but sacrifices completeness for brevity.
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 5 parameters with 0% schema coverage and no output schema, the description is severely incomplete. It fails to explain required fields, account context, or body/cc/subject semantics.
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 0%, and the description provides no additional meaning for any of the 5 parameters. The agent must rely solely on parameter names in the schema, which lack detail.
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 'Send' and the resource 'email from one account', but does not differentiate from sibling tools like gmail_draft or gmail_modify. It is adequate but not distinctive.
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 includes a confirmation directive but fails to specify when to use this tool versus alternatives such as gmail_draft or gmail_modify. No context on prerequisites or excluded use cases.
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.
11 tool updates
v0.1.0- First observed
accounts_list - First observed
calendar_create_event - First observed
calendar_events - First observed
calendar_list - First observed
check - First observed
gmail_draft - First observed
gmail_labels - First observed
gmail_modify - First observed
gmail_read - First observed
gmail_search - First observed
gmail_send
TDQS
Scored across 11 tools
Each tool has a clear, distinct purpose. Calendar and Gmail tools are separated by prefixes (calendar_, gmail_), and actions like create, list, search, read, send are unique. No two tools overlap in functionality.
Most tools follow a (prefix)_verb_noun pattern (e.g., calendar_create_event, gmail_search). However, 'accounts_list' and 'check' break the pattern by lacking a service prefix, creating a minor inconsistency.
11 tools is well-scoped for a combined Calendar+Gmail server. It covers essential operations for both services without being excessive or too sparse.
Gmail side is fairly complete (search, read, send, draft, modify labels). Calendar side has significant gaps: it lacks update and delete for events, which would be needed for full lifecycle management.
Maintenance
Related MCP Connectors
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.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Gmail and Google Calendar using the MCP protocol, supporting multiple Google accounts, email management, and calendar operations through natural language.2432MIT
- AlicenseAqualityAmaintenanceGives MCP clients access to Google Workspace (Gmail, Drive, Calendar, Sheets, Docs, etc.) across multiple Google accounts simultaneously.1323010MIT
- FlicenseNot gradedqualityCmaintenanceEnables interacting with multiple Gmail accounts through a single MCP server, supporting search, labels, drafts, and thread management with per-account OAuth.1-
- AlicenseAqualityBmaintenanceEnables natural language interaction with multiple Google accounts (Gmail, Drive, Calendar) from MCP-compatible clients like Claude.632072MIT