[FEATURE] Gmail MCP Connector: Add gmail_modify_labels tool for archiving, labeling, and inbox management

Open 💬 12 comments Opened Mar 20, 2026 by timkley

Preflight Checklist

  • [x] I have searched existing requests and this feature hasn't been requested yet
  • [x] This is a single feature request (not multiple features)

Problem Statement

The hosted Gmail MCP connector at gmail.mcp.claude.com currently only supports read operations and draft creation. There is no way to modify message labels, which means common inbox management actions are impossible:

  • Archiving emails (removing the INBOX label)
  • Marking as read/unread (removing/adding the UNREAD label)
  • Starring messages (adding/removing the STARRED label)
  • Categorizing messages (adding custom labels)
  • Moving to trash (adding TRASH label)

My use case: I'm running a scheduled Cowork task for automated email triage — it searches for unread emails, classifies them (newsletter/spam vs. relevant), and should archive the noise. Currently, the triage can identify what should be archived but cannot act on it because there's no way to remove the INBOX label.

This is a fundamental gap — the connector can read and create drafts, but cannot manage the inbox itself.

Current available tools (as of March 2026)

| Tool | Type |
|------|------|
| gmail_search_messages | Read |
| gmail_read_message | Read |
| gmail_read_thread | Read |
| gmail_list_labels | Read |
| gmail_list_drafts | Read |
| gmail_get_profile | Read |
| gmail_create_draft | Write |
| gmail_modify_labels | Missing |
| gmail_send_draft | Missing (see #32266) |

Proposed Solution

Add a single gmail_modify_labels tool to the hosted Gmail MCP connector. The Gmail API already supports this via users.messages.modify, which accepts:

{
  "messageId": "string (required)",
  "addLabelIds": ["string"],
  "removeLabelIds": ["string"]
}

This one tool would unlock all of the following workflows:

  • Archive: removeLabelIds: ["INBOX"]
  • Mark as read: removeLabelIds: ["UNREAD"]
  • Mark as unread: addLabelIds: ["UNREAD"]
  • Star: addLabelIds: ["STARRED"]
  • Categorize: addLabelIds: ["Label_123"]
  • Trash: addLabelIds: ["TRASH"]

It's a lightweight, versatile addition — one tool that enables an entire category of inbox management workflows in Cowork and Claude Code.

Alternative Solutions

Currently, the only workaround is to use a third-party Gmail MCP server that provide full Gmail API access including label modification.

However, for Cowork users this means abandoning the official hosted connector in favor of self-hosted alternatives, which defeats the purpose of the seamless built-in integration.

Related issues

  • #28575 — Add file attachment support to gmail_create_draft and add gmail_send_draft tool- #32266 — gmail_send_draft tool missing from hosted server

Priority

High - Significant impact on productivity

Feature Category

MCP server integration

Use Case Example

I have a scheduled Cowork task that runs every hour to triage my inbox:

  1. gmail_search_messages with is:unread in:inbox newer_than:1h to find new emails
  2. gmail_read_message to read each email and classify it (newsletter/spam vs. relevant)
  3. Missing step: gmail_modify_labels with removeLabelIds: ["INBOX"] to archive newsletters and spam
  4. Missing step: gmail_modify_labels with removeLabelIds: ["UNREAD"] to mark triaged emails as read
  5. Generate a summary of remaining relevant emails grouped by project

Currently, steps 3 and 4 are impossible. The triage identifies what should be archived but I have to manually go into Gmail to do it, which defeats the purpose of the automation.

Additional Context

_No response_

View original on GitHub ↗

This issue has 12 comments on GitHub. Read the full discussion on GitHub ↗