GMail Manager MCP
This MCP server lets you manage your Gmail inbox programmatically.
Search emails using Gmail query syntax (
search_emails)Read full email content (
read_email)Permanently delete emails individually or in bulk (
delete_email,batch_delete_emails)Manage labels: list, create, delete, apply/remove on one or many messages (
list_labels,create_label,delete_label,apply_label,remove_label,batch_apply_labels)Create reply drafts to existing messages (
create_reply)Authenticate Gmail via browser (
authenticate_gmail)Per the README, the full server can also trash/archive/mark, handle drafts/attachments, calendar events, filters/unsubscribe, and sending when enabled.
Provides comprehensive Gmail inbox management capabilities including email search, reading, bulk deletion, label creation and management, and inbox analytics for organizing and cleaning up email accounts.
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 Manager MCPdelete all promotional emails from last month"
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 Manager MCP
๐งน Clean your inbox โข ๐ท๏ธ Organize with labels โข ๐๏ธ Bulk delete emails
โจ What It Does
Gmail Manager MCP provides direct access to your Gmail inbox through the Model Context Protocol, allowing you to:
Feature | Description |
Find emails by sender, subject, date, or any Gmail query | |
Get insights about your email patterns and volume | |
Read the full content of an email | |
Create and apply labels to categorize emails automatically | |
Remove old newsletters, notifications, and spam efficiently | |
List, search, create and update events, RSVP, and find times everyone is free | |
Attach local files to drafts, download attachments, or file them into Drive |
Upgrading from a version before calendar or Drive support? Google cannot add scopes to a token it has already issued, so your saved credentials keep working for mail while calendar calls and save_attachment_to_drive fail with a permissions error. Enable the Calendar and Drive APIs and add their scopes as below, then re-authenticate once:
npx @spark-apps/gmail-manager-mcp@latest authRunning a local checkout instead of the published package? Re-authenticate with the build your client actually loads, or you will re-consent against whichever version npm is serving and see the same error:
node /path/to/GMail-Manager-MCP/dist/index.js authRelated MCP server: gmail-mcp-server
๐ Quick Setup
๐ Prerequisites: Get Gmail Credentials ๐๏ธ
Create New Project ๐
Enable all three APIs: Gmail ๐ง, Calendar ๐ and Drive ๐
Create OAuth client ID (Desktop app type) ๐
Download as
gcp-oauth.keys.json๐ฅNavigate to Data access โ Add or remove scopes โ add all three:
https://mail.google.com/,https://www.googleapis.com/auth/calendarandhttps://www.googleapis.com/auth/drive.file๐Navigate to Test users โ Add your Google email ๐ค
๐ Where to put gcp-oauth.keys.json:
For Windows users in WSL:
# Copy from Windows to current directory
cp /mnt/c/Users/YourUsername/gcp-oauth.keys.json ./gcp-oauth.keys.jsonGeneral locations:
Current directory:
./gcp-oauth.keys.json(works everywhere)Home directory:
~/gcp-oauth.keys.json(for npx usage)Custom path: Set
GMAIL_OAUTH_PATHenvironment variable
๐ฅ Installation
npm i -g @spark-apps/gmail-manager-mcpgit clone https://github.com/muammar-yacoob/GMail-Manager-MCP.git
cd GMail-Manager-MCP
npm install๐ป Terminal Usage
# Install globally
npm i -g @spark-apps/gmail-manager-mcp
# Setup authentication (run this first)
npx @spark-apps/gmail-manager-mcp@latest auth
# Test MCP server (for debugging)
npx @modelcontextprotocol/inspector npx @spark-apps/gmail-manager-mcp@latestโ๏ธ Configure MCP Client
Add to your MCP client config file (Claude Desktop example):
Windows
%APPDATA%\\Claude\\claude_desktop_config.jsonmacOS
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux
~/.config/Claude/claude_desktop_config.json
๐ฆ For NPM Install:
{
"mcpServers": {
"gmail-manager": {
"command": "npx", "args": ["@spark-apps/gmail-manager-mcp@latest"],
"env": { "GMAIL_OAUTH_PATH": "C:\\path\\to\\gcp-oauth.keys.json" }
}
}
}For Local Development:
{
"mcpServers": {
"gmail-manager": {
"command": "node", "args": ["C:\\path\\to\\GMail-Manager-MCP\\dist\\index.js"]
}
}
}๐ ๏ธ Available Tools
๐ฌ Reading
Tool | Description |
| Search using Gmail query syntax |
| Full content of one email |
| Every message in a conversation, oldest first |
๐งน Cleaning up
Tool | Description |
| Move to Trash โ recoverable for 30 days. Prefer this |
| Pull messages back out of Trash |
| Remove from inbox, keep everything else |
| Mark read or unread |
| Permanent, bypasses Trash, cannot be undone |
๐ท๏ธ Labels
Tool | Description |
| List all labels |
| Create a label, or return the existing one if the name is taken |
| Delete a label |
| One message |
| Many messages, throttled and retried |
โ๏ธ Rules & unsubscribing
Tool | Description |
| Filters (rules) currently on the account |
| Set a rule that applies to mail arriving from now on |
| Remove a filter |
| Read a sender's List-Unsubscribe link, without clicking it |
| Opt out of a mailing list via the sender's own one-click endpoint |
โ๏ธ Drafts
Everything here writes to Drafts. Nothing is delivered โ see Sending below.
Tool | Description |
| Compose to any To/Cc/Bcc with subject, body and attachments. Not tied to a thread |
| Draft a threaded reply. Recipient can be overridden with |
| Edit a draft in place, keeping its ID and URL. Pass only the fields you are changing |
| Throw a draft away, so a superseded version cannot be sent by mistake |
| Every draft with its ID, recipients, subject and snippet |
Three things these do that are worth knowing about:
Every draft reports the recipient Gmail actually stored, read back from the saved message rather than echoed from the request. A wrong address is visible before anyone presses send, which is the only moment it can still be fixed.
A draft addressed only to yourself is called out. create_reply used to
answer the From header unconditionally, so replying to your own sent mail
resolved the recipient to your own address: the draft looked perfectly correct
and would have gone nowhere. Replying to a message you sent now answers its
original recipients instead, and says which rule it applied.
update_draft merges rather than replaces. Gmail's API has no partial
update, so the underlying call rewrites the whole message; the tool reads the
draft first and keeps every field you did not pass, attachments included.
๐ Attachments
Tool | Description |
| Attachments on a message, with the IDs needed to fetch them |
| Save one to a local path. Missing directories are created |
| Upload one straight to Google Drive, optionally into a folder |
Outgoing attachments are local file paths โ ~ is expanded โ assembled into a
proper MIME multipart message and sent base64url-encoded via raw.
Gmail's 25 MB ceiling applies to the encoded message, and base64 adds about a third, so the real limit is roughly 18 MB of actual files. Oversized attachments are refused up front, with the per-file arithmetic, rather than being uploaded and rejected by Google with an opaque 400.
save_attachment_to_drive needs the Drive scope โ see Scopes.
๐ค Sending
Off by default. This server composes; a human sends. A draft can be read, corrected or thrown away; a sent message cannot, because SMTP has no recall.
To enable delivery, set GMAIL_ENABLE_SEND=1 in the server's environment and
restart your MCP client:
"env": { "GMAIL_ENABLE_SEND": "1" }That adds three tools:
Tool | Description |
| Compose and send immediately |
| Send an existing draft |
| Send a fresh copy of a sent message (does not recall the original) |
๐ Calendar
Tool | Description |
| Calendars this account can access |
| Events on a calendar, optionally in a time range |
| Find events by keyword |
| One event in full, including RSVPs |
| Create an event, optionally with Meet link and guests |
| Change an event; only the fields you pass are altered |
| Delete an event |
| RSVP as yourself |
| Find slots where everyone is free, via free/busy |
๐ Auth
Tool | Description |
| Authenticate via browser. Covers Gmail, Calendar and Drive |
๐ Scopes
Scope | Why |
| Read, label, draft, trash and permanently delete mail |
| Calendar tools |
|
|
Drive is requested as drive.file, not the full drive scope: it grants rights
over the files this app creates and nothing else, so the server cannot read,
list or alter anything already in your Drive.
The trade-off is worth knowing. Because the app never gains rights over folders
it did not create, passing a folderId for a folder you made in the Drive web
UI can come back as "not found" even though it plainly exists. When that
happens the file is uploaded to My Drive instead and the result says so, rather
than the upload being lost.
Changing this list invalidates existing credentials. Google will not add scopes to a refresh token it has already issued, so a token predating a scope keeps working for everything else while the new feature returns a bare 403. The tools detect that case and tell you to re-run authentication:
npx @spark-apps/gmail-manager-mcp@latest auth๐ฌ Example Commands
"Delete all promotional emails from last 30 days"
"Delete all unread newsletters older than 1 week"
"Delete all 'no-reply' emails from last 3 months"
"Delete all LinkedIn notification emails"
"Delete all password reset emails older than 1 month"
"Delete redundant email chains where I'm CC'd"
"Summarize email with subject: 'last boring meeting'"
"Summarize all emails about 'project deadline'"
"Reply to email about 'project update' saying 'Got it, thanks!'"
"Label all emails from my bank as 'Finance'"
"Create 'Travel' label and move all booking confirmations"
"Find emails with attachments larger than 5MB"
"Show me who sends me the most emails"
"Find all unread emails older than 1 week"
"Show my busiest email days this month"
"Find emails I starred but never replied to"
"What's on my calendar this week?"
"Find a 45-minute slot next week when Sam and I are both free, weekdays 9-5"
"Move Thursday's standup to 10am and add a Meet link"
"Decline the Friday review, comment that I'm on leave"
"Search my calendar for anything about the tax deadline"
"Show me the rules currently on my account"
"Rule: anything from noreply@ skips the inbox and gets labelled Noise"
"Get the unsubscribe link for this sender so I can check it before clicking"
"Unsubscribe me from this newsletter"
Unsubscribing uses the sender's own published opt-out. Where they support one-click (RFC 8058) it completes on its own; where the only route is emailing them, it asks first, since that sends mail from your account. A plain link with no one-click declaration is handed back for you to open โ arbitrary URLs found in mail are never visited, and no response body from a sender is ever read back into the conversation.
๐ฑ Support & Contributions
โญ Star the repo & I power up like Mario ๐
โ Devs run on coffee - Buy me one?
๐ฐ Crypto tips welcome - Tip in crypto
๐ค Contributions are welcome - ๐ด Fork, improve, PR!
๐ฅ Need help? Setup Tutorial โข Join Discord
๐ Sponsor
Your support helps maintain and improve the tool. please consider sponsoring the project.
Made with โค๏ธ for MCP โข Privacy Policy โข Terms of Service
Available Tools
12 toolsapply_labelB
Apply a label to an email
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Email message ID | |
| labelId | Yes | Label ID to apply |
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 of behavioral disclosure. It only says 'apply a label' without clarifying idempotency, error behavior, or required authentication, which is insufficient for a mutation tool.
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, no wasted words. Front-loaded with verb and resource. Ideal conciseness for a simple tool.
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 (two required params, no output schema), the description is minimally adequate. However, it lacks details such as whether labels can be applied multiple times or if authentication is assumed, leaving gaps for the agent.
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% and the description does not add any meaning beyond the field names and types. Baseline score of 3 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 action (apply a label) and the resource (email). It distinguishes from sibling tools like batch_apply_labels by implication (single vs batch) and remove_label, but does not explicitly differentiate.
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 batch_apply_labels. No prerequisites, context, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authenticate_gmailA
Authenticate Gmail access via web browser (opens browser automatically)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses automatic browser opening, a key behavioral trait. However, no annotations exist, so description carries full burden. It omits details about token storage, state changes, or user interaction beyond opening browser.
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 single sentence (8 words). Action verb is front-loaded. 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?
Adequate for a simple tool but missing context about return value or side effects. No output schema, so description could mention what happens after authentication (e.g., token stored). Slight insufficiency given complexity of authentication.
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?
No parameters in input schema. Description adds no param info, which is acceptable given zero parameters. Baseline is 4 per rules.
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 tool authenticates Gmail access via browser. It specifies the action (authenticate), resource (Gmail access), and method (web browser). This distinguishes it from siblings like search_emails or read_email which require prior 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 implies use before other Gmail operations but does not explicitly state when to use it, when not to use it, or mention alternatives. No guidance on prerequisites or post-conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_apply_labelsC
Apply labels to multiple emails at once
| Name | Required | Description | Default |
|---|---|---|---|
| messageIds | Yes | Array of email message IDs | |
| labelIds | Yes | Array of label IDs to apply |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. However, it only says 'apply labels', which implies mutation, but does not mention side effects, idempotency, partial failure handling, or authorization needs. This is insufficient.
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. While it could include more detail, it is appropriately front-loaded and 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?
Given the complexity of batch operations (potential partial failures, idempotency, return values), the description is too minimal. No output schema exists, so the description should explain what is returned or what happens on success/failure. This is a significant gap.
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 the schema already describes both parameters (messageIds and labelIds). The description adds no additional meaning beyond what the schema provides. Baseline 3 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 action (apply labels) and the scope (multiple emails at once). It effectively distinguishes from siblings like 'apply_label' (single email) and 'batch_delete_emails' (different operation).
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 batch vs single apply_label, no prerequisites, and no exclusions. The description simply states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_delete_emailsB
Delete multiple emails at once
| Name | Required | Description | Default |
|---|---|---|---|
| messageIds | Yes | Array of email message IDs to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only says 'delete multiple emails at once' without disclosing whether the deletion is permanent, if there are any limits, or side effects. The burden on the description is high due to missing 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. It is front-loaded and efficient, though it could benefit from slightly more detail to improve completeness.
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 lack of annotations and output schema, the description is too minimal. It does not address potential failure modes, rate limits, or the nature of the deletion, making it incomplete for a reliable tool 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 for the only parameter 'messageIds' ('Array of email message IDs to delete'). The tool description adds no additional parameter semantics 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 'Delete multiple emails at once' clearly states the verb (delete) and resource (emails, multiple). It distinguishes itself from sibling tool 'delete_email' which deletes a single email.
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 batch_delete_emails versus delete_email or other alternatives. The description lacks any context about prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_labelB
Create a new Gmail label
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Label name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It only states 'create' (a mutation) but lacks details on authentication, idempotency, error handling (e.g., duplicate label names), 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?
A single sentence with no wasted words, but the brevity sacrifices important context that could be added without losing conciseness.
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 (one param, no output schema), the description should at least mention what happens on success (e.g., returns the label object) or prerequisites (authenticated user). It does not, leaving gaps for the agent.
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 one parameter 'name' described as 'Label name'. The description adds no extra meaning beyond the schema, so a baseline of 3 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 'Create a new Gmail label' clearly states the action (create) and the resource (Gmail label), which distinguishes it from sibling tools like delete_label, list_labels, and apply_label.
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 vs alternatives. For instance, no mention of whether it should be used before applying a label or how it differs from creating labels via other means.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_replyB
Generate a brief, natural reply draft and provide Gmail compose URL
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Email message ID to reply to | |
| replyMessage | Yes | The reply message content to create as a draft |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It only states that a draft is generated and a URL provided, but fails to mention side effects (e.g., whether the draft is saved), required permissions, or error conditions. This is insufficient for a mutation tool.
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, well-structured sentence that front-loads the core action ('Generate a brief, natural reply draft') and includes the secondary output. Every word is essential, 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 absence of an output schema, the description should explain what the tool returns beyond just mentioning a URL. It lacks details on the format of the reply draft or the URL, leaving the agent uncertain about the full return value.
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 for both parameters (messageId, replyMessage). The tool description adds no additional semantic meaning beyond what the schema already provides, so a baseline of 3 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 explicitly states the tool's purpose: generating a brief, natural reply draft and providing a Gmail compose URL. It clearly distinguishes itself from sibling tools like `read_email` or `apply_label` by specifying its unique output (a draft and URL).
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. There is no mention of scenarios where a more detailed reply tool might be preferred, or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_emailB
Permanently delete an email
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Email message ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description declares permanent deletion but omits critical behavioral details such as lack of undo, required permissions, or confirmation steps. With no annotations available, the description alone is insufficient.
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 no extraneous words. While concise, it could be slightly expanded to include behavioral hints without sacrificing 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?
For a simple, single-parameter destructive tool without output schema, the description partially covers the required context (permanence of deletion). However, it lacks details like limitations or side effects, leaving room for improvement.
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, specifying 'messageId' as 'Email message ID to delete'. The description adds no new meaning beyond the parameter name and schema, achieving baseline adequacy.
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 "Permanently delete an email" clearly states the action (delete) and the resource (email), distinguishing it from sibling tools like 'batch_delete_emails' (multiple deletion) and 'remove_label' (non-deletion 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?
No context is provided on when to use this tool versus alternatives (e.g., batch_delete_emails), nor any prerequisites, caveats, or instructions for proper usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_labelC
Delete a Gmail label
| Name | Required | Description | Default |
|---|---|---|---|
| labelId | Yes | Label ID to delete |
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 states 'Delete a Gmail label.' It does not disclose behavioral traits like irreversibility, required permissions, or effects on associated 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?
The description is extremely concise (3 words) and front-loaded. It earns its place, though a bit more context (e.g., effect on messages) would not harm conciseness.
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 low complexity (1 param, no output schema), the description is minimally adequate but fails to provide behavioral context that would be expected for a destructive operation, especially without 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?
The single parameter 'labelId' is fully described in the schema (100% coverage). The tool description adds no additional meaning beyond what the schema provides, meeting the baseline expectation.
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 (delete) and the resource (a Gmail label). It is specific and distinguishes from sibling tools like create_label or list_labels, though no explicit differentiation is provided.
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, no prerequisites mentioned, and no mention of consequences such as whether deletion is permanent or reversible.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_labelsB
List all Gmail labels
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and only a terse description, behavioral traits like authentication requirements, rate limits, or whether system labels are included are not disclosed. The description fails to convey any transparency beyond the basic read operation.
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, short sentence with no unnecessary words. It is perfectly concise and front-loaded with the essential 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?
Despite the tool's simplicity, the description fails to mention what the returned list contains (e.g., label names, IDs, or metadata). With no output schema, this leaves the agent guessing about the response format, making it incomplete for a tool that returns data.
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 zero parameters, so the baseline is 4. The description 'List all Gmail labels' implies no parameters are needed, which aligns with the schema. However, it does not explicitly confirm the absence of filters, but no additional gloss is strictly required.
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 'List all Gmail labels' clearly states the verb (list) and resource (Gmail labels), which is specific and distinguishes this tool from siblings like create_label or delete_label that perform different actions.
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 search_emails, nor are there any contextual hints about prerequisites or appropriateness. The description is minimal and lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_emailB
Read the full content of an email
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Email message ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description gives no additional behavioral details such as authentication needs, error behavior for invalid messageId, or rate limits. The term 'read' suggests non-destructive but lacks nuance.
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, focused sentence with no wasted words. It is appropriately concise for a simple tool, though it could benefit from a brief 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?
With no output schema, the description should specify what 'full content' includes (e.g., body, headers, attachments). The current description leaves ambiguity about the return 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?
Schema coverage is 100% for the single parameter 'messageId' with a description. The tool description adds no further meaning beyond the schema, meeting the baseline.
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 action ('Read') and resource ('full content of an email'), making it distinct from sibling tools like 'search_emails' (metadata only) or 'create_reply' (write operation).
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 when full email content is needed, but does not explicitly contrast with siblings or provide when-not-to-use guidance. It is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_labelB
Remove a label from an email
| Name | Required | Description | Default |
|---|---|---|---|
| messageId | Yes | Email message ID | |
| labelId | Yes | Label ID to remove |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states the action and does not disclose consequences (e.g., mutation, irreversibility, permissions, or error handling).
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 is front-loaded and to the point, with 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?
The description is minimal but adequate for a simple tool with two clear parameters, though it lacks details on return values, error conditions, or 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 100% with both parameters described. The description adds no additional meaning beyond what the schema 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 'Remove a label from an email' clearly states the action and resource, distinguishing it from siblings like 'apply_label' which adds a label.
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 removing a label from an email, but no explicit guidance on when to use vs alternatives (e.g., batch removal) or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_emailsA
Search emails using Gmail query syntax
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Gmail search query (e.g., 'is:unread', 'from:newsletter@example.com') | |
| maxResults | No | Maximum number of results (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states it searches, without mentioning that it is read-only or what it returns. This is a significant gap for a search tool.
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, direct sentence with no fluff. It efficiently conveys the tool's action and method.
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 lacks an output schema, yet the description does not explain what the search returns (e.g., email metadata, full content). This leaves the agent uncertain about the return value, a critical gap for a search 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?
The input schema already describes both parameters (query and maxResults) with 100% coverage. The description adds value by specifying 'Gmail query syntax', clarifying the expected format for the query parameter.
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 emails using a specific syntax (Gmail query). This distinguishes it from sibling tools like read_email (single email) and delete_email (deletion).
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 searching with Gmail syntax, but does not explicitly compare to alternatives like list_labels or read_email. It provides clear context but lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clear, distinct purpose. Batch operations are separate from single operations, and label management functions are all distinct (create, delete, list, apply, remove). No two tools are easily confused.
All tool names follow a consistent verb_noun pattern with snake_case. Verbs are imperative and descriptive, and the naming scheme is uniform across the set.
12 tools is appropriate for a Gmail management server. It covers essential operations (auth, search, read, delete, label management) without being overwhelming or too sparse.
The tool set covers core Gmail operations but has notable gaps: no send email, no mark as read/unread, and no trash or undo capabilities. The create_reply tool only generates a draft URL, not full send. These gaps may hinder some workflows.
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
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflowโฆ
Personal CRM for Claude. Contacts live as plain-text files in your own Google Drive.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIntegrates Gmail with Claude Desktop to fetch unread emails, generate AI-powered draft replies with customizable tone and style guides, and manage your inbox through natural language commands.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI-powered inbox management with natural language commands through Claude Desktop. Supports sending, reading, searching, organizing emails, and managing labels using Gmail API with automatic authentication.8MIT
- FlicenseNot gradedqualityDmaintenanceEnables reading unread emails and creating draft replies in Gmail via Claude Desktop.
- AlicenseAqualityCmaintenanceConnects multiple Gmail accounts to Claude Desktop via MCP, enabling email search, labeling, drafts, and confirmed sending through natural language.13215MIT
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/muammar-yacoob/GMail-Manager-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server