Gmail MCP Server
Provides tools for reading Gmail messages (list, search, read), creating drafts (when enabled), and sending emails (when enabled) via Gmail API with OAuth authentication.
Click on "Install 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., "@Gmail MCP Serverlist my last 5 emails from inbox"
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.
Gmail + SAP MCP Project — Phase 2: Gmail
Phase 2 keeps the Phase 1 MCP foundation and adds Gmail OAuth, read tools, draft creation, and guarded email sending. SAP is intentionally left for a later phase.
Available MCP tools
Foundation tools:
health_checkecho_textadd_numbers
Gmail tools:
gmail_auth_status— checks local OAuth setup without contacting Gmailgmail_get_profile— verifies the live API connectiongmail_list_messages— lists recent message summaries and message IDsgmail_search_messages— uses Gmail search syntaxgmail_read_message— reads one message using its message IDgmail_create_draft— creates a draft only when explicitly enabledgmail_send_email— sends email only when explicitly enabled
Draft creation and sending are disabled by default. This phase cannot delete, archive, label, or otherwise modify existing messages.
Related MCP server: Gmail MCP Server
1. Install or upgrade the project
Open Windows PowerShell in the extracted project folder:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txtIf the virtual environment already exists, activate it and run only the final two commands.
Verify the project:
python -c "from mcp_server.server import mcp; print('MCP server import OK')"
pytest -q2. Create the Gmail OAuth application
Open Google Cloud Console and select or create a project.
Enable Gmail API for that project.
Open Google Auth Platform and configure the consent screen.
For a personal Gmail account, choose External and add your Gmail address as a test user while the application is in testing mode.
For a managed Google Workspace account, choose Internal only when the account and organization allow it.
Open Clients, select Create client, and choose Desktop app.
Download the client JSON.
Rename it to
credentials.jsonand place it here:
credentials/credentials.jsonDo not use a service-account key. Gmail user mailbox access in this project uses desktop OAuth consent.
3. Authorize your Gmail account
Stop MCP Inspector before authentication, then run:
python scripts\gmail_auth.pyYour browser will open. Select the Gmail account, review the read and compose access, and approve it. The script creates:
credentials/token.jsonBoth OAuth files are ignored by Git. Never upload, commit, email, or share
either file—especially token.json, which grants mailbox access.
4. Start MCP Inspector
npx -y @modelcontextprotocol/inspector python -m mcp_server.serverIf you enter the connection manually:
Transport: STDIO
Command: python
Arguments: -m mcp_server.serverClick Connect, open Tools, and click List Tools.
5. Test Gmail tools in order
A. Authentication status
Run gmail_auth_status with no input.
Expected important fields:
{
"credentials_file_exists": true,
"token_file_exists": true,
"authenticated": true,
"required_scopes_present": true,
"draft_create_enabled": false,
"send_enabled": false
}B. Live Gmail profile
Run gmail_get_profile with no input. It should return your Gmail address and
mailbox totals. This is the first live Gmail API test.
C. List Inbox messages
Run gmail_list_messages with:
{
"max_results": 5,
"label_ids": ["INBOX"]
}Copy a returned message_id for the read-message test.
D. Search Gmail
Run gmail_search_messages with:
{
"query": "is:unread",
"max_results": 5
}Other useful searches:
from:sender@example.com
subject:invoice
has:attachment newer_than:30dE. Read one message
Run gmail_read_message with an ID returned by list or search:
{
"message_id": "PASTE_MESSAGE_ID_HERE"
}F. Create a draft
Copy the example configuration and enable draft creation:
Copy-Item .env.example .envEdit .env and change only this line:
ALLOW_GMAIL_DRAFT_CREATE=trueRestart Inspector, then run gmail_create_draft:
{
"to": "your-own-address@gmail.com",
"subject": "MCP draft test",
"body": "This message was created as a Gmail draft through MCP."
}Confirm the message exists in the Gmail Drafts folder.
G. Send an email
Sending is irreversible. Test with your own email address first. Edit .env:
ALLOW_GMAIL_SEND=trueRestart Inspector, then run gmail_send_email:
{
"to": "your-own-address@gmail.com",
"subject": "MCP send test",
"body": "This message was sent through the Gmail MCP tool."
}Optional cc and bcc fields accept one address or comma-separated addresses.
Repeated tool calls send repeated emails; this tool is not idempotent.
Troubleshooting
credentials.json not found
Confirm the file exists:
Test-Path .\credentials\credentials.jsonThe result must be True.
Google says the app is not verified or access is blocked
While the External app is in testing mode, add the Gmail account under Google Auth Platform Audience > Test users, then run authentication again.
Scope changed or token is invalid
This project now requires both gmail.readonly and gmail.compose. If the
token came from the earlier read-only version, stop Inspector, remove only the
local token, and authenticate again:
Remove-Item .\credentials\token.json
python scripts\gmail_auth.pyInspector does not show the new tools
Upgrade the editable project and restart Inspector:
pip install -r requirements.txt
npx -y @modelcontextprotocol/inspector python -m mcp_server.serverPhase 2 completion checklist
Gmail API is enabled
Desktop OAuth JSON is saved as
credentials/credentials.jsongmail_auth.pycreatescredentials/token.jsongmail_auth_statusreturnsauthenticated: truegmail_get_profilereturns the correct Gmail addressList and search tools return message IDs
Read-message returns the selected message
OAuth includes
gmail.readonlyandgmail.composeDraft creation works only after its flag is enabled
Sending is blocked until
ALLOW_GMAIL_SEND=trueA send test to your own address succeeds
After this checklist passes, we can move to the SAP connection phase.
Available Tools
10 toolsadd_numbersA
Add two numbers to verify typed numeric tool arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| a | Yes | ||
| b | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description gives no behavioral details beyond the basic operation. It does not disclose idempotency, side effects, or return format.
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 that contains no wasted words. It efficiently conveys the tool's 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?
For a simple tool with two numeric parameters and an output schema, the description covers the essential purpose. It could mention the return value, but it is adequate.
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 only says 'Add two numbers' without explaining what parameters 'a' and 'b' represent individually. The titles 'A' and 'B' add no meaning.
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 'add' and resource 'two numbers', and specifies the verification purpose. It distinguishes from sibling tools like echo_text and gmail_*.
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 phrase 'to verify typed numeric tool arguments' implies a testing usage but lacks explicit when-to-use or when-not-to-use guidance, nor mentions alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
echo_textA
Echo non-empty text to verify argument handling and tool responses.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 full burden. It mentions 'Echo non-empty text' but does not clarify behavior when text is empty (e.g., error or skip), nor describe side effects or return value details. This is minimal given no annotations.
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 zero wasted words. It efficiently conveys the essential purpose and behavior.
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 simplicity and the presence of an output schema, the description is nearly complete. However, it could have explicitly stated the input constraint (non-empty) and clarified error handling, though the schema does not enforce non-empty.
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 only parameter (text) has a schema with type string and title, but the description adds the semantic that it will be echoed. Since schema coverage is 0%, the description compensates by explaining the parameter's role in the echo action.
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 echoes non-empty text for verifying argument handling and tool responses. It uses a specific verb (Echo) and resource (text), and this purpose distinguishes it from siblings like add_numbers or gmail 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?
The description implies the tool is for testing/verification but does not specify when to use it versus alternatives, nor does it mention any prerequisites or limitations. Usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_auth_statusA
Check local Gmail OAuth credential and token readiness without a network call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the check is local and requires no network call, but does not elaborate on what 'readiness' entails (e.g., token expiration, credential validity). The output schema likely covers return values, but behavioral details are sparse.
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 that front-loads the purpose. Every word is necessary, and there is no redundancy or filler.
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 zero parameters and the existence of an output schema, the description adequately covers the tool's purpose. It could optionally mention that the check is safe to call repeatedly, but as a simple status check, it is sufficiently complete.
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 no parameters, and the description confirms this by stating no network call needed. With baseline 4 for zero parameters, the description adds meaning by clarifying the absence of inputs.
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 'Check' and the specific resource 'local Gmail OAuth credential and token readiness'. It distinguishes this tool from sibling Gmail tools by emphasizing the local, no-network nature, which is unique among them.
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 is for verifying auth readiness locally before network calls, but it does not explicitly state when to use this tool versus alternatives or provide exclusions. The context suggests a pre-check role but lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_create_draftC
Create a Gmail draft after explicit enablement in .env.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ||
| to | Yes | ||
| bcc | No | ||
| body | Yes | ||
| subject | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false and openWorldHint=true, so mutation is expected. The description adds the prerequisite of explicit enablement, providing additional context beyond annotations.
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 concise at 9 words, but the prerequisite is embedded in the purpose sentence. Could be separated for clarity, but overall efficient.
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?
Only covers purpose and a single prerequisite. Missing details on side effects, relationship to drafts, or how the output schema is used. Despite an output schema existing, the description is too minimal for a tool with 5 parameters.
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 information about any parameters. The agent must rely solely on parameter names, which is insufficient for correct invocation.
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 creates a Gmail draft, specifying the verb and resource. However, it does not differentiate from sibling tools like gmail_send_email, and the prerequisite 'after explicit enablement in .env' is separate from the core purpose.
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 versus alternatives such as gmail_send_email. Only a prerequisite is mentioned, but no explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_get_profileA
Verify the Gmail API connection and return mailbox totals.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool is a read operation (verify, return totals) with no side effects. No annotations exist, but the description adequately covers behavioral traits.
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 10-word sentence (no front-loading issue), conveying everything needed without 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 zero parameters and an existing output schema, the description is complete: it explains both the action (verify connection) and the return (mailbox totals). No gaps remain.
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 no parameters, so the description does not need to add meaning beyond the schema. Baseline score of 4 is appropriate.
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 verifies the Gmail API connection and returns mailbox totals, with a specific verb and resource. It distinguishes from sibling tools like gmail_auth_status which likely only checks 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?
The description implicitly indicates use for checking API connection health, but does not explicitly provide when-not or alternatives. Given no parameters, the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_list_messagesC
List recent Gmail messages with IDs, sender, subject, date, and snippet.
| Name | Required | Description | Default |
|---|---|---|---|
| label_ids | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states 'list recent messages' without disclosing behavioral traits such as pagination, auth requirements, rate limits, or ordering. Minimal value beyond what the name implies.
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 at one sentence, but it under-specifies crucial details. It could be improved by front-loading key constraints like default ordering or scope.
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?
Despite having an output schema and few parameters, the description omits typical usage context (e.g., how 'recent' is defined, pagination, label filtering semantics). Incomplete for an agent to use effectively.
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 does not explain the parameters (label_ids, max_results) at all. The agent gains no additional meaning beyond the schema's type information.
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 lists recent Gmail messages with specific fields (IDs, sender, subject, date, snippet). However, it does not differentiate from sibling tool gmail_search_messages, which also lists messages but with query-based filtering.
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 gmail_search_messages. No mention of prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_read_messageA
Read a Gmail message using a message_id returned by list or search.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 only states the action without disclosing whether it is read-only, marks messages as read, requires authentication, or any other behavioral traits.
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 is front-loaded and strictly conveys the necessary information.
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 simplicity of the tool and an output schema, the description is mostly complete. It could mention error handling or side effects, but for a basic read operation, it is sufficient.
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 coverage is 0%, and the description adds minimal meaning by stating the message_id comes from list or search. It does not describe format, constraints, or example values.
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 (read a Gmail message) and the required input (message_id), distinguishing it from sibling tools like list or 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?
It specifies that the message_id should come from list or search, providing clear context on when to use this tool. However, it does not explicitly exclude other scenarios or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_search_messagesB
Search Gmail using Gmail search syntax such as from:, subject:, or is:unread.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral transparency. It implies a read operation (search) but does not explicitly state that it does not modify data, nor does it mention rate limits, authentication needs, or error behavior. The output schema exists but is not described; however, per the rules, output schema reduces the need to explain return values. The description provides basic behavioral context but lacks depth.
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 (14 words). It is front-loaded with the primary action and includes examples efficiently. Every word contributes to understanding the tool's purpose, with no fluff 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 the tool has low complexity (2 params), no annotations, and an output schema (reducing need to describe returns), the description is adequate but incomplete. It explains the query parameter well but omits guidance on max_results, pagination, or rate limits. The sibling tools context highlights the need for clearer differentiation, which is only partially addressed.
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 beyond parameter names. It does explain the 'query' parameter by describing Gmail search syntax and giving examples. However, it completely ignores the 'max_results' parameter, even though its default value (10) is specified in the schema. The description adds partial value for one parameter but fails to cover all parameters adequately.
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 Gmail using Gmail search syntax, with examples like from:, subject:, is:unread. This distinguishes it from sibling tools like gmail_list_messages (which likely lists messages without search capabilities) and other Gmail tools. However, it does not explicitly contrast with other search or list tools, so the differentiation is implied rather than explicit.
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 how to use the tool (with Gmail search syntax) but gives no guidance on when to use it versus alternatives (e.g., when to use search vs. list vs. read). It lacks explicit exclusions or context about prerequisites or limitations. The examples help, but the usage context is not fully elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_send_emailCDestructive
Send an email after explicit enablement in .env.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | ||
| to | Yes | ||
| bcc | No | ||
| body | Yes | ||
| subject | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, covering write and destructive behavior. The description adds the .env enablement condition but does not detail success/failure outcomes, rate limits, or other traits beyond annotations.
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, but it packs a usage condition and the core action. It is not overly verbose but lacks structured breakdown (e.g., separate usage note).
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, 3 required, and an output schema, the description is incomplete. It does not explain the output or failure modes, nor does it specify that it sends to recipients. The output schema exists but the description should still provide behavioral context.
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 does not describe any parameters; however, parameter names (to, subject, body, cc, bcc) are self-explanatory. Minimal added value over 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?
The description clearly states the verb 'send' and the resource 'email', distinguishing it from sibling tools like gmail_create_draft. However, it does not specify that it sends via Gmail API or the account context, leaving minor ambiguity.
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 mentions a prerequisite ('explicit enablement in .env') but provides no guidance on when to use this tool versus alternatives like gmail_create_draft. It lacks explicit context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Verify that the MCP server is running and show integration status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. It explicitly states read-only verification and status display, disclosing no destructive effects. Could mention auth requirements, but likely unnecessary for health check.
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 10 words, front-loaded with purpose, 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?
For a simple no-param tool with output schema, description fully covers purpose and behavior. No 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?
Zero parameters with 100% schema coverage; baseline 4. Description adds no param info (unnecessary).
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 'Verify' and resource 'MCP server' plus 'integration status', distinguishing it from sibling tools (Gmail operations, arithmetic). No tautology.
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?
Usage is implied (check server health), but no explicit when-to-use or alternatives provided. Lacks guidance on when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Gmail-specific tools have distinct purposes, but the inclusion of add_numbers and echo_text creates a confusing mix of unrelated functionalities, potentially causing an agent to select the wrong tool.
Most Gmail tools follow a gmail_verb_noun pattern, but health_check, add_numbers, and echo_text break this convention, leading to inconsistent naming.
With 10 tools, the count is reasonable for a Gmail integration, but the presence of two test tools inflates the count unnecessarily and feels out of place.
The tool surface lacks essential operations like deleting messages, managing labels, or updating drafts, leaving significant gaps for a comprehensive email workflow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Manage Gmail messages, threads, labels, drafts, and settings from your workflows. Send and organiz…
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Gmail through the Gmail API with OAuth2 authentication. Supports reading, sending, searching emails, and managing read status through natural language.
- FlicenseNot gradedqualityNot gradedmaintenanceEnables interaction with Gmail through the Gmail API, allowing users to list, read, search emails, create and send drafts, and get email summaries through natural language commands with OAuth2 authentication.
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Gmail accounts through natural language for tasks like sending, reading, searching, and organizing emails. It supports advanced features including draft management, label operations, and batch actions via secure OAuth 2.0 authentication.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage Gmail emails, including sending, searching, and organizing with labels and attachments via OAuth2.531MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/suryanandan1/MCP_and_gmail_connection'
If you have feedback or need assistance with the MCP directory API, please join our Discord server