Gmail MCP server icon

Gmail

by Gmail

Communication21 tools

Google's own remote MCP server for Gmail. Search threads, read messages and drafts, manage labels, and trash or unspam mail from an AI assistant. 21 tools, 5 read-only, 8 annotated destructive, and no tool that sends email.

Verified connector

Listed by Anthropic as a partner connector in its Connectors Directory.

Connection checked by Agentman on .

Anthropic states this reflects the level of review a connector received, not a security audit.

Connect Gmail via MCP

https://gmailmcp.googleapis.com/mcp/v1

Works in any MCP-compatible client. In Agentman Studio it is one click — no config file to edit.

Gmail Tools & Capabilities (21)

create_draftActs

Creates a new draft email in the authenticated user's Gmail account. This tool takes recipient addresses, a subject, and body content as inputs. If the draft is created as a reply to an existing message, the ID of the original message should be passed to the tool in the replyToMessageId field. Returns a Draft object with only the `id` field populated.

list_draftsRead-only

Lists draft emails from the authenticated user's Gmail account. This tool can filter drafts based on a query string and supports pagination. It returns a list of drafts, including their IDs and subjects (unless `view` is set to `DRAFT_VIEW_METADATA_ONLY`). `page_token` can be used to paginate the results. To retrieve subsequent pages of results, use the `page_token` returned in the previous response. The `view` parameter controls which fields are populated in the response. By default (or with `DRAFT_VIEW_FULL`), it returns full content. Use `DRAFT_VIEW_METADATA_ONLY` to exclude sensitive content like subject and body.

get_threadRead-only

Retrieves a specific email thread from the authenticated user's Gmail account, including a list of its messages. The optional `messageFormat` parameter controls the format of the messages returned. By default (or with `FULL_CONTENT`), it returns the full content of messages. We recommend using `PLAIN_TEXT`, which returns the plain text body without the HTML body. Use `MINIMAL` to include only subject and snippet (excluding body). Use `METADATA_ONLY` to include only basic metadata (message ID, thread ID, labels, timestamp, and size estimate).

get_messageRead-only

Retrieves a specific email message from the authenticated user's Gmail account by its unique message ID. Use this tool to inspect a single, individual email when you already know its message ID. If the user wants to read a specific email in detail, check the exact wording of a message, or examine attachment metadata for a single email, this is the right tool. It is not suitable for retrieving entire conversations or viewing back-and-forth discussion threads; use the 'get_thread' tool instead. Key indicators include if the user asks for the full content of a specific message ID returned by a previous search, or if the query asks to inspect a specific individual email rather than an entire thread. Example user prompts are: "Get the full text of message ID 18f123456789abcd.", "Read the latest message in that thread from Alice.", and "What are the attachment names in the email I just received from HR?" The optional `messageFormat` parameter controls the format of the message returned. By default (or with `FULL_CONTENT`), it returns the full content of the message. We recommend using `PLAIN_TEXT`, which returns the plain text body without the HTML body. Use `MINIMAL` to include only subject and snippet (excluding body). Use `METADATA_ONLY` to include only basic metadata (message ID, thread ID, labels, timestamp, and size estimate).

search_threadsRead-only

Lists email threads from the authenticated user's Gmail account. This tool can filter threads based on a query string and supports pagination. It returns a list of threads, including their IDs and related messages. Each related message contains details like a snippet of the message body, the subject, the sender, the recipients etc. The `view` parameter controls which fields are populated in the related messages. By default (or with `THREAD_VIEW_MINIMAL`), it includes subject and snippet. Use `THREAD_VIEW_METADATA_ONLY` to exclude subject and snippet. Note that the full message bodies are not returned by this tool; use the 'get_thread' tool with a thread ID to fetch the full message body if needed. Threads with excluded criteria may still appear in the results. This occurs because Gmail identifies matching messages first. For example, if you search for -is:starred, Gmail will find an entire thread if it contains at least one unstarred message, even if other emails in that same conversation are starred.

label_threadActs

Adds labels to an entire thread in the authenticated user's Gmail account. This operation affects all messages currently in the thread and any future messages added to it. If unsure of the thread ID, use the `search_threads` tool first. If unsure of a user label's ID, use the `list_labels` tool first to discover available labels and their IDs. To add a Trash label or a Spam label to a thread, or move a specific thread to Trash, please use the `apply_sensitive_thread_label` tool instead.

unlabel_threadDestructive

Removes labels from an entire thread in the authenticated user's Gmail account. If unsure of the thread ID, use the `search_threads` tool first. If unsure of a user label's ID, use the `list_labels` tool first.

apply_sensitive_thread_labelDestructive

Adds a sensitive label (Trash or Spam) to an entire thread in the authenticated user's Gmail account. This operation affects all messages currently in the thread and any future messages added to it. Use this tool to trash a thread, mark a thread as spam, or move the specified thread to Trash. To find the thread ID, use the `search_threads` tool first.

trash_threadDestructive

Moves an entire thread to the Trash in the authenticated user's Gmail account. This operation affects all messages currently in the thread and any future messages added to it. If unsure of the thread ID, use the `search_threads` tool first.

untrash_threadActs

Removes an entire thread from the Trash in the authenticated user's Gmail account. If unsure of the thread ID, use the `search_threads` tool first.

mark_thread_spamDestructive

Marks an entire thread as Spam in the authenticated user's Gmail account. This operation affects all messages currently in the thread and any future messages added to it. If unsure of the thread ID, use the `search_threads` tool first.

unmark_thread_spamActs

Unmarks an entire thread as Spam in the authenticated user's Gmail account. If unsure of the thread ID, use the `search_threads` tool first.

list_labelsRead-only

Lists all labels available in the authenticated user's Gmail account. Use this tool to discover the `id` of a label before calling `label_thread`, `unlabel_thread`, `label_message`, or `unlabel_message`. Note: the system labels, `DRAFT` and `SENT`, cannot be set on messages and are read only.

label_messageActs

Adds one or more labels to a specific message in the authenticated user's Gmail account. To find the message ID, use tools like `search_threads` or `get_thread`. If unsure of a user label's ID, use the `list_labels` tool first to discover available labels and their IDs. To add a Trash label or a Spam label to a message, or move a specific message to Trash, please use the `apply_sensitive_message_label` tool instead.

unlabel_messageDestructive

Removes one or more labels from a specific message in the authenticated user's Gmail account. To find the message ID, use tools like `search_threads` or `get_thread`. If unsure of a user label's ID, use the `list_labels` tool first to discover available labels and their IDs.

apply_sensitive_message_labelDestructive

Adds a sensitive label (Trash or Spam) to a specific message in the authenticated user's Gmail account. Use this tool to trash a message, mark a message as spam, or move the specified message to Trash. To find the message ID, use tools like `search_threads` or `get_thread`. To find the draft message ID, use tools like `list_drafts`.

trash_messageDestructive

Moves a specific message to the Trash in the authenticated user's Gmail account. To find the message ID, use tools like `search_threads` or `get_thread`. To find the draft message ID, use tools like `list_drafts`.

untrash_messageActs

Removes a specific message from the Trash in the authenticated user's Gmail account. To find the message ID, use tools like `search_threads` or `get_thread`.

mark_message_spamDestructive

Marks a specific message as Spam in the authenticated user's Gmail account. To find the message ID, use tools like `search_threads` or `get_thread`.

unmark_message_spamActs

Unmarks a specific message as Spam in the authenticated user's Gmail account. To find the message ID, use tools like `search_threads` or `get_thread`.

create_labelActs

Creates a new label in the authenticated user's Gmail account. Supports creating nested labels (sub-labels) using a forward slash (e.g., 'Projects/Alpha/Sprint-1'). By default, parent labels will be automatically created if they do not exist.

Read from the server on 2026-08-17, including each tool's own safety annotations.

Limits

  • Eight tools are annotated destructive, on a personal mailbox. Blanket auto-approval on this connector lets an agent move mail into Trash or Spam and strip labels — including INBOX, which archives — with no confirmation step. Approve those eight case by case, or load the connector with tool filtering where your client supports it. This is the single configuration decision that matters here.
  • Label removal has no undo tool. Trash and Spam moves are reversible through untrash_message, untrash_thread, unmark_message_spam and unmark_thread_spam. Removing a label is not: nothing on this server reports which labels a message previously carried, so the information needed to reverse the change is gone the moment it is made.
  • Thread-level actions apply to mail that has not arrived yet. Six tools state that the operation affects every message currently in the thread and any future message added to it. A thread trashed today swallows tomorrow's reply.
  • This is a Developer Preview. Every Google page cited here carries the Google Workspace Developer Preview Program banner. Preview features can change or be withdrawn, and the tool surface visibly has been changing — Google's own reference page still documents ten tools against 21 live.
  • Google's own documentation undercounts the tools by more than half. The setup page lists 9 tools, the MCP reference toolset lists 10, and the reference sidebar carries per-tool pages for 11. The live server returns 21. The twelve undocumented ones are exactly the consequential set — every trash, untrash, spam, unspam and sensitive-label tool — and each returns HTTP 404 at its expected reference URL. There is no published Google description, scope mapping or annotation justification for any of the eight destructive tools.
  • Two Google sources disagree about the list_drafts default. The live tool description says the view defaults to full content and that you should set DRAFT_VIEW_METADATA_ONLY to exclude subject and body; the view parameter's own schema, in the same response, says it defaults to metadata only. Both are Google's, in the same object. We did not call the tool, so we cannot say which holds — assume drafts may be returned in full and set the parameter explicitly.
  • create_draft attachments: schema and docs disagree. The input schema defines an attachments array with a 25MB combined limit; Google's reference page for the same tool states that creating drafts with attachments is not supported yet. Untested by us either way.
  • Prompt injection is Google's own stated risk, not ours. Google's setup page warns that because MCP hosts have access to powerful tools through this server, they can read, modify and delete data in your Google Account, and that you "must screen prompts and responses for malicious content or prompt injection attacks". It recommends its Model Armor service or a documented equivalent, and advises against having an assistant process email from unverified senders. On a connector whose entire input is untrusted text written by strangers, that warning is load-bearing.
  • gmail.readonly is a restricted scope covering the whole mailbox. There is no per-folder, per-label or per-sender narrowing anywhere in the tool surface or the consent flow. You grant read of everything or you do not connect.
  • No .well-known/oauth-protected-resource descriptor. The endpoint 404s on it, so the OAuth arrangement is documented by Google rather than declared by the server over the wire.
  • We never read a mailbox. Our verification was an anonymous tools/list, which returns tool definitions and no mail. We additionally called one read-only tool with no credential to confirm the gate; it returned HTTP 401 with a missing-credential message and no data. No authenticated call was made, no message was read, and no draft, label or trash operation was ever performed.

Frequently asked questions

Can the Gmail MCP server send email on my behalf?

No. A live tools/list on 2026-08-17 returned 21 tools and none of them sends, replies or forwards. create_draft writes a draft into your Drafts folder and returns its ID; sending stays a manual step in Gmail. Google's own setup page describes the same boundary, telling you to review and send the draft yourself.

Which OAuth scopes does the Gmail MCP server request?

Two. Google's setup pages tell you to add exactly gmail.readonly and gmail.compose to the consent screen. Neither one permits immediate permanent deletion — that requires the far broader mail.google.com scope, which Google's setup pages never ask for. Consenting therefore grants full mailbox read plus draft and label management.

Which Gmail MCP tools are annotated destructive?

Eight of the twenty-one: trash_message, trash_thread, mark_message_spam, mark_thread_spam, apply_sensitive_message_label, apply_sensitive_thread_label, unlabel_message and unlabel_thread. Each removes mail from where you expect to find it — trash, spam, or a label you filed it under. Every one is recoverable inside Gmail, and none is recoverable through this connector.

Why is removing a label counted as destructive?

Because a Gmail label is where a message lives, not a tag beside it. unlabel_thread accepts system label IDs including INBOX, so removing that label archives the thread out of your inbox. It also accepts TRASH and SPAM. The tool cannot un-remove anything, which is what the destructive annotation asserts.

Does the Gmail MCP server permanently delete email?

No tool on the live server deletes permanently. The eight destructive tools move mail to Trash or Spam, or strip a label. Google documents permanent deletion as requiring the restricted mail.google.com scope, which the Gmail MCP setup instructions never request. Trashed mail follows Gmail's normal retention and can be restored with untrash_message or untrash_thread.

Why does Anthropic's directory list 29 Gmail tools when 21 are live?

The listing is stale in one direction. All 21 live tool names appear in the directory's 29, so nothing was renamed or invented. The eight extras — including send_message, delete_label and create_filter — are not on the server. A reader trusting the listing would expect a connector that sends mail and deletes labels, and it does neither.

Do I need a paid plan to add the Gmail MCP server to Claude?

Yes, and a Google Cloud project too. Google states you need a Claude Enterprise, Pro, Max or Team plan, then must add it as a custom connector with your own OAuth client ID and secret. You also enable the Gmail API and Gmail MCP API in a Cloud project. It is a Developer Preview feature, not a one-click install.

Sources

Use in Agentman

Connect once and your agents call these tools on their own — on a schedule, in a workflow, with nobody at the keyboard.

Open in Agentman Studio

Server Info

Category
Communication
Developer
Gmail
Tools
21
Domain
gmailmcp.googleapis.com

Using Claude Desktop or another MCP client? Setup docs — the connection URL above works anywhere.