[FEATURE] Gmail MCP: Add draft reading and modification tools for iterative email composition
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
[Feature Request] Gmail MCP: Add draft reading and modification tools for iterative email composition
Summary
The native Claude Gmail connector currently provides gmail_create_draft but lacks the ability to read existing drafts or update them. This creates a critical gap in Claude Cowork's email composition workflow, where iterative brainstorming with Claude may refine and improve draft emails, but Claude cannot see or modify what's already been written, including through its own session.
Use Case
I'm using Claude Cowork to compose professional email replies to complex issues:
- I create an initial draft in Gmail or via
gmail_create_draft - I have Claude analyze the draft and brainstorm improvements (tone, clarity, completeness, technical accuracy)
- Claude identifies issues and suggests revisions (stronger language, added context, restructured paragraphs, etc.)
- I want Claude to apply those revisions directly to the draft instead of me copy-pasting suggested text back into Gmail manually
Current workflow (broken):
- Claude creates a draft via API
- I open it in Gmail to review
- Claude cannot read it back
- I manually edit in Gmail UI
- Claude cannot see my changes or the current state
- Next iteration requires manual copy-paste
Desired workflow (with feature):
- Claude creates or retrieves a draft
- Claude reads the current draft content
- I ask Claude to revise it
- Claude updates the draft with improvements
- The improved draft is ready for me to send in Gmail
Current Limitations
The native Gmail MCP connector provides:
- ✅
gmail_create_draft– Create new drafts - ❌ No
gmail_read_draft– Cannot read existing draft content - ❌ No
gmail_update_draft– Cannot modify draft content - ✅
gmail_list_drafts– List drafts (metadata only, no content)
This is fundamentally different from the message tools:
- ✅
gmail_read_message– Read sent/received email content - ✅
gmail_read_thread– Read conversation threads
But for drafts:
- ❌ No equivalent read capability
- ❌ No equivalent update capability
Proposed Solution
Requested Features
1. Read Draft Content
- Function:
gmail_read_draft - Parameters:
draftId(string, required) – Draft ID (fromgmail_list_drafts)- Returns:
- Full draft details: to, cc, bcc, subject, body, contentType, attachments, threadId (if reply)
- Use case: Retrieve the current state of a draft for analysis and revision
2. Update Draft Content
- Function:
gmail_update_draft - Parameters:
draftId(string, required) – Draft ID to updatebody(string, optional) – New email bodysubject(string, optional) – New subject lineto(string, optional) – New recipient(s)cc(string, optional) – New CC recipient(s)bcc(string, optional) – New BCC recipient(s)contentType(enum, optional) –text/plainortext/html- Returns:
- Updated draft details with confirmation
- Use case: Apply Claude's revisions to the draft after iteration
Technical Context
- The Gmail API supports these operations via
gmail.users.drafts.get()andgmail.users.drafts.update() - Draft retrieval returns the same message structure as
gmail.users.messages.get()with the draft wrapper - Draft updates are performed by modifying the message payload and re-saving
- This is standard Gmail API functionality already in use by mail clients (Thunderbird, Outlook, etc.)
Impact
Without this feature: Email composition workflows are fragmented; Claude can create but not iteratively improve drafts, forcing manual editing in Gmail UI between Claude refinement passes.
With this feature: Claude Cowork becomes a powerful collaborative writing tool for email composition:
- Iterative refinement: Claude reads draft → suggests improvements → applies them → ready to send
- Tone/style consistency: Claude analyzes draft against your writing patterns and refines
- Complex reply composition: Brainstorm and co-author detailed technical or delicate responses
- Draft recovery: If a complex draft is lost, Claude can reconstruct it from earlier versions or context
Alternative Solutions
Workarounds
Currently, the only workaround is:
- Claude creates a draft via
gmail_create_draft - I manually open the draft in Gmail
- I read Claude's suggestions aloud or copy them manually
- I edit the draft in Gmail UI
- I paste the updated text back to Claude for another iteration
This defeats the purpose of agentic automation and makes the workflow extremely tedious for complex email composition.
Priority
High - Significant impact on productivity
Feature Category
MCP server integration
Use Case Example
Example Workflow
User: "Draft a response to this complex customer issue about billing and compliance."
Claude: Creates draft with initial response via gmail_create_draft()
User: "Read the draft back to me and let's refine the technical explanation."
Claude: Reads draft via gmail_read_draft() and analyzes it
Claude: "The technical section is too vague. I suggest restructuring it into three parts:
1. What the issue is (with specific error codes)
2. Why it happened (root cause)
3. Our resolution steps"
User: "Yes, apply that restructuring."
Claude: Updates the draft via gmail_update_draft() with the improved structure
User: "Ready to send"
[User opens Gmail and sends the refined draft]
Additional Context
Additional Notes
- Draft updates should preserve the threadId if the draft is a reply
- Attachment handling: Read operations should list attachments (similar to
gmail_read_message); update should support attachment metadata (but file upload complexity may warrant a separate feature) - Error handling: Clear errors if updating a draft that was already sent or deleted
- Concurrency: If the same draft is modified in Gmail UI and via API simultaneously, follow Gmail's last-write-wins behavior
Related Features
This pairs naturally with the label-writing feature request (#36547) to enable full email triage and composition workflows:
- Labels: Mark emails for organizational triage
- Draft reading/modification: Iteratively compose and refine draft responses
- Together: Claude can analyze incoming email, draft a thoughtful response, refine it iteratively, then label the original for follow-up
---
This is essential infrastructure for agentic email workflows where Claude assists in the full lifecycle of email composition, not just creation.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗