---
title: "Gmail MCP server"
url: "https://martechdb.com/vendors/gmail"
markdown_url: "https://martechdb.com/vendors/gmail.md"
api_url: "https://martechdb.com/api/v1/vendors/gmail.com"
updated: "2026-10-01"
---

# Gmail MCP server

Yes. Gmail publishes an official MCP server at https://gmailmcp.googleapis.com/mcp/v1. It's hosted and needs an OAuth app that you set up in Gmail first. It offers 23 tools. We last checked it on 1 Oct 2026. MartechDB lists only servers the vendor publishes itself, never community servers.

- Website: [gmail.com](https://gmail.com)
- Categories: [Projects & collaboration](https://martechdb.com/categories/projects-collaboration.md), [Email & messaging](https://martechdb.com/categories/email-messaging.md)

## Gmail MCP server

Lets your AI assistant read and draft Gmail messages. In developer preview, using your own Google Cloud project.

- Address: https://gmailmcp.googleapis.com/mcp/v1
- Runs: Hosted
- Sign-in: Sign-in needs vendor setup (`oauth`)
- Official MCP Registry: not listed
- Documentation: https://developers.google.com/workspace/gmail/api/guides/configure-mcp-server
- How we know it's official: The vendor's own documentation
- First seen: 2026-10-01
- Last checked: 2026-10-01

### Tools (23)

As the server lists them on 2026-10-01. Names and descriptions come from the vendor's server.

- `create_draft`: Creates a new draft email in the authenticated user's Gmail account. This tool takes recipient addresses (\`to\`, \`cc\`, \`bcc\`), a \`subject\`, and body content as inputs. Plain text body content can be provided in \`body\` (do NOT format \`body\` with Markdown), and rich-text HTML content can be provided in \`htmlBody\` (use valid HTML tags for formatting; if both are provided, \`body\` serves as the plain-text alternative). 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 the \`id\`, \`threadId\`, and \`viewUrl\` fields populated.
- `list_drafts` (read-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, subjects (unless \`view\` is set to \`DRAFT\_VIEW\_METADATA\_ONLY\`), and \`viewUrl\`. \`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. Note: An empty JSON object \`{}\` represents zero matching items, not an error.
- `get_draft` (read-only): Retrieves a specific draft email from the authenticated user's Gmail account by ID, including its \`viewUrl\` for viewing and editing in the Gmail Web UI. The optional \`messageFormat\` parameter controls the format of the draft returned. Use \`MINIMAL\` to return snippet and key headers, \`METADATA\_ONLY\` to exclude snippet, subject, and body, \`FULL\_CONTENT\` for the complete draft, or \`RAW\` for the raw MIME message content.
- `get_thread` (read-only): Retrieves a specific email thread from the authenticated user's Gmail account, including its \`viewUrl\` and a list of its messages (each with their own \`viewUrl\`). Note: This tool does not support retrieving drafts. Any draft messages within a thread are omitted. To view drafts, use the \`list\_drafts\` tool instead. 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, viewUrl, labels, timestamp, and size estimate).
- `get_message` (read-only): Retrieves a specific email message from the authenticated user's Gmail account by its unique message ID, including its \`viewUrl\`. 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. Note: This tool does not support retrieving draft messages. To view drafts, use the 'list\_drafts' 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 attachm…
- `search_threads` (read-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, \`viewUrl\`, and related messages (each with their own \`viewUrl\`). 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,…
- `label_thread`: 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 move a thread to Trash or mark it as Spam, please use the \`trash\_thread\` or \`mark\_thread\_spam\` tool instead.
- `unlabel_thread` (can delete or overwrite): 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_label` (can delete or overwrite): Prefer \`trash\_thread\` or \`mark\_thread\_spam\` instead. Adds a sensitive label (Trash or Spam) to a single thread in the authenticated user's Gmail account. This operation affects all messages currently in the thread. Use \`apply\_sensitive\_thread\_label\` when applying Trash or Spam to exactly 1 thread. To apply sensitive labels to multiple threads, use \`batch\_apply\_sensitive\_thread\_labels\` instead. To find the thread ID, use the \`search\_threads\` tool first.
- `trash_thread` (can delete or overwrite): Moves an entire thread to the Trash in the authenticated user's Gmail account. This operation affects all messages currently in the thread. Use \`trash\_thread\` when trashing a thread, even if it currently contains only 1 message. Trashing at the thread level ensures all current messages in the thread are moved to Trash. If unsure of the thread ID, use the \`search\_threads\` tool first.
- `untrash_thread`: 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_spam` (can delete or overwrite): Marks an entire thread as Spam in the authenticated user's Gmail account. This operation affects all messages currently in the thread. Use \`mark\_thread\_spam\` when marking a thread as spam, even if it currently contains only 1 message. Marking spam at the thread level ensures all current messages in the thread are marked as Spam. If unsure of the thread ID, use the \`search\_threads\` tool first.
- `unmark_thread_spam`: 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_labels` (read-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. Note: An empty JSON object \`{}\` represents zero matching items, not an error.
- `label_message`: 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 move a specific message to Trash or mark it as Spam, please use the \`trash\_message\` or \`mark\_message\_spam\` tool instead.
- `update_message_labels`: Atomically adds and/or removes labels from a specific message in the authenticated user's Gmail account. Requires at least one of \`addLabelIds\` or \`removeLabelIds\` to be provided. Moving an email between labels can be accomplished in a single call by specifying the target label in \`addLabelIds\` and the current label in \`removeLabelIds\`.
- `unlabel_message` (can delete or overwrite): 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_label` (can delete or overwrite): Prefer \`trash\_message\` or \`mark\_message\_spam\` instead. Adds a sensitive label (Trash or Spam) to a single message in the authenticated user's Gmail account. Use \`apply\_sensitive\_message\_label\` when applying Trash or Spam to exactly 1 message. To apply sensitive labels to multiple messages, use \`batch\_apply\_sensitive\_message\_labels\` instead. If the message belongs to a thread that should be labeled as a whole, prefer \`trash\_thread\` or \`mark\_thread\_spam\`. 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_message` (can delete or overwrite): Moves a specific message to the Trash in the authenticated user's Gmail account. Use \`trash\_message\` when targeting a specific message within a thread. To trash an entire thread or a single-message thread, prefer \`trash\_thread\`. 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_message`: 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_spam` (can delete or overwrite): 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_spam`: 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_label`: 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.

### Connect it

Claude Code:

```sh
claude mcp add --transport http gmail https://gmailmcp.googleapis.com/mcp/v1
```

- Add to Cursor: <cursor://anysphere.cursor-deeplink/mcp/install?name=gmail&config=eyJ1cmwiOiJodHRwczovL2dtYWlsbWNwLmdvb2dsZWFwaXMuY29tL21jcC92MSJ9>
- Add to VS Code: <vscode:mcp/install?%7B%22name%22%3A%22gmail%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fgmailmcp.googleapis.com%2Fmcp%2Fv1%22%7D>
- Claude.ai and Claude Desktop: Customize, Connectors, "+", Add custom connector, then paste https://gmailmcp.googleapis.com/mcp/v1
- ChatGPT: Settings, Apps, Advanced settings, turn on Developer mode, Create, then paste https://gmailmcp.googleapis.com/mcp/v1 (this usually works only with servers that use self-serve sign-in or none)

JSON for Cursor, Windsurf and other clients that connect to hosted servers:

```json
{
    "mcpServers": {
        "gmail": {
            "type": "http",
            "url": "https://gmailmcp.googleapis.com/mcp/v1"
        }
    }
}
```

> Gmail doesn't let AI tools sign in on their own. Create an app in your Gmail account first, then use its client ID and secret.

## Questions

### Does Gmail have an official MCP server?

Yes. Gmail publishes its MCP server itself. Gmail's own documentation describes it. MartechDB only lists servers a vendor publishes, never community copies.

### What is the Gmail MCP server URL?

The address is https://gmailmcp.googleapis.com/mcp/v1.

### Does the Gmail MCP server need an API key?

No, but it needs set-up first: it signs in with OAuth through an app you (or an admin) create in your Gmail account.

### How do I connect Gmail MCP to Claude, ChatGPT or Cursor?

In Claude, add https://gmailmcp.googleapis.com/mcp/v1 as a custom connector (Customize, Connectors, Add custom connector). In Cursor, use the Add to Cursor link on MartechDB's page, or paste the JSON settings into your mcp.json. In Claude Code, run: claude mcp add --transport http gmail https://gmailmcp.googleapis.com/mcp/v1

### What can the Gmail MCP server do?

It offers 23 tools, including create\_draft, list\_drafts, get\_draft, get\_thread and get\_message (as listed on 1 Oct 2026). 6 are marked read-only and 8 can delete or overwrite data.

### Is the Gmail MCP server in the official MCP Registry?

No. Gmail hasn't published it to the official MCP Registry.

### Is the Gmail MCP server working?

Yes. It answered our most recent check. We last checked it on 1 Oct 2026.

## Change history

- 2026-10-01: Gmail MCP server added
- 2026-10-01: Added to MartechDB

## Alternatives with an official MCP server

In Projects & collaboration:

- [Microsoft](https://martechdb.com/vendors/microsoft.md) (microsoft.com)
- [Adobe](https://martechdb.com/vendors/adobe.md) (adobe.com)
- [Dropbox](https://martechdb.com/vendors/dropbox.md) (dropbox.com)
- [Webex](https://martechdb.com/vendors/webex.md) (webex.com)

## Get this data

- API: `curl https://martechdb.com/api/v1/vendors/gmail.com`
- MCP: `claude mcp add --transport http martechdb https://martechdb.com/mcp`, then ask about Gmail.
- Web page: https://martechdb.com/vendors/gmail
