100+ integrations are ready to connect to your AI.Connect your first MCP

Gmail MCP server for your AI

Search threads, draft and send replies, relabel and archive messages and threads, and read filters, labels and send-as aliases — the agent works the one mailbox you authorized with.

PopMCPGmail

Which unread threads from this week still have no reply from me

Supported Gmail tools

Every message, thread, draft, label, filter and settings operation the connection exposes, plus the mailbox events an agent can watch.

gmail_archive_message

Archive a message: removes it from the inbox but keeps it in All Mail, searchable and undeleted.

gmail_batch_get_messages

Read MANY messages in ONE request.

gmail_forward

Forward an email to someone else.

gmail_get_message

Gets the specified message.

gmail_mark_as_read

Mark one message as read (removes the UNREAD label).

gmail_mark_as_unread

Mark one message as unread (adds the UNREAD label).

gmail_mark_message_spam

Report a message as spam: adds SPAM and removes INBOX.

gmail_modify_message_labels

Modifies the labels and the Classification Label values on the specified message.

gmail_move_to_inbox

Un-archive a message by putting the INBOX label back on it.

gmail_reply

Reply to an email, keeping it in the same conversation.

gmail_search_messages

Lists the messages in the user's mailbox.

gmail_send_message

Sends the specified message to the recipients in the `To`, `Cc`, and `Bcc` headers.

gmail_star_message

Star a message (adds the STARRED label).

gmail_trash_message

Moves the specified message to the trash.

gmail_unmark_message_spam

Rescue a message from the spam folder: removes SPAM and puts INBOX back.

gmail_unstar_message

Remove the star from a message (removes the STARRED label).

gmail_untrash_message

Removes the specified message from the trash.

gmail_archive_thread

Archive a whole conversation: removes INBOX from every message in it, keeping them in All Mail.

gmail_get_thread

Gets the specified thread.

gmail_list_recent_threads

What is in the inbox right now, with no arguments at all.

gmail_mark_thread_as_read

Mark an entire conversation as read (removes UNREAD from every message in it).

gmail_modify_thread_labels

Modifies the labels applied to the thread.

gmail_search_threads

Lists the threads in the user's mailbox.

gmail_trash_thread

Moves the specified thread to the trash.

gmail_get_vacation_responder

Gets vacation responder settings.

gmail_update_vacation_responder

Updates vacation responder settings.

gmail_list_send_as_aliases

Lists the send-as aliases for the specified account.

gmail_create_draft

Creates a draft with the `DRAFT` label.

gmail_create_label

Creates a label.

gmail_delete_draft

Immediately and permanently deletes the specified draft.

gmail_delete_label

Immediately and permanently deletes the specified label and removes it from any messages and threads that it's applied to.

gmail_get_draft

Gets the specified draft.

gmail_list_drafts

Lists the drafts in the user's mailbox.

gmail_list_labels

Lists all labels in the user's mailbox.

gmail_send_draft

Sends the specified, existing draft to the recipients in the `To`, `Cc`, and `Bcc` headers.

gmail_update_draft

Replaces a draft's content.

gmail_update_label

Updates the specified label.

gmail_create_filter

Creates a filter.

gmail_list_filters

Lists the message filters of a Gmail user.

gmail_get_profile

Gets the current user's Gmail profile.

gmail_get_attachment

Gets the specified message attachment.

gmail_list_history

Lists the history of all changes to the given mailbox.

gmail_batch_delete_messages_permanently

Deletes many messages by message ID.

gmail_batch_modify_message_labels

Modifies the labels and the Classification Label values on the specified messages.

gmail_delete_message_permanently

Immediately and permanently deletes the specified message.

gmail_import_message

Imports a message into only this user's mailbox, with standard email delivery scanning and classification similar to receiving via SMTP.

gmail_insert_message

Directly inserts a message into only this user's mailbox similar to `IMAP APPEND`, bypassing most scanning and classification.

gmail_delete_thread_permanently

Immediately and permanently deletes the specified thread.

gmail_mark_thread_as_unread

Mark an entire conversation as unread (adds UNREAD to it).

gmail_mark_thread_spam

Report a whole conversation as spam: adds SPAM and removes INBOX.

gmail_unmark_thread_spam

Rescue a whole conversation from spam: removes SPAM and puts INBOX back.

gmail_untrash_thread

Removes the specified thread from the trash.

gmail_settings_get_auto_forwarding

Gets the auto-forwarding setting for the specified account.

gmail_settings_get_imap

Gets IMAP settings.

gmail_settings_get_language

Gets language settings.

gmail_settings_get_pop

Gets POP settings.

gmail_settings_update_auto_forwarding

Updates the auto-forwarding setting for the specified account.

gmail_settings_update_imap

Updates IMAP settings.

gmail_settings_update_language

Updates language settings.

gmail_settings_update_pop

Updates POP settings.

gmail_get_send_as_alias

Gets the specified send-as alias.

gmail_settings_send_as_create

Creates a custom "from" send-as alias.

gmail_settings_send_as_delete

Deletes the specified send-as alias.

gmail_settings_send_as_patch

Patch the specified send-as alias.

gmail_settings_send_as_update

Updates a send-as alias.

gmail_settings_send_as_verify

Sends a verification email to the specified send-as alias address.

gmail_get_label

Gets the specified label.

gmail_patch_label

Patch the specified label.

gmail_settings_cse_keypairs_create

Creates and uploads a client-side encryption S/MIME public key certificate chain and private key metadata for the authenticated user.

gmail_settings_cse_keypairs_disable

Turns off a client-side encryption key pair.

gmail_settings_cse_keypairs_enable

Turns on a client-side encryption key pair that was turned off.

gmail_settings_cse_keypairs_get

Retrieves an existing client-side encryption key pair.

gmail_settings_cse_keypairs_list

Lists client-side encryption key pairs for an authenticated user.

gmail_settings_cse_keypairs_obliterate

Deletes a client-side encryption key pair permanently and immediately.

gmail_settings_cse_identities_create

Creates and configures a client-side encryption identity that's authorized to send mail from the user account.

gmail_settings_cse_identities_delete

Deletes a client-side encryption identity.

gmail_settings_cse_identities_get

Retrieves a client-side encryption identity configuration.

gmail_settings_cse_identities_list

Lists the client-side encrypted identities for an authenticated user.

gmail_settings_cse_identities_patch

Associates a different key pair with an existing client-side encryption identity.

gmail_settings_send_as_smime_info_delete

Deletes the specified S/MIME config for the specified send-as alias.

gmail_settings_send_as_smime_info_get

Gets the specified S/MIME config for the specified send-as alias.

gmail_settings_send_as_smime_info_insert

Insert (upload) the given S/MIME config for the specified send-as alias.

gmail_settings_send_as_smime_info_list

Lists S/MIME configs for the specified send-as alias.

gmail_settings_send_as_smime_info_set_default

Sets the default S/MIME config for the specified send-as alias.

gmail_delete_filter

Immediately and permanently deletes the specified filter.

gmail_get_filter

Gets a filter.

gmail_list_delegates

Lists the delegates for the specified account.

gmail_list_forwarding_addresses

Lists the forwarding addresses for the specified account.

gmail_settings_delegates_create

Adds a delegate with its verification status set directly to `accepted`, without sending any verification email.

gmail_settings_delegates_delete

Removes the specified delegate (which can be of any verification status), and revokes any verification that may have been required for using it.

gmail_settings_delegates_get

Gets the specified delegate.

gmail_settings_forwarding_addresses_create

Creates a forwarding address.

gmail_settings_forwarding_addresses_delete

Deletes the specified forwarding address and revokes any verification that may have been required.

gmail_settings_forwarding_addresses_get

Gets the specified forwarding address.

gmail_stop_mailbox_watch

Turn off push notification delivery for the given user mailbox.

gmail_watch_mailbox

Set up or update a push notification watch on the given user mailbox.

Connect Gmail to your AI

Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Gmail side.

Enable the Gmail API in your Google Cloud project, paste the OAuth Client ID and OAuth Client Secret, then authorize once — ticking every consent box. The connection reaches only the account you sign in with.

OAuth Client ID1234567890-abc.apps.googleusercontent.com
OAuth Client Secret••••••••••••3f7a
Authorize PopMCP on GmailAuthorize

Then just ask for the work

  • Which unread threads from this week still have no reply from me

    • search_threads
    • get_thread
    • batch_get_messages
  • Archive every Jira notification older than a week and mark it read

    • search_messages
    • archive_message
    • mark_as_read
  • Draft a reply to Priya's contract email and leave it in drafts

    • search_messages
    • get_message
    • create_draft
  • Do my filters and labels still match the newsletters hitting my inbox

    • list_filters
    • list_labels
    • search_messages

Use Gmail from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Gmail MCP server questions

What teams ask before putting Gmail behind an AI client.

Do I need my own Google Cloud OAuth client to connect Gmail?

Yes. Enable the Gmail API in your own Google Cloud project, then paste the OAuth Client ID and OAuth Client Secret into the connect form and authorize once. There is no API key or app password to generate afterwards — the authorization itself is what grants access.

Why did my connection stop working after about a week?

Look at the Audience setting on your Google Cloud project. If it is set to External and the app is still in Testing, Google expires the authorization after 7 days regardless of how the connection is used. Publish the app first, then authorize again.

Which mailbox does the connection actually reach?

Exactly the account you sign in with during the authorize step. There is no mailbox ID to look up or switch between afterwards, so the way to scope access is to authorize with the account you actually want the agent to have — a shared ops inbox rather than a founder's personal one, for example.

What happens if I leave a permission unticked on the Google consent screen?

Google shows one checkbox per permission, and anything you leave off does not fail at connect time — it fails later, mid-task, when a tool needs that scope. Tick every box. If you already connected with some missing, run the authorization again and accept all of them.

Can the agent permanently delete my email?

Ordinary deletion is reversible: trash_message and trash_thread move things to the trash, and untrash_message puts a message back. Two calls are not reversible — delete_draft and delete_label remove a draft or a label immediately and permanently, and deleting a label also strips it from every message and thread it was applied to. Those are the ones worth holding behind write approval.

Can the agent change my labels and filters, or only read them?

Both. list_labels, create_label, update_label and delete_label cover a label from creation to deletion — and delete_label is permanent, stripping the label off every message and thread it was applied to. For rules, create_filter adds a filter and list_filters reads the ones already set, which is enough for an agent to check whether your filters still match what is actually landing in the inbox.

Do I have to run or host the Gmail MCP server myself?

No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.

Why do only 42 of the 96 tools load by default?

Loading 96 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 42-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.

What is the difference between a tool and a trigger?

A tool is something your AI calls — there are 96 here. A trigger is something PopMCP watches for you: 17 Gmail events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Gmail.

Connect Gmail to your AI in minutes

Launch a hosted MCP endpoint for Gmail, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP